From dfb0ae2f1d0b14b804839446f6add6d653791be6 Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 2 Jul 2026 11:23:30 -0700 Subject: [PATCH 01/12] =?UTF-8?q?academy:=20Chat=20section=20(intro,=20bui?= =?UTF-8?q?lding)=20+=20Agents=20tool-calling=20and=20skills=20pages,=20se?= =?UTF-8?q?quenced=20in=20meta.json=20=E2=80=94=20pages=20for=20the=20four?= =?UTF-8?q?=20approved=20videos,=20blob=20src=20pattern,=20chapters=20offs?= =?UTF-8?q?et=20by=20each=20recorded=20intro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/docs/en/academy/agents/skills.mdx | 70 +++++++++++++++++ .../docs/en/academy/agents/tool-calling.mdx | 68 +++++++++++++++++ .../content/docs/en/academy/chat/building.mdx | 75 +++++++++++++++++++ .../content/docs/en/academy/chat/intro.mdx | 73 ++++++++++++++++++ apps/docs/content/docs/en/academy/meta.json | 7 +- 5 files changed, 292 insertions(+), 1 deletion(-) create mode 100644 apps/docs/content/docs/en/academy/agents/skills.mdx create mode 100644 apps/docs/content/docs/en/academy/agents/tool-calling.mdx create mode 100644 apps/docs/content/docs/en/academy/chat/building.mdx create mode 100644 apps/docs/content/docs/en/academy/chat/intro.mdx diff --git a/apps/docs/content/docs/en/academy/agents/skills.mdx b/apps/docs/content/docs/en/academy/agents/skills.mdx new file mode 100644 index 00000000000..4ba012521a5 --- /dev/null +++ b/apps/docs/content/docs/en/academy/agents/skills.mdx @@ -0,0 +1,70 @@ +--- +title: Skills +description: A skill is a written method the agent reads when it decides it's relevant — turning a vague guess into a sourced, repeatable procedure without crowding the prompt. +--- + +import { VideoPlaceholder } from '@/components/ui/video-placeholder' +import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' +import { VideoChapters } from '@/components/ui/video-chapters' + + + +
+
+ +An agent with tools but no guidance does the minimum: one quick search, then a hedged guess. A **skill** fixes that — a written method the agent can read, like a manual you look up when the situation calls for it. Attach one, and the same run follows the procedure: every claim sourced, every gap flagged. + + + +
+ + + +
+ +## The before and after + +The video runs the same lead-qualification task twice. Without a skill, the agent searches once and guesses — "probably Series B, maybe a hundred people." With Exa's `answer-with-citations` skill attached, it loads the method mid-run, turns each claim into a specific factual question, pulls a sourced answer for every one, and returns a verdict where each figure carries its citation. + +## Why not just a longer prompt? + +Skills keep procedure out of the prompt. Only the name and one-line description stay in view; the full method loads only when the agent judges it relevant — so you can attach many skills without bloating context, and the agent picks the right manual for the moment. + +## Ready to use + +Adding a skill is the same motion as adding a tool: pick it in the block's Skills section and it shows on the block. Integrations ship curated skills out of the box, and skills you write are shared across your workspace. + +## Related documentation + +- [Tool Calling](/academy/agents/tool-calling) +- [Knowledge Bases](/academy/knowledge-bases/intro) diff --git a/apps/docs/content/docs/en/academy/agents/tool-calling.mdx b/apps/docs/content/docs/en/academy/agents/tool-calling.mdx new file mode 100644 index 00000000000..b8101219682 --- /dev/null +++ b/apps/docs/content/docs/en/academy/agents/tool-calling.mdx @@ -0,0 +1,68 @@ +--- +title: Tool Calling +description: Give an agent tools and it works in a loop — deciding, calling, reading results, and converging on an answer you can audit call-by-call in the logs. +--- + +import { VideoPlaceholder } from '@/components/ui/video-placeholder' +import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' +import { VideoChapters } from '@/components/ui/video-chapters' + + + +
+
+ +A plain Agent block is text in, one model pass, text out — it can't look anything up. Give it tools, and it starts working in a **loop**: deciding which tool it needs, calling it (several at once when it can), reading what comes back, and calling again with better arguments until it has enough to answer. + + + +
+ + + +
+ +## From one pass to a loop + +Without tools, an agent has only its prompt and its training — asked to qualify a lead, it can only say it has no way to look anything up. With tools attached, the same block plans: research the company, check the funding, read the careers page. It calls tools in parallel when the calls don't depend on each other, revises its plan as results land, and answers only when its context holds enough. + +## Tools are blocks + +Anything you'd use as a workflow step can be handed to an agent as a tool. In the Tools section you pin the parameters that should never change and leave the rest empty — the model fills those per task. And when no block does what you need, you write a custom tool: a schema and a description, where the description is how the model knows when to reach for it. Whole external toolsets connect the same way over MCP. + +## The audit trail + +Every agent run records its tool calls in order. Open the log and walk them: the name of each tool, the exact arguments the model chose, the result that returned into context. Debugging an agent is reading that sequence — not guessing at what the model was thinking. + +## Related documentation + +- [Agents overview](/academy/agents/intro) +- [Logs](/academy/workflows/logs) diff --git a/apps/docs/content/docs/en/academy/chat/building.mdx b/apps/docs/content/docs/en/academy/chat/building.mdx new file mode 100644 index 00000000000..f2f1ea27c30 --- /dev/null +++ b/apps/docs/content/docs/en/academy/chat/building.mdx @@ -0,0 +1,75 @@ +--- +title: Building with Chat +description: Describe the system you want in plain language, and Sim builds it — then tests it, debugs it, shows you the evidence, and deploys it, all inside one conversation. +--- + +import { VideoPlaceholder } from '@/components/ui/video-placeholder' +import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' +import { VideoChapters } from '@/components/ui/video-chapters' + + + +
+
+ +You can build a whole workflow without dragging a single block. Describe the system you want — an agent that turns an idea into a finished post, with a draft, a hero image, a slide deck, and a voiceover — and Sim lays out every block, wired and parameterized, in front of you. + + + +
+ + + +
+ +## From description to blocks + +The chat turns your description into real structure: a parallel container drafting candidate posts, generation blocks for the image, the deck, and the voiceover, an evaluator scoring the results, and a table keeping every score. Nothing about the result is special — it's a normal workflow you could have built by hand, which means you can open it, read it, and change it. + +## The build proves itself + +Sim doesn't hand you an untested guess. It runs the workflow immediately, and when a step fails — the image block missing an aspect ratio — it reads the error, patches the parameter, and runs again. You watch the failure and the fix happen on the canvas, in the log, and in the conversation at once. + +## Trust through evidence + +The run record shows every step with its timing and output: the draft, the image, the deck, the audio. When you test it on a real idea, the candidates fan out in parallel, the evaluator scores each one, and the table records what was promoted and what was pruned. + +## Live in one message + +"Ship it" is a message, not a project. The workflow deploys behind a live endpoint, ready for whatever you send it — and it remains a workflow in your workspace: inspectable, schedulable, and callable from everything else you build. + +## Related documentation + +- [Chat overview](/academy/chat/intro) +- [Deployments](/academy/workflows/deployment) diff --git a/apps/docs/content/docs/en/academy/chat/intro.mdx b/apps/docs/content/docs/en/academy/chat/intro.mdx new file mode 100644 index 00000000000..b4ccf46a9df --- /dev/null +++ b/apps/docs/content/docs/en/academy/chat/intro.mdx @@ -0,0 +1,73 @@ +--- +title: Chat +description: The chat in Sim is your workspace control plane — one conversation that queries your tables, searches your docs, runs and schedules workflows, researches the outside world, and composes it all into new systems. +--- + +import { VideoPlaceholder } from '@/components/ui/video-placeholder' +import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' +import { VideoChapters } from '@/components/ui/video-chapters' + + + +
+
+ +The chat lives inside your workspace, and everything in it — your workflows, tables, knowledge bases, and files — is within its reach. You ask from one place, and Sim works across all of it: answering from your data, operating your workflows, and shaping new systems around the task. + + + +
+ + + +
+ +## Everything within reach + +The chat isn't a help box beside your workspace — it's a control plane over it. Every resource you've built is addressable in plain language: the tickets table, the help-center knowledge base, the support-desk workflow. When you ask a question, Sim decides which resources the answer needs, touches them in parallel, and composes the reply. + +## Ask it to act + +Telling the chat to *do* something is the same motion as asking it something. Run the backlog through the support desk, ship the weekly digest, put it on a schedule for Friday mornings — each lands as a real operation, confirmed with a toast, with the run's log available the moment it finishes. + +## It reaches outside too + +The chat can research beyond your workspace: search X and Reddit for this week's conversations, pull the rising themes, and file them as a new document. What it learns becomes a resource like any other — ready for the next ask. + +## Workflows, driving workflows + +The compounding move: one sentence can compose what the chat just touched into a new system. A watcher that reads the trends file on a schedule, matches them against your tickets, and calls your support-desk workflow when something hits. You didn't design it — you described it. + +## Related documentation + +- [Agents overview](/academy/agents/intro) +- [Workflows overview](/academy/workflows/intro) diff --git a/apps/docs/content/docs/en/academy/meta.json b/apps/docs/content/docs/en/academy/meta.json index 7cda92f55ff..094a32e1795 100644 --- a/apps/docs/content/docs/en/academy/meta.json +++ b/apps/docs/content/docs/en/academy/meta.json @@ -11,8 +11,13 @@ "workflows/loops", "workflows/subworkflows", "workflows/deployment", + "---Chat---", + "chat/intro", + "chat/building", "---Agents---", "agents/intro", + "agents/tool-calling", + "agents/skills", "---Tables---", "tables/intro", "---Files---", @@ -25,4 +30,4 @@ "use-cases/monitoring-research", "use-cases/sales-data-enrichment" ] -} +} \ No newline at end of file From fbc1e069fa6429c1c93767c15130fd84ac369768 Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 2 Jul 2026 11:31:16 -0700 Subject: [PATCH 02/12] academy pages: Related documentation links point at real docs routes (mothership/agents/logs-debugging/deployment), not other academy videos --- apps/docs/content/docs/en/academy/agents/skills.mdx | 4 ++-- apps/docs/content/docs/en/academy/agents/tool-calling.mdx | 5 +++-- apps/docs/content/docs/en/academy/chat/building.mdx | 4 ++-- apps/docs/content/docs/en/academy/chat/intro.mdx | 5 +++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/apps/docs/content/docs/en/academy/agents/skills.mdx b/apps/docs/content/docs/en/academy/agents/skills.mdx index 4ba012521a5..802790e9f80 100644 --- a/apps/docs/content/docs/en/academy/agents/skills.mdx +++ b/apps/docs/content/docs/en/academy/agents/skills.mdx @@ -66,5 +66,5 @@ Adding a skill is the same motion as adding a tool: pick it in the block's Skill ## Related documentation -- [Tool Calling](/academy/agents/tool-calling) -- [Knowledge Bases](/academy/knowledge-bases/intro) +- [Skills](/agents/skills) +- [Custom tools](/agents/custom-tools) diff --git a/apps/docs/content/docs/en/academy/agents/tool-calling.mdx b/apps/docs/content/docs/en/academy/agents/tool-calling.mdx index b8101219682..d3ea771d5b2 100644 --- a/apps/docs/content/docs/en/academy/agents/tool-calling.mdx +++ b/apps/docs/content/docs/en/academy/agents/tool-calling.mdx @@ -64,5 +64,6 @@ Every agent run records its tool calls in order. Open the log and walk them: the ## Related documentation -- [Agents overview](/academy/agents/intro) -- [Logs](/academy/workflows/logs) +- [Custom tools](/agents/custom-tools) +- [MCP](/agents/mcp) +- [Logs & debugging](/logs-debugging) diff --git a/apps/docs/content/docs/en/academy/chat/building.mdx b/apps/docs/content/docs/en/academy/chat/building.mdx index f2f1ea27c30..82ea1791e60 100644 --- a/apps/docs/content/docs/en/academy/chat/building.mdx +++ b/apps/docs/content/docs/en/academy/chat/building.mdx @@ -71,5 +71,5 @@ The run record shows every step with its timing and output: the draft, the image ## Related documentation -- [Chat overview](/academy/chat/intro) -- [Deployments](/academy/workflows/deployment) +- [Building workflows from chat](/mothership/workflows) +- [Deployment](/workflows/deployment) diff --git a/apps/docs/content/docs/en/academy/chat/intro.mdx b/apps/docs/content/docs/en/academy/chat/intro.mdx index b4ccf46a9df..f4b5fce6b73 100644 --- a/apps/docs/content/docs/en/academy/chat/intro.mdx +++ b/apps/docs/content/docs/en/academy/chat/intro.mdx @@ -69,5 +69,6 @@ The compounding move: one sentence can compose what the chat just touched into a ## Related documentation -- [Agents overview](/academy/agents/intro) -- [Workflows overview](/academy/workflows/intro) +- [Chat overview](/mothership) +- [Operating workflows from chat](/mothership/workflows) +- [Research from chat](/mothership/research) From 93be6bf38bf1c5e931837b5d6b0f66630eab090c Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 2 Jul 2026 11:58:28 -0700 Subject: [PATCH 03/12] =?UTF-8?q?academy:=20Tables=20=E2=80=94=20Workflow?= =?UTF-8?q?=20Columns=20page=20(combined-cut=20chapters,=20receipts=20peda?= =?UTF-8?q?gogy),=20sequenced=20after=20tables/intro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/docs/content/docs/en/academy/meta.json | 1 + .../en/academy/tables/workflow-columns.mdx | 76 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 apps/docs/content/docs/en/academy/tables/workflow-columns.mdx diff --git a/apps/docs/content/docs/en/academy/meta.json b/apps/docs/content/docs/en/academy/meta.json index 094a32e1795..87b0521bf91 100644 --- a/apps/docs/content/docs/en/academy/meta.json +++ b/apps/docs/content/docs/en/academy/meta.json @@ -20,6 +20,7 @@ "agents/skills", "---Tables---", "tables/intro", + "tables/workflow-columns", "---Files---", "files/intro", "---Knowledge Bases---", diff --git a/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx b/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx new file mode 100644 index 00000000000..7a5115e056a --- /dev/null +++ b/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx @@ -0,0 +1,76 @@ +--- +title: Workflow Columns +description: Attach a workflow to a table column and the table fills itself — and every value it writes carries the full trace of the run that produced it. +--- + +import { VideoPlaceholder } from '@/components/ui/video-placeholder' +import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' +import { VideoChapters } from '@/components/ui/video-chapters' + + + +
+
+ +A workflow column doesn't hold typed-in values — it holds the **output of a workflow**, run once per row. Attach the workflow, bind its input to a column and its output to the column it fills, and the table starts doing the work itself: one run for every row, cascading through stages, updating as new rows arrive. + + + +
+ + + +
+ +## The column that fills itself + +Everything that defines a workflow column lives in one panel: the workflow that runs, the column bound to its input, and the column that receives its output. On every row, the workflow reads that row's values and writes one cell back — right beside its source. Attach a second stage that reads what the first one filled, and rows flow through the pipeline in order. + +## Watch it work + +Run a single row and the cell reports the run as it moves — queued, then running, then the value. Turn on auto-run and the whole column fills in a cascade; type a new company into a blank row and the pipeline runs it end to end, the domain first, then the score, without a single click. + +## Every answer has a receipt + +Take one value — a lead score of 75. The cell remembers the run that wrote it: open its menu and view the execution, a real trace where every block is a span, with its timing and cost. That's true all the way down the column: every cell is its own run. When a row fails, the cell says so, its trace shows which block failed and why, and re-running the cell re-runs the workflow for just that row. + +## Related documentation + +- [Tables overview](/tables) +- [Workflow columns](/tables/workflow-columns) +- [Logs & debugging](/logs-debugging) From 08d17fe750cf2dda5de0c54ed48c0ca746e139e4 Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 2 Jul 2026 15:32:28 -0700 Subject: [PATCH 04/12] =?UTF-8?q?academy=20set=202:=20five=20new=20pages?= =?UTF-8?q?=20(agents/block,=20agents/memory,=20knowledge-bases/connectors?= =?UTF-8?q?,=20tables/operations,=20files/object)=20+=20retimed=20chapters?= =?UTF-8?q?=20on=20the=20redone=20tables/files=20intros=20(recomposed/work?= =?UTF-8?q?ing-day=20cuts)=20+=20full=20meta.json=20sequencing=20=E2=80=94?= =?UTF-8?q?=20Chat=20=C2=B7=20Agents(5)=20=C2=B7=20Tables(3)=20=C2=B7=20Fi?= =?UTF-8?q?les(2)=20=C2=B7=20KB(2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/docs/en/academy/agents/block.mdx | 67 ++++++++++++++++++ .../content/docs/en/academy/agents/memory.mdx | 66 ++++++++++++++++++ .../content/docs/en/academy/files/intro.mdx | 15 ++-- .../content/docs/en/academy/files/object.mdx | 67 ++++++++++++++++++ .../en/academy/knowledge-bases/connectors.mdx | 66 ++++++++++++++++++ apps/docs/content/docs/en/academy/meta.json | 5 ++ .../content/docs/en/academy/tables/intro.mdx | 16 +++-- .../docs/en/academy/tables/operations.mdx | 68 +++++++++++++++++++ 8 files changed, 357 insertions(+), 13 deletions(-) create mode 100644 apps/docs/content/docs/en/academy/agents/block.mdx create mode 100644 apps/docs/content/docs/en/academy/agents/memory.mdx create mode 100644 apps/docs/content/docs/en/academy/files/object.mdx create mode 100644 apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx create mode 100644 apps/docs/content/docs/en/academy/tables/operations.mdx diff --git a/apps/docs/content/docs/en/academy/agents/block.mdx b/apps/docs/content/docs/en/academy/agents/block.mdx new file mode 100644 index 00000000000..7f528316633 --- /dev/null +++ b/apps/docs/content/docs/en/academy/agents/block.mdx @@ -0,0 +1,67 @@ +--- +title: The Agent Block +description: Inside the Agent block, a run becomes a conversation — a message stack the model reads, a swappable brain, and an output bundle every later block can use. +--- + +import { VideoPlaceholder } from '@/components/ui/video-placeholder' +import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' +import { VideoChapters } from '@/components/ui/video-chapters' + + + +
+
+ +On the canvas, an Agent block looks like any other step: a run arrives at its input handle, and a result leaves on the other side. Inside, it's a conversation machine — this video follows the data in, station by station. + + + +
+ + + +
+ +## The stations inside + +The first station is the message stack: your **system message** (the standing instructions), any **history** you preload — worked examples or an earlier conversation — and the newest **user message**, which usually arrives from an earlier block through a connection tag. The second station is the **model**: the brain that reads the whole stack. Sim supports the frontier providers, and because the block stays the same while the model changes, swapping brains never means rebuilding the step. + +## What a run costs and returns + +When the run reaches the model, every message on the stack ships as input tokens; the reply streams back as output tokens. If tools are attached, the model can call them mid-run. Everything the run did — the content it wrote, the model that ran, the token bill, the tool calls — lands in the block's outputs, where any later block can read it. + +## Related documentation + +- [Agent block](/blocks/agent) +- [Custom tools](/agents/custom-tools) diff --git a/apps/docs/content/docs/en/academy/agents/memory.mdx b/apps/docs/content/docs/en/academy/agents/memory.mdx new file mode 100644 index 00000000000..d58ed2893e9 --- /dev/null +++ b/apps/docs/content/docs/en/academy/agents/memory.mdx @@ -0,0 +1,66 @@ +--- +title: Memory +description: One setting gives an agent memory — a conversation ID under which every turn is kept, so the next run starts from the conversation so far. +--- + +import { VideoPlaceholder } from '@/components/ui/video-placeholder' +import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' +import { VideoChapters } from '@/components/ui/video-chapters' + + + +
+
+ +By default, an agent keeps nothing between runs — every conversation starts completely fresh. The Memory setting changes that: choose Conversation, give it a conversation ID, and everything said under that key is kept and loaded back before the model runs. + + + +
+ + + +
+ +## The warm and cold split + +The video runs the same agent twice, side by side: once with no memory and once with the conversation ID. The same follow-up question arrives in both. Without the key, the agent starts from zero and has to ask for everything again; with it, everything stored under the key was loaded back before the model saw the new message, and the answer picks up exactly where yesterday stopped. + +## When conversations grow + +Memory can also be a sliding window — keeping the most recent messages, or the most recent tokens, while the oldest quietly fall away. The stored transcript keeps every turn; the window controls how much of it rides into the model on each run. + +## Related documentation + +- [Agent block](/blocks/agent) diff --git a/apps/docs/content/docs/en/academy/files/intro.mdx b/apps/docs/content/docs/en/academy/files/intro.mdx index ea9900e38ca..5b2b7cd8fd9 100644 --- a/apps/docs/content/docs/en/academy/files/intro.mdx +++ b/apps/docs/content/docs/en/academy/files/intro.mdx @@ -33,12 +33,15 @@ Sim has native support for **files** — a way to store, reference, and pass aro diff --git a/apps/docs/content/docs/en/academy/files/object.mdx b/apps/docs/content/docs/en/academy/files/object.mdx new file mode 100644 index 00000000000..6c831a8c51f --- /dev/null +++ b/apps/docs/content/docs/en/academy/files/object.mdx @@ -0,0 +1,67 @@ +--- +title: The File Object +description: Every file in Sim — whatever made it — travels as the same object, so producers and consumers compose without special handling. +--- + +import { VideoPlaceholder } from '@/components/ui/video-placeholder' +import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' +import { VideoChapters } from '@/components/ui/video-chapters' + + + +
+
+ +Your workflows make files from very different places — an email attachment, a generated image, synthesized speech, a parsed document. Inside the workflow, every one of them travels as the same thing: a file object. + + + +
+ + + +
+ +## The common shape + +Catch a file mid-run and look inside: an I.D., a name, a URL where the bytes live, a size, a type, and the content itself. A couple more fields exist under the hood, but the shape never changes — which is exactly what lets a Gmail attachment, a generated image, and a text-to-speech clip all feed the same agent without special handling. + +## Why one shape matters + +Swap which producer feeds the agent, and nothing on the agent side changes. Point the same object at a different consumer — an email, cloud storage, another agent — and it just rides. The video closes on a real template: an invoice lands in Gmail, gets parsed, an agent extracts the fields, and the result settles in the database, one object riding the whole way through. + +## Related documentation + +- [Files overview](/files) diff --git a/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx b/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx new file mode 100644 index 00000000000..84ab97a312d --- /dev/null +++ b/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx @@ -0,0 +1,66 @@ +--- +title: Connectors +description: A connector keeps a knowledge base in sync with the tool where your documents actually live — first import, steady re-sync, changes and removals included. +--- + +import { VideoPlaceholder } from '@/components/ui/video-placeholder' +import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' +import { VideoChapters } from '@/components/ui/video-chapters' + + + +
+
+ +You can upload documents to a knowledge base by hand — but your documents usually live somewhere that keeps changing. A connector links the knowledge base to that source, imports everything in scope, and then keeps it current on a schedule. + + + +
+ + + +
+ +## The lifecycle + +The video follows one connector through its whole life: picking Notion as the source, authorizing the account, scoping which pages sync, and choosing the frequency. The first import brings everything in scope into the knowledge base as chunks. From then on the connector re-syncs on schedule — a page edited at the source is re-imported, and a page deleted at the source leaves the knowledge base. + +## Why it matters + +Knowledge that drifts out of date is worse than no knowledge — an agent will confidently answer from a stale document. A connector makes the knowledge base track the source, so the answers your agents give reflect what your documents say now. + +## Related documentation + +- [Knowledge bases](/knowledgebase) diff --git a/apps/docs/content/docs/en/academy/meta.json b/apps/docs/content/docs/en/academy/meta.json index 87b0521bf91..ba078e72cd6 100644 --- a/apps/docs/content/docs/en/academy/meta.json +++ b/apps/docs/content/docs/en/academy/meta.json @@ -16,15 +16,20 @@ "chat/building", "---Agents---", "agents/intro", + "agents/block", "agents/tool-calling", "agents/skills", + "agents/memory", "---Tables---", "tables/intro", + "tables/operations", "tables/workflow-columns", "---Files---", "files/intro", + "files/object", "---Knowledge Bases---", "knowledge-bases/intro", + "knowledge-bases/connectors", "---Use Cases---", "use-cases/slack-it-triage", "use-cases/document-extraction", diff --git a/apps/docs/content/docs/en/academy/tables/intro.mdx b/apps/docs/content/docs/en/academy/tables/intro.mdx index de736769903..e7fc3183d48 100644 --- a/apps/docs/content/docs/en/academy/tables/intro.mdx +++ b/apps/docs/content/docs/en/academy/tables/intro.mdx @@ -37,13 +37,15 @@ A **table** stores structured data: columns are the types, rows are the entries. diff --git a/apps/docs/content/docs/en/academy/tables/operations.mdx b/apps/docs/content/docs/en/academy/tables/operations.mdx new file mode 100644 index 00000000000..9d52d6b4fc8 --- /dev/null +++ b/apps/docs/content/docs/en/academy/tables/operations.mdx @@ -0,0 +1,68 @@ +--- +title: Table Operations +description: The Table block works across two surfaces — a panel where you describe the operation, and the live table that answers it — with one shape shared by query, insert, update, and delete. +--- + +import { VideoPlaceholder } from '@/components/ui/video-placeholder' +import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' +import { VideoChapters } from '@/components/ui/video-chapters' + + + +
+
+ +Workflows work with tables through the Table block. Everything the block can do starts from its Operation dropdown, and every operation follows the same shape: you describe it in the panel, run the block, and read the result in the table. + + + +
+ + + +
+ +## One shape, every operation + +The panel describes what you mean: an operation, a table, and — depending on the operation — a filter, row data, or both. A filter is conditions stacked together (priority equals high, and status equals open), each one narrowing the match. Queries read without touching the table; Delete Rows by Filter removes what matches; Insert Row lands a payload as a new row; Update Rows by Filter picks rows and changes them in place. + +## Reading the result + +The live table answers every run: matched rows highlight, deleted rows leave, inserted rows land, and updated cells flip where they sit. The block's output carries the same result back into the workflow for the next block to use. + +## Related documentation + +- [Tables overview](/tables) +- [Using tables in workflows](/tables/using-in-workflows) From c8191b1f3425836bd9594ada1ca52d7c4704ffa6 Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 2 Jul 2026 15:42:31 -0700 Subject: [PATCH 05/12] =?UTF-8?q?academy=20pages:=20every=20page=20shows?= =?UTF-8?q?=20the=20VIDEO's=20workflow=20(new=20academy-video-workflows.ts?= =?UTF-8?q?=20registry=20=E2=80=94=20invoice=20intake,=20Qualify,=20memory?= =?UTF-8?q?,=20table=20ops,=20tools/skills=20agents,=20support-desk,=20con?= =?UTF-8?q?tent-agent)=20+=20plain=20pedagogical=20headings=20throughout?= =?UTF-8?q?=20(no=20poetry:=20'The=20warm=20and=20cold=20split'=20?= =?UTF-8?q?=E2=86=92=20'The=20same=20agent,=20with=20and=20without=20memor?= =?UTF-8?q?y',=20'From=20one=20pass=20to=20a=20loop'=20=E2=86=92=20'What?= =?UTF-8?q?=20tools=20change',=20etc.);=20files/intro's=20embed=20swapped?= =?UTF-8?q?=20to=20the=20video's=20machine?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../academy-video-workflows.ts | 387 ++++++++++++++++++ .../content/docs/en/academy/agents/block.mdx | 8 +- .../content/docs/en/academy/agents/memory.mdx | 10 +- .../content/docs/en/academy/agents/skills.mdx | 8 +- .../docs/en/academy/agents/tool-calling.mdx | 8 +- .../content/docs/en/academy/chat/building.mdx | 16 +- .../content/docs/en/academy/chat/intro.mdx | 16 +- .../content/docs/en/academy/files/intro.mdx | 7 +- .../content/docs/en/academy/files/object.mdx | 10 +- .../en/academy/knowledge-bases/connectors.mdx | 2 +- .../docs/en/academy/tables/operations.mdx | 8 +- .../en/academy/tables/workflow-columns.mdx | 6 +- 12 files changed, 461 insertions(+), 25 deletions(-) create mode 100644 apps/docs/components/workflow-preview/academy-video-workflows.ts diff --git a/apps/docs/components/workflow-preview/academy-video-workflows.ts b/apps/docs/components/workflow-preview/academy-video-workflows.ts new file mode 100644 index 00000000000..f9c78e0b70a --- /dev/null +++ b/apps/docs/components/workflow-preview/academy-video-workflows.ts @@ -0,0 +1,387 @@ +import type { PreviewWorkflow } from './workflow-data' + +/** + * Workflows shown in the academy videos, reproduced block-for-block so each + * page's written supplement shows the same machine the video builds. Rows and + * operation labels match the videos (which match the block registry). + */ + +/** files/intro + files/object — the invoice intake machine. */ +export const AV_INVOICE_INTAKE_WORKFLOW: PreviewWorkflow = { + id: 'av-invoice-intake', + name: 'Invoice intake', + blocks: [ + { + id: 'gmailtrigger', + name: 'Gmail Email Trigger', + type: 'gmail', + bgColor: '#E0E0E0', + position: { x: 0, y: 0 }, + hideTargetHandle: true, + rows: [{ title: 'Include Attachments', value: 'Enabled' }], + }, + { + id: 'file', + name: 'File', + type: 'file', + bgColor: '#40916C', + position: { x: 340, y: 0 }, + rows: [ + { title: 'Operation', value: 'Read' }, + { title: 'Files', value: '' }, + ], + }, + { + id: 'agent', + name: 'Agent', + type: 'agent', + bgColor: '#33C482', + position: { x: 680, y: 0 }, + rows: [ + { title: 'Messages', value: 'Extract the invoice fields' }, + { title: 'Model', value: 'claude-sonnet-4-6' }, + { title: 'Files', value: '' }, + ], + }, + { + id: 'supabase', + name: 'Supabase', + type: 'supabase', + bgColor: '#1C1C1C', + position: { x: 1020, y: 0 }, + rows: [ + { title: 'Operation', value: 'Create a Row' }, + { title: 'Table', value: 'invoices' }, + { title: 'Data', value: '' }, + ], + }, + ], + edges: [ + { id: 'trigger-file', source: 'gmailtrigger', target: 'file' }, + { id: 'file-agent', source: 'file', target: 'agent' }, + { id: 'agent-supabase', source: 'agent', target: 'supabase' }, + ], +} + +/** agents/block — the Qualify agent the camera rides through. */ +export const AV_QUALIFY_WORKFLOW: PreviewWorkflow = { + id: 'av-qualify', + name: 'Qualify a lead', + blocks: [ + { + id: 'start', + name: 'Start', + type: 'start_trigger', + bgColor: '#2FB3FF', + position: { x: 0, y: 0 }, + hideTargetHandle: true, + rows: [{ title: 'Input', value: 'Lead' }], + }, + { + id: 'qualify', + name: 'Qualify', + type: 'agent', + bgColor: '#33C482', + position: { x: 340, y: 0 }, + rows: [ + { title: 'Messages', value: 'Qualify this lead: ' }, + { title: 'Model', value: 'claude-sonnet-4-6' }, + ], + }, + { + id: 'response', + name: 'Response', + type: 'response', + bgColor: '#2F55FF', + position: { x: 680, y: 0 }, + rows: [{ title: 'Data', value: '' }], + }, + ], + edges: [ + { id: 'start-qualify', source: 'start', target: 'qualify' }, + { id: 'qualify-response', source: 'qualify', target: 'response' }, + ], +} + +/** agents/memory — the Support agent with Memory set to Conversation. */ +export const AV_MEMORY_WORKFLOW: PreviewWorkflow = { + id: 'av-memory', + name: 'Support agent with memory', + blocks: [ + { + id: 'start', + name: 'Start', + type: 'start_trigger', + bgColor: '#2FB3FF', + position: { x: 0, y: 0 }, + hideTargetHandle: true, + rows: [{ title: 'Input', value: 'Customer message' }], + }, + { + id: 'support', + name: 'Support', + type: 'agent', + bgColor: '#33C482', + position: { x: 340, y: 0 }, + rows: [ + { title: 'Messages', value: '' }, + { title: 'Model', value: 'claude-sonnet-4-6' }, + { title: 'Memory', value: 'Conversation · user-123' }, + ], + }, + ], + edges: [{ id: 'start-support', source: 'start', target: 'support' }], +} + +/** tables/operations — the Table block with a filtered query. */ +export const AV_TABLE_OPS_WORKFLOW: PreviewWorkflow = { + id: 'av-table-ops', + name: 'Query the tickets table', + blocks: [ + { + id: 'start', + name: 'Start', + type: 'start_trigger', + bgColor: '#2FB3FF', + position: { x: 0, y: 0 }, + hideTargetHandle: true, + rows: [{ title: 'Input', value: 'Run' }], + }, + { + id: 'table', + name: 'Table 1', + type: 'table', + bgColor: '#10B981', + position: { x: 340, y: 0 }, + rows: [ + { title: 'Operation', value: 'Query Rows' }, + { title: 'Table', value: 'tickets' }, + { title: 'Filter Conditions', value: 'priority equals high' }, + ], + }, + ], + edges: [{ id: 'start-table', source: 'start', target: 'table' }], +} + +/** agents/tool-calling — the Qualify agent with research tools attached. */ +export const AV_TOOLS_WORKFLOW: PreviewWorkflow = { + id: 'av-tools', + name: 'Qualify with tools', + blocks: [ + { + id: 'start', + name: 'Start', + type: 'start_trigger', + bgColor: '#2FB3FF', + position: { x: 0, y: 0 }, + hideTargetHandle: true, + rows: [{ title: 'Input', value: 'Lead' }], + }, + { + id: 'qualify', + name: 'Qualify', + type: 'agent', + bgColor: '#33C482', + position: { x: 340, y: 0 }, + rows: [ + { title: 'Messages', value: 'Qualify this lead: ' }, + { title: 'Model', value: 'claude-sonnet-4-6' }, + ], + tools: [ + { type: 'exa', name: 'Search', bgColor: '#1F40ED' }, + { type: 'github', name: 'GitHub', bgColor: '#181717' }, + { type: 'hubspot', name: 'CRM', bgColor: '#FF7A59' }, + ], + }, + { + id: 'response', + name: 'Response', + type: 'response', + bgColor: '#2F55FF', + position: { x: 680, y: 0 }, + rows: [{ title: 'Data', value: '' }], + }, + ], + edges: [ + { id: 'start-qualify', source: 'start', target: 'qualify' }, + { id: 'qualify-response', source: 'qualify', target: 'response' }, + ], +} + +/** agents/skills — the same agent with a skill attached. */ +export const AV_SKILLS_WORKFLOW: PreviewWorkflow = { + id: 'av-skills', + name: 'Qualify with a skill', + blocks: [ + { + id: 'start', + name: 'Start', + type: 'start_trigger', + bgColor: '#2FB3FF', + position: { x: 0, y: 0 }, + hideTargetHandle: true, + rows: [{ title: 'Input', value: 'Lead' }], + }, + { + id: 'qualify', + name: 'Qualify', + type: 'agent', + bgColor: '#33C482', + position: { x: 340, y: 0 }, + rows: [ + { title: 'Messages', value: 'Qualify this lead: ' }, + { title: 'Model', value: 'claude-sonnet-4-6' }, + { title: 'Skills', value: 'answer-with-citations' }, + ], + tools: [{ type: 'exa', name: 'Search', bgColor: '#1F40ED' }], + }, + ], + edges: [{ id: 'start-qualify', source: 'start', target: 'qualify' }], +} + +/** chat/intro — the support-desk workflow the chat operates. */ +export const AV_SUPPORT_DESK_WORKFLOW: PreviewWorkflow = { + id: 'av-support-desk', + name: 'support-desk', + blocks: [ + { + id: 'start', + name: 'Start', + type: 'start_trigger', + bgColor: '#2FB3FF', + position: { x: 0, y: 60 }, + hideTargetHandle: true, + rows: [{ title: 'Input', value: 'Ticket' }], + }, + { + id: 'triage', + name: 'Triage', + type: 'agent', + bgColor: '#33C482', + position: { x: 320, y: 60 }, + rows: [ + { title: 'Messages', value: '' }, + { title: 'Model', value: 'claude-sonnet-4-6' }, + ], + tools: [{ type: 'knowledge', name: 'Help Center', bgColor: '#00B0B0' }], + }, + { + id: 'condition', + name: 'Urgent?', + type: 'condition', + bgColor: '#FF972B', + position: { x: 660, y: 60 }, + conditions: [ + { id: 'condition-if', label: 'If', value: '' }, + { id: 'condition-else', label: 'else' }, + ], + }, + { + id: 'escalate', + name: 'Escalate', + type: 'slack', + bgColor: '#611F69', + position: { x: 1000, y: -40 }, + rows: [{ title: 'Channel', value: '#support-urgent' }], + }, + { + id: 'reply', + name: 'Reply', + type: 'agent', + bgColor: '#33C482', + position: { x: 1000, y: 160 }, + rows: [{ title: 'Messages', value: 'Draft the reply' }], + }, + { + id: 'log', + name: 'Log', + type: 'table', + bgColor: '#10B981', + position: { x: 1340, y: 60 }, + rows: [ + { title: 'Operation', value: 'Insert Row' }, + { title: 'Table', value: 'tickets' }, + ], + }, + ], + edges: [ + { id: 'start-triage', source: 'start', target: 'triage' }, + { id: 'triage-condition', source: 'triage', target: 'condition' }, + { id: 'condition-escalate', source: 'condition', target: 'escalate', sourceHandle: 'condition-if' }, + { id: 'condition-reply', source: 'condition', target: 'reply', sourceHandle: 'condition-else' }, + { id: 'escalate-log', source: 'escalate', target: 'log' }, + { id: 'reply-log', source: 'reply', target: 'log' }, + ], +} + +/** chat/building — the content-agent the chat builds: candidates drafted in + * parallel, media generated, an evaluator scoring, results kept. */ +export const AV_CONTENT_AGENT_WORKFLOW: PreviewWorkflow = { + id: 'av-content-agent', + name: 'content-agent', + blocks: [ + { + id: 'start', + name: 'Start', + type: 'start_trigger', + bgColor: '#2FB3FF', + position: { x: 0, y: 95 }, + hideTargetHandle: true, + rows: [{ title: 'Input', value: 'Idea' }], + }, + { + id: 'candidates', + name: 'Candidates', + type: 'parallel', + bgColor: '#1D1C1A', + position: { x: 320, y: 30 }, + size: { width: 430, height: 170 }, + rows: [], + }, + { + id: 'writer', + name: 'Writer', + type: 'agent', + bgColor: '#33C482', + position: { x: 150, y: 62 }, + parentId: 'candidates', + rows: [ + { title: 'Messages', value: '' }, + { title: 'Model', value: 'claude-sonnet-4-6' }, + ], + }, + { + id: 'evaluator', + name: 'Evaluator', + type: 'evaluator', + bgColor: '#8B5CF6', + position: { x: 840, y: 95 }, + rows: [ + { title: 'Metrics', value: 'Voice · Hook' }, + { title: 'Content', value: '' }, + ], + }, + { + id: 'scores', + name: 'Scores', + type: 'table', + bgColor: '#10B981', + position: { x: 1180, y: 95 }, + rows: [ + { title: 'Operation', value: 'Insert Row' }, + { title: 'Table', value: 'scores' }, + ], + }, + ], + edges: [ + { id: 'start-candidates', source: 'start', target: 'candidates' }, + { + id: 'candidates-writer', + source: 'candidates', + target: 'writer', + sourceHandle: 'parallel-start-source', + }, + { id: 'candidates-evaluator', source: 'candidates', target: 'evaluator' }, + { id: 'evaluator-scores', source: 'evaluator', target: 'scores' }, + ], +} diff --git a/apps/docs/content/docs/en/academy/agents/block.mdx b/apps/docs/content/docs/en/academy/agents/block.mdx index 7f528316633..0f5f7479ed9 100644 --- a/apps/docs/content/docs/en/academy/agents/block.mdx +++ b/apps/docs/content/docs/en/academy/agents/block.mdx @@ -6,6 +6,8 @@ description: Inside the Agent block, a run becomes a conversation — a message import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { WorkflowPreview } from '@/components/workflow-preview' +import { AV_QUALIFY_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -53,7 +55,11 @@ On the canvas, an Agent block looks like any other step: a run arrives at its in -## The stations inside +Here is the workflow the video rides through — the Qualify agent between its input and its result: + + + +## What's inside the block The first station is the message stack: your **system message** (the standing instructions), any **history** you preload — worked examples or an earlier conversation — and the newest **user message**, which usually arrives from an earlier block through a connection tag. The second station is the **model**: the brain that reads the whole stack. Sim supports the frontier providers, and because the block stays the same while the model changes, swapping brains never means rebuilding the step. diff --git a/apps/docs/content/docs/en/academy/agents/memory.mdx b/apps/docs/content/docs/en/academy/agents/memory.mdx index d58ed2893e9..90b2c08f9d8 100644 --- a/apps/docs/content/docs/en/academy/agents/memory.mdx +++ b/apps/docs/content/docs/en/academy/agents/memory.mdx @@ -6,6 +6,8 @@ description: One setting gives an agent memory — a conversation ID under which import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { WorkflowPreview } from '@/components/workflow-preview' +import { AV_MEMORY_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -44,7 +46,7 @@ By default, an agent keeps nothing between runs — every conversation starts co { title: 'Fresh by default', time: '0:39' }, { title: 'The Memory setting', time: '0:51' }, { title: 'Saving under a key', time: '1:03' }, - { title: 'Warm vs cold, side by side', time: '1:11' }, + { title: 'With and without memory, side by side', time: '1:11' }, { title: 'A thread per customer', time: '1:37' }, { title: 'The sliding window', time: '1:52' }, { title: 'Inside the stored transcript', time: '1:59' }, @@ -53,7 +55,11 @@ By default, an agent keeps nothing between runs — every conversation starts co -## The warm and cold split +Here is the agent from the video with Memory set on the block: + + + +## The same agent, with and without memory The video runs the same agent twice, side by side: once with no memory and once with the conversation ID. The same follow-up question arrives in both. Without the key, the agent starts from zero and has to ask for everything again; with it, everything stored under the key was loaded back before the model saw the new message, and the answer picks up exactly where yesterday stopped. diff --git a/apps/docs/content/docs/en/academy/agents/skills.mdx b/apps/docs/content/docs/en/academy/agents/skills.mdx index 802790e9f80..c476df962fc 100644 --- a/apps/docs/content/docs/en/academy/agents/skills.mdx +++ b/apps/docs/content/docs/en/academy/agents/skills.mdx @@ -6,6 +6,8 @@ description: A skill is a written method the agent reads when it decides it's re import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { WorkflowPreview } from '@/components/workflow-preview' +import { AV_SKILLS_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -52,7 +54,11 @@ An agent with tools but no guidance does the minimum: one quick search, then a h -## The before and after +Here is the agent from the video with the skill attached: + + + +## The same run, with and without the skill The video runs the same lead-qualification task twice. Without a skill, the agent searches once and guesses — "probably Series B, maybe a hundred people." With Exa's `answer-with-citations` skill attached, it loads the method mid-run, turns each claim into a specific factual question, pulls a sourced answer for every one, and returns a verdict where each figure carries its citation. diff --git a/apps/docs/content/docs/en/academy/agents/tool-calling.mdx b/apps/docs/content/docs/en/academy/agents/tool-calling.mdx index d3ea771d5b2..fde4b81445b 100644 --- a/apps/docs/content/docs/en/academy/agents/tool-calling.mdx +++ b/apps/docs/content/docs/en/academy/agents/tool-calling.mdx @@ -6,6 +6,8 @@ description: Give an agent tools and it works in a loop — deciding, calling, r import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { WorkflowPreview } from '@/components/workflow-preview' +import { AV_TOOLS_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -50,7 +52,11 @@ A plain Agent block is text in, one model pass, text out — it can't look anyth -## From one pass to a loop +Here is the agent from the video with its tools attached: + + + +## What tools change Without tools, an agent has only its prompt and its training — asked to qualify a lead, it can only say it has no way to look anything up. With tools attached, the same block plans: research the company, check the funding, read the careers page. It calls tools in parallel when the calls don't depend on each other, revises its plan as results land, and answers only when its context holds enough. diff --git a/apps/docs/content/docs/en/academy/chat/building.mdx b/apps/docs/content/docs/en/academy/chat/building.mdx index 82ea1791e60..dce144415fb 100644 --- a/apps/docs/content/docs/en/academy/chat/building.mdx +++ b/apps/docs/content/docs/en/academy/chat/building.mdx @@ -6,6 +6,8 @@ description: Describe the system you want in plain language, and Sim builds it import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { WorkflowPreview } from '@/components/workflow-preview' +import { AV_CONTENT_AGENT_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -25,7 +27,7 @@ You can build a whole workflow without dragging a single block. Describe the sys body: "Before you ask, Sim runs the build to see if it holds together. When the image step fails on a missing parameter, it catches the error, fixes the block, and re-runs clean.", }, { - title: 'You stay the judge', + title: 'You inspect before you trust', body: 'It shows you the run record — every step, every output — so you inspect before you trust. Then you hand it a real idea and watch candidates get drafted, scored, and pruned.', }, { @@ -57,17 +59,21 @@ You can build a whole workflow without dragging a single block. Describe the sys The chat turns your description into real structure: a parallel container drafting candidate posts, generation blocks for the image, the deck, and the voiceover, an evaluator scoring the results, and a table keeping every score. Nothing about the result is special — it's a normal workflow you could have built by hand, which means you can open it, read it, and change it. -## The build proves itself +Here is the shape of the workflow the chat builds in the video — candidates drafted in parallel, an evaluator scoring them, and the scores kept in a table: + + + +## It tests and fixes itself Sim doesn't hand you an untested guess. It runs the workflow immediately, and when a step fails — the image block missing an aspect ratio — it reads the error, patches the parameter, and runs again. You watch the failure and the fix happen on the canvas, in the log, and in the conversation at once. -## Trust through evidence +## Inspecting the run The run record shows every step with its timing and output: the draft, the image, the deck, the audio. When you test it on a real idea, the candidates fan out in parallel, the evaluator scores each one, and the table records what was promoted and what was pruned. -## Live in one message +## Deploying -"Ship it" is a message, not a project. The workflow deploys behind a live endpoint, ready for whatever you send it — and it remains a workflow in your workspace: inspectable, schedulable, and callable from everything else you build. +Deploying is one more message in the conversation. The workflow deploys behind a live endpoint, ready for whatever you send it — and it remains a workflow in your workspace: inspectable, schedulable, and callable from everything else you build. ## Related documentation diff --git a/apps/docs/content/docs/en/academy/chat/intro.mdx b/apps/docs/content/docs/en/academy/chat/intro.mdx index f4b5fce6b73..f4e9147aac5 100644 --- a/apps/docs/content/docs/en/academy/chat/intro.mdx +++ b/apps/docs/content/docs/en/academy/chat/intro.mdx @@ -6,6 +6,8 @@ description: The chat in Sim is your workspace control plane — one conversatio import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { WorkflowPreview } from '@/components/workflow-preview' +import { AV_SUPPORT_DESK_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -21,7 +23,7 @@ The chat lives inside your workspace, and everything in it — your workflows, t body: 'A single ask can query a table and search your help docs at the same time, and answer from both — you never have to know which resource holds the answer.', }, { - title: 'It operates, not just answers', + title: 'It runs your workflows', body: 'The chat runs workflows and puts them on schedules for you — no clicks, no setup. Actions land as toasts, and each resource it touches opens as a tab.', }, { @@ -55,17 +57,21 @@ The chat lives inside your workspace, and everything in it — your workflows, t The chat isn't a help box beside your workspace — it's a control plane over it. Every resource you've built is addressable in plain language: the tickets table, the help-center knowledge base, the support-desk workflow. When you ask a question, Sim decides which resources the answer needs, touches them in parallel, and composes the reply. -## Ask it to act +Here is the workflow the chat operates in the video — the support desk that triages a ticket, escalates or replies, and logs the result: + + + +## Asking it to act Telling the chat to *do* something is the same motion as asking it something. Run the backlog through the support desk, ship the weekly digest, put it on a schedule for Friday mornings — each lands as a real operation, confirmed with a toast, with the run's log available the moment it finishes. -## It reaches outside too +## Research beyond the workspace The chat can research beyond your workspace: search X and Reddit for this week's conversations, pull the rising themes, and file them as a new document. What it learns becomes a resource like any other — ready for the next ask. -## Workflows, driving workflows +## Composing a new workflow -The compounding move: one sentence can compose what the chat just touched into a new system. A watcher that reads the trends file on a schedule, matches them against your tickets, and calls your support-desk workflow when something hits. You didn't design it — you described it. +One sentence can compose what the chat just touched into a new workflow. A watcher that reads the trends file on a schedule, matches them against your tickets, and calls your support-desk workflow when something hits. You described it, and the chat assembled it from the resources you already have. ## Related documentation diff --git a/apps/docs/content/docs/en/academy/files/intro.mdx b/apps/docs/content/docs/en/academy/files/intro.mdx index 5b2b7cd8fd9..7ea1bdd290d 100644 --- a/apps/docs/content/docs/en/academy/files/intro.mdx +++ b/apps/docs/content/docs/en/academy/files/intro.mdx @@ -6,7 +6,8 @@ description: Sim natively supports files — store, reference, and pass around d import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' -import { WorkflowPreview, FILE_SUMMARY_WORKFLOW } from '@/components/workflow-preview' +import { WorkflowPreview } from '@/components/workflow-preview' +import { AV_INVOICE_INTAKE_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -51,9 +52,9 @@ Sim has native support for **files** — a way to store, reference, and pass aro Most of the work you'd want to automate touches files somewhere. You receive a PDF and need to extract from it. An email needs an image attached. Audio comes in and has to be transcribed. A user uploads a document to process. These aren't edge cases — workflows reference file types as inputs and outputs all the time, so files are a first-class thing in Sim rather than something you work around. -Here's the shape of it — a workflow that takes a file in and produces a result from it: +Here is the machine the video follows — an email's attachment read as a file, an agent extracting its fields, and the result written to a table: - + ## Files in and out diff --git a/apps/docs/content/docs/en/academy/files/object.mdx b/apps/docs/content/docs/en/academy/files/object.mdx index 6c831a8c51f..0b9e7467c76 100644 --- a/apps/docs/content/docs/en/academy/files/object.mdx +++ b/apps/docs/content/docs/en/academy/files/object.mdx @@ -6,6 +6,8 @@ description: Every file in Sim — whatever made it — travels as the same obje import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { WorkflowPreview } from '@/components/workflow-preview' +import { AV_INVOICE_INTAKE_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -44,7 +46,7 @@ Your workflows make files from very different places — an email attachment, a { title: 'One reader', time: '0:43' }, { title: 'Every shape arrives the same', time: '0:54' }, { title: 'The identical package', time: '1:02' }, - { title: 'Freeze: inside the object', time: '1:16' }, + { title: 'Inside the object', time: '1:16' }, { title: 'The fields', time: '1:20' }, { title: 'Swap the source', time: '1:40' }, { title: 'Any consumer', time: '1:48' }, @@ -58,9 +60,13 @@ Your workflows make files from very different places — an email attachment, a Catch a file mid-run and look inside: an I.D., a name, a URL where the bytes live, a size, a type, and the content itself. A couple more fields exist under the hood, but the shape never changes — which is exactly what lets a Gmail attachment, a generated image, and a text-to-speech clip all feed the same agent without special handling. +The video closes on this machine — one file object riding the whole chain: + + + ## Why one shape matters -Swap which producer feeds the agent, and nothing on the agent side changes. Point the same object at a different consumer — an email, cloud storage, another agent — and it just rides. The video closes on a real template: an invoice lands in Gmail, gets parsed, an agent extracts the fields, and the result settles in the database, one object riding the whole way through. +Swap which producer feeds the agent, and nothing on the agent side changes. Point the same object at a different consumer — an email, cloud storage, another agent — and it just rides. In the closing machine, an invoice lands in Gmail, gets parsed, an agent extracts the fields, and the result settles in the database — one object carried the whole way through. ## Related documentation diff --git a/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx b/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx index 84ab97a312d..9f085dc63f3 100644 --- a/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx +++ b/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx @@ -29,7 +29,7 @@ You can upload documents to a knowledge base by hand — but your documents usua body: 'On each sync, changed documents are re-imported and re-chunked, and documents removed at the source are removed from the knowledge base too.', }, { - title: 'Answers stay true', + title: 'Answers reflect the source', body: 'Agents searching the knowledge base read the synced content — so an answer reflects the document as it is now, not as it was at import.', }, ]} diff --git a/apps/docs/content/docs/en/academy/tables/operations.mdx b/apps/docs/content/docs/en/academy/tables/operations.mdx index 9d52d6b4fc8..15b46b63ce6 100644 --- a/apps/docs/content/docs/en/academy/tables/operations.mdx +++ b/apps/docs/content/docs/en/academy/tables/operations.mdx @@ -6,6 +6,8 @@ description: The Table block works across two surfaces — a panel where you des import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { WorkflowPreview } from '@/components/workflow-preview' +import { AV_TABLE_OPS_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -54,7 +56,11 @@ Workflows work with tables through the Table block. Everything the block can do -## One shape, every operation +Here is the block from the video, configured for the first query: + + + +## One shape for every operation The panel describes what you mean: an operation, a table, and — depending on the operation — a filter, row data, or both. A filter is conditions stacked together (priority equals high, and status equals open), each one narrowing the match. Queries read without touching the table; Delete Rows by Filter removes what matches; Insert Row lands a payload as a new row; Update Rows by Filter picks rows and changes them in place. diff --git a/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx b/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx index 7a5115e056a..ee255b5f9f1 100644 --- a/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx +++ b/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx @@ -57,15 +57,15 @@ A workflow column doesn't hold typed-in values — it holds the **output of a wo -## The column that fills itself +## How a workflow column is defined Everything that defines a workflow column lives in one panel: the workflow that runs, the column bound to its input, and the column that receives its output. On every row, the workflow reads that row's values and writes one cell back — right beside its source. Attach a second stage that reads what the first one filled, and rows flow through the pipeline in order. -## Watch it work +## Watching it run Run a single row and the cell reports the run as it moves — queued, then running, then the value. Turn on auto-run and the whole column fills in a cascade; type a new company into a blank row and the pipeline runs it end to end, the domain first, then the score, without a single click. -## Every answer has a receipt +## Every cell records its run Take one value — a lead score of 75. The cell remembers the run that wrote it: open its menu and view the execution, a real trace where every block is a span, with its timing and cost. That's true all the way down the column: every cell is its own run. When a row fails, the cell says so, its trace shows which block failed and why, and re-running the cell re-runs the workflow for just that row. From 6201927114bf60973afbbb3ddc7a05a6467a93bc Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 2 Jul 2026 16:13:56 -0700 Subject: [PATCH 06/12] =?UTF-8?q?academy:=20all=20video=20players=20point?= =?UTF-8?q?=20at=20the=202K=20blob=20set=20(academy/.mp4)=20?= =?UTF-8?q?=E2=80=94=2020=20pages=20rewritten=20from=20academy-preview/*-l?= =?UTF-8?q?ight-with-intro,=20files/intro=20plays=20the=20new=20files-intr?= =?UTF-8?q?o=20cut,=20workflows/logs=20gains=20its=20src=20(video=20now=20?= =?UTF-8?q?exists);=20use-case=20placeholders=20stay=20src-less=20(no=20vi?= =?UTF-8?q?deos=20yet)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/docs/content/docs/en/academy/agents/block.mdx | 2 +- apps/docs/content/docs/en/academy/agents/intro.mdx | 2 +- apps/docs/content/docs/en/academy/agents/memory.mdx | 2 +- apps/docs/content/docs/en/academy/agents/skills.mdx | 2 +- apps/docs/content/docs/en/academy/agents/tool-calling.mdx | 2 +- apps/docs/content/docs/en/academy/chat/building.mdx | 2 +- apps/docs/content/docs/en/academy/chat/intro.mdx | 2 +- apps/docs/content/docs/en/academy/files/intro.mdx | 2 +- apps/docs/content/docs/en/academy/files/object.mdx | 2 +- apps/docs/content/docs/en/academy/index.mdx | 2 +- .../docs/content/docs/en/academy/knowledge-bases/connectors.mdx | 2 +- apps/docs/content/docs/en/academy/knowledge-bases/intro.mdx | 2 +- apps/docs/content/docs/en/academy/tables/intro.mdx | 2 +- apps/docs/content/docs/en/academy/tables/operations.mdx | 2 +- apps/docs/content/docs/en/academy/tables/workflow-columns.mdx | 2 +- apps/docs/content/docs/en/academy/workflows/branching.mdx | 2 +- apps/docs/content/docs/en/academy/workflows/deployment.mdx | 2 +- apps/docs/content/docs/en/academy/workflows/intro.mdx | 2 +- apps/docs/content/docs/en/academy/workflows/logs.mdx | 2 +- apps/docs/content/docs/en/academy/workflows/loops.mdx | 2 +- apps/docs/content/docs/en/academy/workflows/subworkflows.mdx | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/apps/docs/content/docs/en/academy/agents/block.mdx b/apps/docs/content/docs/en/academy/agents/block.mdx index 0f5f7479ed9..0952c4c6b3b 100644 --- a/apps/docs/content/docs/en/academy/agents/block.mdx +++ b/apps/docs/content/docs/en/academy/agents/block.mdx @@ -9,7 +9,7 @@ import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_QUALIFY_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' - +
diff --git a/apps/docs/content/docs/en/academy/agents/intro.mdx b/apps/docs/content/docs/en/academy/agents/intro.mdx index a9fb034c3c2..b3e6b989d49 100644 --- a/apps/docs/content/docs/en/academy/agents/intro.mdx +++ b/apps/docs/content/docs/en/academy/agents/intro.mdx @@ -8,7 +8,7 @@ import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview, CLASSIFY_WORKFLOW } from '@/components/workflow-preview' - +
diff --git a/apps/docs/content/docs/en/academy/agents/memory.mdx b/apps/docs/content/docs/en/academy/agents/memory.mdx index 90b2c08f9d8..3f61fafb1fe 100644 --- a/apps/docs/content/docs/en/academy/agents/memory.mdx +++ b/apps/docs/content/docs/en/academy/agents/memory.mdx @@ -9,7 +9,7 @@ import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_MEMORY_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' - +
diff --git a/apps/docs/content/docs/en/academy/agents/skills.mdx b/apps/docs/content/docs/en/academy/agents/skills.mdx index c476df962fc..e59f1eb6161 100644 --- a/apps/docs/content/docs/en/academy/agents/skills.mdx +++ b/apps/docs/content/docs/en/academy/agents/skills.mdx @@ -9,7 +9,7 @@ import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_SKILLS_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' - +
diff --git a/apps/docs/content/docs/en/academy/agents/tool-calling.mdx b/apps/docs/content/docs/en/academy/agents/tool-calling.mdx index fde4b81445b..380a0d65160 100644 --- a/apps/docs/content/docs/en/academy/agents/tool-calling.mdx +++ b/apps/docs/content/docs/en/academy/agents/tool-calling.mdx @@ -9,7 +9,7 @@ import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_TOOLS_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' - +
diff --git a/apps/docs/content/docs/en/academy/chat/building.mdx b/apps/docs/content/docs/en/academy/chat/building.mdx index dce144415fb..45bd5d00ac6 100644 --- a/apps/docs/content/docs/en/academy/chat/building.mdx +++ b/apps/docs/content/docs/en/academy/chat/building.mdx @@ -9,7 +9,7 @@ import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_CONTENT_AGENT_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' - +
diff --git a/apps/docs/content/docs/en/academy/chat/intro.mdx b/apps/docs/content/docs/en/academy/chat/intro.mdx index f4e9147aac5..fd54a236072 100644 --- a/apps/docs/content/docs/en/academy/chat/intro.mdx +++ b/apps/docs/content/docs/en/academy/chat/intro.mdx @@ -9,7 +9,7 @@ import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_SUPPORT_DESK_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' - +
diff --git a/apps/docs/content/docs/en/academy/files/intro.mdx b/apps/docs/content/docs/en/academy/files/intro.mdx index 7ea1bdd290d..7242d2c3115 100644 --- a/apps/docs/content/docs/en/academy/files/intro.mdx +++ b/apps/docs/content/docs/en/academy/files/intro.mdx @@ -9,7 +9,7 @@ import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_INVOICE_INTAKE_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' - +
diff --git a/apps/docs/content/docs/en/academy/files/object.mdx b/apps/docs/content/docs/en/academy/files/object.mdx index 0b9e7467c76..7775815cb0a 100644 --- a/apps/docs/content/docs/en/academy/files/object.mdx +++ b/apps/docs/content/docs/en/academy/files/object.mdx @@ -9,7 +9,7 @@ import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_INVOICE_INTAKE_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' - +
diff --git a/apps/docs/content/docs/en/academy/index.mdx b/apps/docs/content/docs/en/academy/index.mdx index 930824142f7..15795b51399 100644 --- a/apps/docs/content/docs/en/academy/index.mdx +++ b/apps/docs/content/docs/en/academy/index.mdx @@ -6,7 +6,7 @@ description: Sim is a unified workspace for building and operating AI systems import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' - + Sim is a unified workspace for **building and operating AI systems**. Everything you make lives in one place, and everything connects. diff --git a/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx b/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx index 9f085dc63f3..42093ad8344 100644 --- a/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx +++ b/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx @@ -7,7 +7,7 @@ import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' - +
diff --git a/apps/docs/content/docs/en/academy/knowledge-bases/intro.mdx b/apps/docs/content/docs/en/academy/knowledge-bases/intro.mdx index 850dc6d8c2a..260358a626e 100644 --- a/apps/docs/content/docs/en/academy/knowledge-bases/intro.mdx +++ b/apps/docs/content/docs/en/academy/knowledge-bases/intro.mdx @@ -8,7 +8,7 @@ import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview, SUPPORT_KB_WORKFLOW } from '@/components/workflow-preview' - +
diff --git a/apps/docs/content/docs/en/academy/tables/intro.mdx b/apps/docs/content/docs/en/academy/tables/intro.mdx index e7fc3183d48..4c4e9fec9bd 100644 --- a/apps/docs/content/docs/en/academy/tables/intro.mdx +++ b/apps/docs/content/docs/en/academy/tables/intro.mdx @@ -8,7 +8,7 @@ import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview, TABLE_ENRICH_WORKFLOW } from '@/components/workflow-preview' - +
diff --git a/apps/docs/content/docs/en/academy/tables/operations.mdx b/apps/docs/content/docs/en/academy/tables/operations.mdx index 15b46b63ce6..084385fa000 100644 --- a/apps/docs/content/docs/en/academy/tables/operations.mdx +++ b/apps/docs/content/docs/en/academy/tables/operations.mdx @@ -9,7 +9,7 @@ import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_TABLE_OPS_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' - +
diff --git a/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx b/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx index ee255b5f9f1..bac49cac518 100644 --- a/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx +++ b/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx @@ -7,7 +7,7 @@ import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' - +
diff --git a/apps/docs/content/docs/en/academy/workflows/branching.mdx b/apps/docs/content/docs/en/academy/workflows/branching.mdx index e721089334a..eebea7b2a7b 100644 --- a/apps/docs/content/docs/en/academy/workflows/branching.mdx +++ b/apps/docs/content/docs/en/academy/workflows/branching.mdx @@ -8,7 +8,7 @@ import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview, CONDITION_ROUTE_WORKFLOW } from '@/components/workflow-preview' - +
diff --git a/apps/docs/content/docs/en/academy/workflows/deployment.mdx b/apps/docs/content/docs/en/academy/workflows/deployment.mdx index cac52a21ca6..688610bf1c8 100644 --- a/apps/docs/content/docs/en/academy/workflows/deployment.mdx +++ b/apps/docs/content/docs/en/academy/workflows/deployment.mdx @@ -8,7 +8,7 @@ import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview, RESPONSE_API_WORKFLOW } from '@/components/workflow-preview' - +
diff --git a/apps/docs/content/docs/en/academy/workflows/intro.mdx b/apps/docs/content/docs/en/academy/workflows/intro.mdx index 633306c5d67..05fe0ef2f27 100644 --- a/apps/docs/content/docs/en/academy/workflows/intro.mdx +++ b/apps/docs/content/docs/en/academy/workflows/intro.mdx @@ -8,7 +8,7 @@ import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview, CLASSIFY_REPLY_WORKFLOW } from '@/components/workflow-preview' - +
diff --git a/apps/docs/content/docs/en/academy/workflows/logs.mdx b/apps/docs/content/docs/en/academy/workflows/logs.mdx index 9e8f888a991..019987c4cdc 100644 --- a/apps/docs/content/docs/en/academy/workflows/logs.mdx +++ b/apps/docs/content/docs/en/academy/workflows/logs.mdx @@ -8,7 +8,7 @@ import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview, ROUTER_TRIAGE_WORKFLOW } from '@/components/workflow-preview' - +
diff --git a/apps/docs/content/docs/en/academy/workflows/loops.mdx b/apps/docs/content/docs/en/academy/workflows/loops.mdx index c1ea512144c..36869f401dd 100644 --- a/apps/docs/content/docs/en/academy/workflows/loops.mdx +++ b/apps/docs/content/docs/en/academy/workflows/loops.mdx @@ -8,7 +8,7 @@ import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview, LOOP_WORKFLOW } from '@/components/workflow-preview' - +
diff --git a/apps/docs/content/docs/en/academy/workflows/subworkflows.mdx b/apps/docs/content/docs/en/academy/workflows/subworkflows.mdx index 39a8697e10b..8558dfba7cd 100644 --- a/apps/docs/content/docs/en/academy/workflows/subworkflows.mdx +++ b/apps/docs/content/docs/en/academy/workflows/subworkflows.mdx @@ -8,7 +8,7 @@ import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' import { WorkflowPreview, WORKFLOW_CALL_WORKFLOW } from '@/components/workflow-preview' - +
From 562415c4dfd8d00f3d1ed9e69e31ee4455c7839c Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 2 Jul 2026 16:32:07 -0700 Subject: [PATCH 07/12] biome: format academy-video-workflows.ts --- .../components/workflow-preview/academy-video-workflows.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/docs/components/workflow-preview/academy-video-workflows.ts b/apps/docs/components/workflow-preview/academy-video-workflows.ts index f9c78e0b70a..3f5457094a4 100644 --- a/apps/docs/components/workflow-preview/academy-video-workflows.ts +++ b/apps/docs/components/workflow-preview/academy-video-workflows.ts @@ -307,7 +307,12 @@ export const AV_SUPPORT_DESK_WORKFLOW: PreviewWorkflow = { edges: [ { id: 'start-triage', source: 'start', target: 'triage' }, { id: 'triage-condition', source: 'triage', target: 'condition' }, - { id: 'condition-escalate', source: 'condition', target: 'escalate', sourceHandle: 'condition-if' }, + { + id: 'condition-escalate', + source: 'condition', + target: 'escalate', + sourceHandle: 'condition-if', + }, { id: 'condition-reply', source: 'condition', target: 'reply', sourceHandle: 'condition-else' }, { id: 'escalate-log', source: 'escalate', target: 'log' }, { id: 'reply-log', source: 'reply', target: 'log' }, From c9de5fe17039ad3962a0434f7d6baa4e3182e5f8 Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 2 Jul 2026 16:35:11 -0700 Subject: [PATCH 08/12] =?UTF-8?q?fix=20(cursor/greptile):=20support-desk?= =?UTF-8?q?=20condition=20block=20uses=20branches=20+=20rows:[]=20(the=20r?= =?UTF-8?q?enderer's=20real=20fields=20=E2=80=94=20conditions:=20was=20nev?= =?UTF-8?q?er=20read,=20so=20Urgent=3F=20rendered=20without=20if/else=20ha?= =?UTF-8?q?ndles=20and=20branch=20edges=20dangled);=20bgColor=20aligned=20?= =?UTF-8?q?to=20the=20product=20condition=20example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/workflow-preview/academy-video-workflows.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/docs/components/workflow-preview/academy-video-workflows.ts b/apps/docs/components/workflow-preview/academy-video-workflows.ts index 3f5457094a4..012c4ec9ebf 100644 --- a/apps/docs/components/workflow-preview/academy-video-workflows.ts +++ b/apps/docs/components/workflow-preview/academy-video-workflows.ts @@ -269,9 +269,10 @@ export const AV_SUPPORT_DESK_WORKFLOW: PreviewWorkflow = { id: 'condition', name: 'Urgent?', type: 'condition', - bgColor: '#FF972B', + bgColor: '#FF752F', position: { x: 660, y: 60 }, - conditions: [ + rows: [], + branches: [ { id: 'condition-if', label: 'If', value: '' }, { id: 'condition-else', label: 'else' }, ], From fbc21a04f76be4984d432b3489ba435234b460dc Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 2 Jul 2026 16:41:16 -0700 Subject: [PATCH 09/12] biome: format meta.json (CI lint:check) --- apps/docs/content/docs/en/academy/meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/docs/content/docs/en/academy/meta.json b/apps/docs/content/docs/en/academy/meta.json index ba078e72cd6..e395214b76c 100644 --- a/apps/docs/content/docs/en/academy/meta.json +++ b/apps/docs/content/docs/en/academy/meta.json @@ -36,4 +36,4 @@ "use-cases/monitoring-research", "use-cases/sales-data-enrichment" ] -} \ No newline at end of file +} From 09850827b55c1571ebc9d26cbfc78645e1bf19ec Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 2 Jul 2026 16:44:25 -0700 Subject: [PATCH 10/12] =?UTF-8?q?fix=20(cursor):=20Start=20exposes=20,=20not=20/=20=E2=80=94=20sup?= =?UTF-8?q?port-desk=20Triage=20and=20content-agent=20Writer=20message=20r?= =?UTF-8?q?ows=20now=20match=20the=20product's=20Start=20output=20(same=20?= =?UTF-8?q?pattern=20as=20the=20file's=20other=20workflows)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/workflow-preview/academy-video-workflows.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/docs/components/workflow-preview/academy-video-workflows.ts b/apps/docs/components/workflow-preview/academy-video-workflows.ts index 012c4ec9ebf..290d47f8b65 100644 --- a/apps/docs/components/workflow-preview/academy-video-workflows.ts +++ b/apps/docs/components/workflow-preview/academy-video-workflows.ts @@ -260,7 +260,7 @@ export const AV_SUPPORT_DESK_WORKFLOW: PreviewWorkflow = { bgColor: '#33C482', position: { x: 320, y: 60 }, rows: [ - { title: 'Messages', value: '' }, + { title: 'Messages', value: '' }, { title: 'Model', value: 'claude-sonnet-4-6' }, ], tools: [{ type: 'knowledge', name: 'Help Center', bgColor: '#00B0B0' }], @@ -352,7 +352,7 @@ export const AV_CONTENT_AGENT_WORKFLOW: PreviewWorkflow = { position: { x: 150, y: 62 }, parentId: 'candidates', rows: [ - { title: 'Messages', value: '' }, + { title: 'Messages', value: '' }, { title: 'Model', value: 'claude-sonnet-4-6' }, ], }, From de357978c1a3e14881cbdd6f92991a583cce44d4 Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 2 Jul 2026 17:30:43 -0700 Subject: [PATCH 11/12] =?UTF-8?q?academy=20lesson=20material=20(CTO=20ask)?= =?UTF-8?q?:=20FAQ=20on=20every=20lesson=20page=20+=20the=20index=20(groun?= =?UTF-8?q?ded=20in=20the=20audited=20codebase=20facts:=20memory=20modes,?= =?UTF-8?q?=20the=20ten=20table=20ops,=20coerce/refuse,=20deploy=20surface?= =?UTF-8?q?s=20+=20draft-vs-deployed,=20file=20parser=20formats;=20the=20F?= =?UTF-8?q?AQ=20component=20emits=20FAQPage=20JSON-LD=20for=20SEO);=20em-d?= =?UTF-8?q?ashes=20202=20=E2=86=92=200=20with=20hand-fixed=20splices;=20ad?= =?UTF-8?q?ded=20copy=20where=20sparse=20(agent=20block=20placement,=20whe?= =?UTF-8?q?n-to-use-memory);=20SEO=20phrasing=20sprinkled=20naturally=20in?= =?UTF-8?q?to=20FAQ=20answers=20('visual=20platform=20for=20building=20AI?= =?UTF-8?q?=20workflows=20and=20agents',=20'no-code',=20model=20names),=20?= =?UTF-8?q?not=20over-indexed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/docs/en/academy/agents/block.mdx | 26 +++++++++++---- .../content/docs/en/academy/agents/intro.mdx | 32 ++++++++++++------- .../content/docs/en/academy/agents/memory.mdx | 22 ++++++++++--- .../content/docs/en/academy/agents/skills.mdx | 22 +++++++++---- .../docs/en/academy/agents/tool-calling.mdx | 21 ++++++++---- .../content/docs/en/academy/chat/building.mdx | 26 +++++++++------ .../content/docs/en/academy/chat/intro.mdx | 28 ++++++++++------ .../content/docs/en/academy/files/intro.mdx | 22 +++++++++---- .../content/docs/en/academy/files/object.mdx | 22 +++++++++---- apps/docs/content/docs/en/academy/index.mdx | 19 ++++++++--- .../en/academy/knowledge-bases/connectors.mdx | 20 ++++++++---- .../docs/en/academy/knowledge-bases/intro.mdx | 26 +++++++++------ .../content/docs/en/academy/tables/intro.mdx | 26 +++++++++------ .../docs/en/academy/tables/operations.mdx | 16 +++++++--- .../en/academy/tables/workflow-columns.mdx | 22 +++++++++---- .../academy/use-cases/document-extraction.mdx | 2 +- .../academy/use-cases/monitoring-research.mdx | 6 ++-- .../use-cases/sales-data-enrichment.mdx | 2 +- .../en/academy/use-cases/slack-it-triage.mdx | 4 +-- .../docs/en/academy/workflows/branching.mdx | 21 ++++++++---- .../docs/en/academy/workflows/deployment.mdx | 27 ++++++++++------ .../docs/en/academy/workflows/intro.mdx | 26 +++++++++------ .../docs/en/academy/workflows/logs.mdx | 28 ++++++++++------ .../docs/en/academy/workflows/loops.mdx | 23 ++++++++----- .../en/academy/workflows/subworkflows.mdx | 21 ++++++++---- 25 files changed, 342 insertions(+), 168 deletions(-) diff --git a/apps/docs/content/docs/en/academy/agents/block.mdx b/apps/docs/content/docs/en/academy/agents/block.mdx index 0952c4c6b3b..b21b7c71742 100644 --- a/apps/docs/content/docs/en/academy/agents/block.mdx +++ b/apps/docs/content/docs/en/academy/agents/block.mdx @@ -1,11 +1,12 @@ --- title: The Agent Block -description: Inside the Agent block, a run becomes a conversation — a message stack the model reads, a swappable brain, and an output bundle every later block can use. +description: Inside the Agent block, a run becomes a conversation: a message stack the model reads, a swappable brain, and an output bundle every later block can use. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_QUALIFY_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -14,13 +15,13 @@ import { AV_QUALIFY_WORKFLOW } from '@/components/workflow-preview/academy-video
-On the canvas, an Agent block looks like any other step: a run arrives at its input handle, and a result leaves on the other side. Inside, it's a conversation machine — this video follows the data in, station by station. +On the canvas, an Agent block looks like any other step: a run arrives at its input handle, and a result leaves on the other side. Inside, it's a conversation machine. This video follows the data in, station by station. @@ -55,17 +56,28 @@ On the canvas, an Agent block looks like any other step: a run arrives at its in
-Here is the workflow the video rides through — the Qualify agent between its input and its result: +Here is the workflow the video rides through: the Qualify agent between its input and its result: ## What's inside the block -The first station is the message stack: your **system message** (the standing instructions), any **history** you preload — worked examples or an earlier conversation — and the newest **user message**, which usually arrives from an earlier block through a connection tag. The second station is the **model**: the brain that reads the whole stack. Sim supports the frontier providers, and because the block stays the same while the model changes, swapping brains never means rebuilding the step. +The first station is the message stack: your **system message** (the standing instructions), any **history** you preload, worked examples or an earlier conversation, and the newest **user message**, which usually arrives from an earlier block through a connection tag. The second station is the **model**: the brain that reads the whole stack. Sim supports the frontier providers, and because the block stays the same while the model changes, swapping brains never means rebuilding the step. ## What a run costs and returns -When the run reaches the model, every message on the stack ships as input tokens; the reply streams back as output tokens. If tools are attached, the model can call them mid-run. Everything the run did — the content it wrote, the model that ran, the token bill, the tool calls — lands in the block's outputs, where any later block can read it. +When the run reaches the model, every message on the stack ships as input tokens; the reply streams back as output tokens. If tools are attached, the model can call them mid-run. Everything the run did, the content it wrote, the model that ran, the token bill, the tool calls, lands in the block's outputs, where any later block can read it. + +## Where it fits + +The Agent block is the reasoning step of an AI workflow. Everything else in Sim's workflow builder is deterministic: triggers fire, blocks transform data, tables store it. The Agent block is where a language model reads the conversation you configured and decides what to write. Most AI agents you build in Sim are ordinary workflows with one or more Agent blocks doing the thinking. + +." }, +]} /> ## Related documentation diff --git a/apps/docs/content/docs/en/academy/agents/intro.mdx b/apps/docs/content/docs/en/academy/agents/intro.mdx index b3e6b989d49..4c195d6779c 100644 --- a/apps/docs/content/docs/en/academy/agents/intro.mdx +++ b/apps/docs/content/docs/en/academy/agents/intro.mdx @@ -1,11 +1,12 @@ --- title: Agents -description: An AI agent is a Sim workflow that uses Agent blocks — the reasoning engine you shape, parameterize, and compose into intelligent processes. +description: An AI agent is a Sim workflow that uses Agent blocks: the reasoning engine you shape, parameterize, and compose into intelligent processes. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview, CLASSIFY_WORKFLOW } from '@/components/workflow-preview' @@ -13,13 +14,13 @@ import { WorkflowPreview, CLASSIFY_WORKFLOW } from '@/components/workflow-previe
-In Sim, you build AI agents as **workflows that use the Agent block**. There's no separate "agent" object to learn — an AI agent *is* a workflow, and the Agent block is where it thinks. +In Sim, you build AI agents as **workflows that use the Agent block**. There's no separate "agent" object to learn: an AI agent *is* a workflow, and the Agent block is where it thinks. ## Inside the Agent block -The Agent block is **a chat with a model, spawned programmatically**. Picture a conversation in ChatGPT or Claude: the block's **Messages** parameter is exactly those messages, except you set them — you decide what instructions, context, and earlier outputs go in. The model reasons over that and returns a result the rest of the workflow can read. +The Agent block is **a chat with a model, spawned programmatically**. Picture a conversation in ChatGPT or Claude: the block's **Messages** parameter is exactly those messages, except you set them, you decide what instructions, context, and earlier outputs go in. The model reasons over that and returns a result the rest of the workflow can read. -The Agent block is where it *thinks* — the reasoning engine of your agent. You design the blocks *around* it to shape how the agent processes data: what it reads before it reasons, what it does with the result after. +The Agent block is where it *thinks*, the reasoning engine of your agent. You design the blocks *around* it to shape how the agent processes data: what it reads before it reasons, what it does with the result after. ## Tools and skills Two parameters extend the Agent block, and both fit the chat-box picture: -- **Tools** are the functions and blocks the agent can decide to call while answering — search the web, send an email, run another workflow. They're the tool calls the model makes mid-response. -- **Skills** are prompt modules the model loads on demand — like a manual it looks up only when a task calls for it, instead of stuffing everything into every prompt. +- **Tools** are the functions and blocks the agent can decide to call while answering, search the web, send an email, run another workflow. They're the tool calls the model makes mid-response. +- **Skills** are prompt modules the model loads on demand, like a manual it looks up only when a task calls for it, instead of stuffing everything into every prompt. ## Make a workflow agentic -The clearest way to see an agent isn't to build one from nothing — it's to take a **deterministic workflow and let an agent into it**. Replace a fixed rule with an agent that *decides* the path (routing), or *augment* a step with real reasoning — or both. Same workflow, now with judgment in it. +The clearest way to see an agent isn't to build one from nothing, it's to take a **deterministic workflow and let an agent into it**. Replace a fixed rule with an agent that *decides* the path (routing), or *augment* a step with real reasoning, or both. Same workflow, now with judgment in it. ## Composing intelligence -Your ability to compose workflows that make **multiple agent calls** is central to designing intelligent processes. And every agentic workflow you build becomes a building block — your workspace's library of agents composes into larger AI systems. +Your ability to compose workflows that make **multiple agent calls** is central to designing intelligent processes. And every agentic workflow you build becomes a building block: your workspace's library of agents composes into larger AI systems. -Start with one Agent block; the platform scales as your ambition does. The most sophisticated systems are just more of these, composed — more agent blocks swapping in, more reasoning, more reach, all from the same model you learned here. +Start with one Agent block; the platform scales as your ambition does. The most sophisticated systems are just more of these, composed, more agent blocks swapping in, more reasoning, more reach, all from the same model you learned here. + + ## Related documentation diff --git a/apps/docs/content/docs/en/academy/agents/memory.mdx b/apps/docs/content/docs/en/academy/agents/memory.mdx index 3f61fafb1fe..31b1a1d1e27 100644 --- a/apps/docs/content/docs/en/academy/agents/memory.mdx +++ b/apps/docs/content/docs/en/academy/agents/memory.mdx @@ -1,11 +1,12 @@ --- title: Memory -description: One setting gives an agent memory — a conversation ID under which every turn is kept, so the next run starts from the conversation so far. +description: One setting gives an agent memory: a conversation ID under which every turn is kept, so the next run starts from the conversation so far. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_MEMORY_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -14,13 +15,13 @@ import { AV_MEMORY_WORKFLOW } from '@/components/workflow-preview/academy-video-
-By default, an agent keeps nothing between runs — every conversation starts completely fresh. The Memory setting changes that: choose Conversation, give it a conversation ID, and everything said under that key is kept and loaded back before the model runs. +By default, an agent keeps nothing between runs: every conversation starts completely fresh. The Memory setting changes that: choose Conversation, give it a conversation ID, and everything said under that key is kept and loaded back before the model runs. ## Related documentation diff --git a/apps/docs/content/docs/en/academy/agents/skills.mdx b/apps/docs/content/docs/en/academy/agents/skills.mdx index e59f1eb6161..1a6ccdd9168 100644 --- a/apps/docs/content/docs/en/academy/agents/skills.mdx +++ b/apps/docs/content/docs/en/academy/agents/skills.mdx @@ -1,11 +1,12 @@ --- title: Skills -description: A skill is a written method the agent reads when it decides it's relevant — turning a vague guess into a sourced, repeatable procedure without crowding the prompt. +description: A skill is a written method the agent reads when it decides it's relevant, turning a vague guess into a sourced, repeatable procedure without crowding the prompt. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_SKILLS_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -14,17 +15,17 @@ import { AV_SKILLS_WORKFLOW } from '@/components/workflow-preview/academy-video-
-An agent with tools but no guidance does the minimum: one quick search, then a hedged guess. A **skill** fixes that — a written method the agent can read, like a manual you look up when the situation calls for it. Attach one, and the same run follows the procedure: every claim sourced, every gap flagged. +An agent with tools but no guidance does the minimum: one quick search, then a hedged guess. A **skill** fixes that: a written method the agent can read, like a manual you look up when the situation calls for it. Attach one, and the same run follows the procedure: every claim sourced, every gap flagged. @@ -60,16 +61,23 @@ Here is the agent from the video with the skill attached: ## The same run, with and without the skill -The video runs the same lead-qualification task twice. Without a skill, the agent searches once and guesses — "probably Series B, maybe a hundred people." With Exa's `answer-with-citations` skill attached, it loads the method mid-run, turns each claim into a specific factual question, pulls a sourced answer for every one, and returns a verdict where each figure carries its citation. +The video runs the same lead-qualification task twice. Without a skill, the agent searches once and guesses: "probably Series B, maybe a hundred people." With Exa's `answer-with-citations` skill attached, it loads the method mid-run, turns each claim into a specific factual question, pulls a sourced answer for every one, and returns a verdict where each figure carries its citation. ## Why not just a longer prompt? -Skills keep procedure out of the prompt. Only the name and one-line description stay in view; the full method loads only when the agent judges it relevant — so you can attach many skills without bloating context, and the agent picks the right manual for the moment. +Skills keep procedure out of the prompt. Only the name and one-line description stay in view; the full method loads only when the agent judges it relevant: so you can attach many skills without bloating context, and the agent picks the right manual for the moment. ## Ready to use Adding a skill is the same motion as adding a tool: pick it in the block's Skills section and it shows on the block. Integrations ship curated skills out of the box, and skills you write are shared across your workspace. + + ## Related documentation - [Skills](/agents/skills) diff --git a/apps/docs/content/docs/en/academy/agents/tool-calling.mdx b/apps/docs/content/docs/en/academy/agents/tool-calling.mdx index 380a0d65160..d93f5ee9856 100644 --- a/apps/docs/content/docs/en/academy/agents/tool-calling.mdx +++ b/apps/docs/content/docs/en/academy/agents/tool-calling.mdx @@ -1,11 +1,12 @@ --- title: Tool Calling -description: Give an agent tools and it works in a loop — deciding, calling, reading results, and converging on an answer you can audit call-by-call in the logs. +description: Give an agent tools and it works in a loop, deciding, calling, reading results, and converging on an answer you can audit call-by-call in the logs. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_TOOLS_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -14,7 +15,7 @@ import { AV_TOOLS_WORKFLOW } from '@/components/workflow-preview/academy-video-w
-A plain Agent block is text in, one model pass, text out — it can't look anything up. Give it tools, and it starts working in a **loop**: deciding which tool it needs, calling it (several at once when it can), reading what comes back, and calling again with better arguments until it has enough to answer. +A plain Agent block is text in, one model pass, text out, it can't look anything up. Give it tools, and it starts working in a **loop**: deciding which tool it needs, calling it (several at once when it can), reading what comes back, and calling again with better arguments until it has enough to answer. ## Related documentation diff --git a/apps/docs/content/docs/en/academy/chat/building.mdx b/apps/docs/content/docs/en/academy/chat/building.mdx index 45bd5d00ac6..ca2fd54dbdd 100644 --- a/apps/docs/content/docs/en/academy/chat/building.mdx +++ b/apps/docs/content/docs/en/academy/chat/building.mdx @@ -1,11 +1,12 @@ --- title: Building with Chat -description: Describe the system you want in plain language, and Sim builds it — then tests it, debugs it, shows you the evidence, and deploys it, all inside one conversation. +description: Describe the system you want in plain language, and Sim builds it, then tests it, debugs it, shows you the evidence, and deploys it, all inside one conversation. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_CONTENT_AGENT_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -14,13 +15,13 @@ import { AV_CONTENT_AGENT_WORKFLOW } from '@/components/workflow-preview/academy
-You can build a whole workflow without dragging a single block. Describe the system you want — an agent that turns an idea into a finished post, with a draft, a hero image, a slide deck, and a voiceover — and Sim lays out every block, wired and parameterized, in front of you. +You can build a whole workflow without dragging a single block. Describe the system you want: an agent that turns an idea into a finished post, with a draft, a hero image, a slide deck, and a voiceover, and Sim lays out every block, wired and parameterized, in front of you. @@ -57,15 +58,15 @@ You can build a whole workflow without dragging a single block. Describe the sys ## From description to blocks -The chat turns your description into real structure: a parallel container drafting candidate posts, generation blocks for the image, the deck, and the voiceover, an evaluator scoring the results, and a table keeping every score. Nothing about the result is special — it's a normal workflow you could have built by hand, which means you can open it, read it, and change it. +The chat turns your description into real structure: a parallel container drafting candidate posts, generation blocks for the image, the deck, and the voiceover, an evaluator scoring the results, and a table keeping every score. Nothing about the result is special, it's a normal workflow you could have built by hand, which means you can open it, read it, and change it. -Here is the shape of the workflow the chat builds in the video — candidates drafted in parallel, an evaluator scoring them, and the scores kept in a table: +Here is the shape of the workflow the chat builds in the video, candidates drafted in parallel, an evaluator scoring them, and the scores kept in a table: ## It tests and fixes itself -Sim doesn't hand you an untested guess. It runs the workflow immediately, and when a step fails — the image block missing an aspect ratio — it reads the error, patches the parameter, and runs again. You watch the failure and the fix happen on the canvas, in the log, and in the conversation at once. +Sim doesn't hand you an untested guess. It runs the workflow immediately, and when a step fails (here, the image block missing an aspect ratio), it reads the error, patches the parameter, and runs again. You watch the failure and the fix happen on the canvas, in the log, and in the conversation at once. ## Inspecting the run @@ -73,7 +74,14 @@ The run record shows every step with its timing and output: the draft, the image ## Deploying -Deploying is one more message in the conversation. The workflow deploys behind a live endpoint, ready for whatever you send it — and it remains a workflow in your workspace: inspectable, schedulable, and callable from everything else you build. +Deploying is one more message in the conversation. The workflow deploys behind a live endpoint, ready for whatever you send it, and it remains a workflow in your workspace: inspectable, schedulable, and callable from everything else you build. + + ## Related documentation diff --git a/apps/docs/content/docs/en/academy/chat/intro.mdx b/apps/docs/content/docs/en/academy/chat/intro.mdx index fd54a236072..c07e45de1ad 100644 --- a/apps/docs/content/docs/en/academy/chat/intro.mdx +++ b/apps/docs/content/docs/en/academy/chat/intro.mdx @@ -1,11 +1,12 @@ --- title: Chat -description: The chat in Sim is your workspace control plane — one conversation that queries your tables, searches your docs, runs and schedules workflows, researches the outside world, and composes it all into new systems. +description: The chat in Sim is your workspace control plane: one conversation that queries your tables, searches your docs, runs and schedules workflows, researches the outside world, and composes it all into new systems. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_SUPPORT_DESK_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -14,25 +15,25 @@ import { AV_SUPPORT_DESK_WORKFLOW } from '@/components/workflow-preview/academy-
-The chat lives inside your workspace, and everything in it — your workflows, tables, knowledge bases, and files — is within its reach. You ask from one place, and Sim works across all of it: answering from your data, operating your workflows, and shaping new systems around the task. +The chat lives inside your workspace, and everything in it, your workflows, tables, knowledge bases, and files, is within its reach. You ask from one place, and Sim works across all of it: answering from your data, operating your workflows, and shaping new systems around the task. @@ -55,24 +56,31 @@ The chat lives inside your workspace, and everything in it — your workflows, t ## Everything within reach -The chat isn't a help box beside your workspace — it's a control plane over it. Every resource you've built is addressable in plain language: the tickets table, the help-center knowledge base, the support-desk workflow. When you ask a question, Sim decides which resources the answer needs, touches them in parallel, and composes the reply. +The chat isn't a help box beside your workspace, it's a control plane over it. Every resource you've built is addressable in plain language: the tickets table, the help-center knowledge base, the support-desk workflow. When you ask a question, Sim decides which resources the answer needs, touches them in parallel, and composes the reply. -Here is the workflow the chat operates in the video — the support desk that triages a ticket, escalates or replies, and logs the result: +Here is the workflow the chat operates in the video: the support desk that triages a ticket, escalates or replies, and logs the result: ## Asking it to act -Telling the chat to *do* something is the same motion as asking it something. Run the backlog through the support desk, ship the weekly digest, put it on a schedule for Friday mornings — each lands as a real operation, confirmed with a toast, with the run's log available the moment it finishes. +Telling the chat to *do* something is the same motion as asking it something. Run the backlog through the support desk, ship the weekly digest, put it on a schedule for Friday mornings: each lands as a real operation, confirmed with a toast, with the run's log available the moment it finishes. ## Research beyond the workspace -The chat can research beyond your workspace: search X and Reddit for this week's conversations, pull the rising themes, and file them as a new document. What it learns becomes a resource like any other — ready for the next ask. +The chat can research beyond your workspace: search X and Reddit for this week's conversations, pull the rising themes, and file them as a new document. What it learns becomes a resource like any other, ready for the next ask. ## Composing a new workflow One sentence can compose what the chat just touched into a new workflow. A watcher that reads the trends file on a schedule, matches them against your tickets, and calls your support-desk workflow when something hits. You described it, and the chat assembled it from the resources you already have. + + ## Related documentation - [Chat overview](/mothership) diff --git a/apps/docs/content/docs/en/academy/files/intro.mdx b/apps/docs/content/docs/en/academy/files/intro.mdx index 7242d2c3115..83fd2730a60 100644 --- a/apps/docs/content/docs/en/academy/files/intro.mdx +++ b/apps/docs/content/docs/en/academy/files/intro.mdx @@ -1,11 +1,12 @@ --- title: Files -description: Sim natively supports files — store, reference, and pass around documents and media so workflows can read and produce real assets like PDFs, images, audio, and video. +description: Sim natively supports files, store, reference, and pass around documents and media so workflows can read and produce real assets like PDFs, images, audio, and video. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_INVOICE_INTAKE_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -14,13 +15,13 @@ import { AV_INVOICE_INTAKE_WORKFLOW } from '@/components/workflow-preview/academ
-Sim has native support for **files** — a way to store, reference, and pass around documents, media, and generated outputs, so your workflows can read and produce real assets: PDFs, images, audio, video. +Sim has native support for **files**, a way to store, reference, and pass around documents, media, and generated outputs, so your workflows can read and produce real assets: PDFs, images, audio, video. @@ -62,7 +63,7 @@ Workflows **consume** files and **produce** them, and hand them between blocks l ## What you can build -The point isn't a new concept to learn — it's recognizing that the file-based operations you already picture are supported here: +The point isn't a new concept to learn, it's recognizing that the file-based operations you already picture are supported here: - Attach a generated report to an email. - Transcribe an audio clip that came in through a trigger. @@ -70,7 +71,14 @@ The point isn't a new concept to learn — it's recognizing that the file-based - Extract structured fields from a batch of PDFs. - Produce a rendered document, chart, or audio file as a workflow's output. -If you're thinking "could I automate the thing that involves *that* document?" — the answer is almost always yes. Files are how Sim handles the real assets your processes already run on. +If you're thinking "could I automate the thing that involves *that* document?", the answer is almost always yes. Files are how Sim handles the real assets your processes already run on. + + ## Related documentation diff --git a/apps/docs/content/docs/en/academy/files/object.mdx b/apps/docs/content/docs/en/academy/files/object.mdx index 7775815cb0a..86ece899e1d 100644 --- a/apps/docs/content/docs/en/academy/files/object.mdx +++ b/apps/docs/content/docs/en/academy/files/object.mdx @@ -1,11 +1,12 @@ --- title: The File Object -description: Every file in Sim — whatever made it — travels as the same object, so producers and consumers compose without special handling. +description: Every file in Sim, whatever made it, travels as the same object, so producers and consumers compose without special handling. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_INVOICE_INTAKE_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -14,7 +15,7 @@ import { AV_INVOICE_INTAKE_WORKFLOW } from '@/components/workflow-preview/academ
-Your workflows make files from very different places — an email attachment, a generated image, synthesized speech, a parsed document. Inside the workflow, every one of them travels as the same thing: a file object. +Your workflows make files from very different places: an email attachment, a generated image, synthesized speech, a parsed document. Inside the workflow, every one of them travels as the same thing: a file object. @@ -58,15 +59,22 @@ Your workflows make files from very different places — an email attachment, a ## The common shape -Catch a file mid-run and look inside: an I.D., a name, a URL where the bytes live, a size, a type, and the content itself. A couple more fields exist under the hood, but the shape never changes — which is exactly what lets a Gmail attachment, a generated image, and a text-to-speech clip all feed the same agent without special handling. +Catch a file mid-run and look inside: an I.D., a name, a URL where the bytes live, a size, a type, and the content itself. A couple more fields exist under the hood, but the shape never changes: which is exactly what lets a Gmail attachment, a generated image, and a text-to-speech clip all feed the same agent without special handling. -The video closes on this machine — one file object riding the whole chain: +The video closes on this machine: one file object riding the whole chain: ## Why one shape matters -Swap which producer feeds the agent, and nothing on the agent side changes. Point the same object at a different consumer — an email, cloud storage, another agent — and it just rides. In the closing machine, an invoice lands in Gmail, gets parsed, an agent extracts the fields, and the result settles in the database — one object carried the whole way through. +Swap which producer feeds the agent, and nothing on the agent side changes. Point the same object at a different consumer, an email, cloud storage, another agent, and it just rides. In the closing machine, an invoice lands in Gmail, gets parsed, an agent extracts the fields, and the result settles in the database: one object carried the whole way through. + +. The agent reads the document content directly." }, + { question: "Do generated files work the same as uploaded ones?", answer: "Yes. An image from a generator, an audio clip from text-to-speech, and an email attachment all travel as the same object, so downstream blocks treat them identically." }, +]} /> ## Related documentation diff --git a/apps/docs/content/docs/en/academy/index.mdx b/apps/docs/content/docs/en/academy/index.mdx index 15795b51399..d1d8668eafc 100644 --- a/apps/docs/content/docs/en/academy/index.mdx +++ b/apps/docs/content/docs/en/academy/index.mdx @@ -1,10 +1,11 @@ --- title: What is Sim? -description: Sim is a unified workspace for building and operating AI systems — data, workflows, and the integrations that connect them to the outside world. +description: Sim is a unified workspace for building and operating AI systems, data, workflows, and the integrations that connect them to the outside world. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' +import { FAQ } from '@/components/ui/faq' @@ -14,7 +15,7 @@ Sim is a unified workspace for **building and operating AI systems**. Everything items={[ { title: 'What a workspace is', - body: 'A workspace holds two things: resources — your data — and workflows — your processes. Both live together and reference each other.', + body: 'A workspace holds two things: resources, your data, and workflows: your processes. Both live together and reference each other.', }, { title: 'How the pieces relate', @@ -28,13 +29,13 @@ Sim is a unified workspace for **building and operating AI systems**. Everything A **workspace** is a collection of shared resources and the workflows that use them. - **Resources** are your data: [tables](/academy/tables/intro) (structured records), [knowledge bases](/academy/knowledge-bases/intro) (searchable memory), and [files](/academy/files/intro) (documents and media). -- **Workflows** are your processes — the agents and automations that read those resources, act, and write results back. +- **Workflows** are your processes: the agents and automations that read those resources, act, and write results back. -Everything in a workspace can see everything else in it. A workflow reads a table, searches a knowledge base, produces a file — and the next workflow picks up where it left off. +Everything in a workspace can see everything else in it. A workflow reads a table, searches a knowledge base, produces a file, and the next workflow picks up where it left off. ## Integrations connect you to the outside world -**Integrations** are plugins. They let your resources and workflows reach services beyond Sim — send a Slack message, read a Gmail inbox, write a row to a CRM, call any API. You connect an account once, and any workflow can use it. +**Integrations** are plugins. They let your resources and workflows reach services beyond Sim, send a Slack message, read a Gmail inbox, write a row to a CRM, call any API. You connect an account once, and any workflow can use it. So the whole picture is small: a workspace is **data + processes**, integrations plug it into **everything else**, and the rest of this course is just learning each piece and watching them compose. @@ -42,3 +43,11 @@ So the whole picture is small: a workspace is **data + processes**, integrations - [Introduction](/introduction) - [Getting started](/getting-started) + + + diff --git a/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx b/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx index 42093ad8344..7eb7d137fdf 100644 --- a/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx +++ b/apps/docs/content/docs/en/academy/knowledge-bases/connectors.mdx @@ -1,24 +1,25 @@ --- title: Connectors -description: A connector keeps a knowledge base in sync with the tool where your documents actually live — first import, steady re-sync, changes and removals included. +description: A connector keeps a knowledge base in sync with the tool where your documents actually live, first import, steady re-sync, changes and removals included. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq'
-You can upload documents to a knowledge base by hand — but your documents usually live somewhere that keeps changing. A connector links the knowledge base to that source, imports everything in scope, and then keeps it current on a schedule. +You can upload documents to a knowledge base by hand, but your documents usually live somewhere that keeps changing. A connector links the knowledge base to that source, imports everything in scope, and then keeps it current on a schedule. @@ -55,11 +56,18 @@ You can upload documents to a knowledge base by hand — but your documents usua ## The lifecycle -The video follows one connector through its whole life: picking Notion as the source, authorizing the account, scoping which pages sync, and choosing the frequency. The first import brings everything in scope into the knowledge base as chunks. From then on the connector re-syncs on schedule — a page edited at the source is re-imported, and a page deleted at the source leaves the knowledge base. +The video follows one connector through its whole life: picking Notion as the source, authorizing the account, scoping which pages sync, and choosing the frequency. The first import brings everything in scope into the knowledge base as chunks. From then on the connector re-syncs on schedule: a page edited at the source is re-imported, and a page deleted at the source leaves the knowledge base. ## Why it matters -Knowledge that drifts out of date is worse than no knowledge — an agent will confidently answer from a stale document. A connector makes the knowledge base track the source, so the answers your agents give reflect what your documents say now. +Knowledge that drifts out of date is worse than no knowledge: an agent will confidently answer from a stale document. A connector makes the knowledge base track the source, so the answers your agents give reflect what your documents say now. + + ## Related documentation diff --git a/apps/docs/content/docs/en/academy/knowledge-bases/intro.mdx b/apps/docs/content/docs/en/academy/knowledge-bases/intro.mdx index 260358a626e..1f19ccd1e47 100644 --- a/apps/docs/content/docs/en/academy/knowledge-bases/intro.mdx +++ b/apps/docs/content/docs/en/academy/knowledge-bases/intro.mdx @@ -1,11 +1,12 @@ --- title: Knowledge Bases -description: Knowledge bases give your workflows searchable memory — large volumes of text an agent can search by meaning and use to ground its answers. +description: Knowledge bases give your workflows searchable memory, large volumes of text an agent can search by meaning and use to ground its answers. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview, SUPPORT_KB_WORKFLOW } from '@/components/workflow-preview' @@ -13,7 +14,7 @@ import { WorkflowPreview, SUPPORT_KB_WORKFLOW } from '@/components/workflow-prev
-A **knowledge base** gives your workflows searchable memory. You put in large volumes of text, and an agent retrieves just the parts that matter — by meaning, not keywords. +A **knowledge base** gives your workflows searchable memory. You put in large volumes of text, and an agent retrieves just the parts that matter, by meaning, not keywords. ## Inside a knowledge base -A knowledge base is a resource that lives in your workspace — you can have several. Open one and it holds **documents**, plus **connectors** that bring in and keep documents in sync from outside sources. +A knowledge base is a resource that lives in your workspace, you can have several. Open one and it holds **documents**, plus **connectors** that bring in and keep documents in sync from outside sources. -Sim automatically **indexes and embeds** every document into searchable **chunks**, so the contents become queryable by meaning — you don't manage any of that yourself. +Sim automatically **indexes and embeds** every document into searchable **chunks**, so the contents become queryable by meaning, you don't manage any of that yourself. ## Searching by meaning -Use a Knowledge block with a query and it returns the most relevant chunks, each with a **similarity score** — how closely it matches the *meaning* of the query, not its words. So "refund timelines" can match a passage that says "we process returns within 14 days," even with no shared words. +Use a Knowledge block with a query and it returns the most relevant chunks, each with a **similarity score**, how closely it matches the *meaning* of the query, not its words. So "refund timelines" can match a passage that says "we process returns within 14 days," even with no shared words. ## Grounding an answer -On its own, that's retrieval. The power comes one step later: feed those chunks into an [Agent](/academy/agents/intro) block's context, and the model answers from your actual documents — accurate, up to date, and able to **cite** where each fact came from. That's grounding plus retrieval. +On its own, that's retrieval. The power comes one step later: feed those chunks into an [Agent](/academy/agents/intro) block's context, and the model answers from your actual documents, accurate, up to date, and able to **cite** where each fact came from. That's grounding plus retrieval. -Knowledge bases power systems that need to give agents accurate, current context — and they're where you store what your systems learn over time. +Knowledge bases power systems that need to give agents accurate, current context, and they're where you store what your systems learn over time. + + ## Related documentation diff --git a/apps/docs/content/docs/en/academy/tables/intro.mdx b/apps/docs/content/docs/en/academy/tables/intro.mdx index 4c4e9fec9bd..c700d582cf6 100644 --- a/apps/docs/content/docs/en/academy/tables/intro.mdx +++ b/apps/docs/content/docs/en/academy/tables/intro.mdx @@ -1,11 +1,12 @@ --- title: Tables -description: Tables store structured data — columns as types, rows as entries — a spreadsheet or lightweight database your workflows read, write, and operate on at scale. +description: Tables store structured data, columns as types, rows as entries, a spreadsheet or lightweight database your workflows read, write, and operate on at scale. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview, TABLE_ENRICH_WORKFLOW } from '@/components/workflow-preview' @@ -13,13 +14,13 @@ import { WorkflowPreview, TABLE_ENRICH_WORKFLOW } from '@/components/workflow-pr
-A **table** stores structured data: columns are the types, rows are the entries. Think of it as giving your workflows a spreadsheet — or a lightweight database — for tracking and maintaining records. +A **table** stores structured data: columns are the types, rows are the entries. Think of it as giving your workflows a spreadsheet, or a lightweight database, for tracking and maintaining records. @@ -63,17 +64,24 @@ Here's the shape of it — a workflow that reads a table, operates on each recor A surprising amount of real business work decomposes into a few operations over structured records: -- **A query** — "which leads are still unprocessed?" -- **An update** — "mark these rows handled." -- **A combination with logic** — "for each new signup, score it, then write the score back." +- **A query**, "which leads are still unprocessed?" +- **An update**, "mark these rows handled." +- **A combination with logic**, "for each new signup, score it, then write the score back." Once you see a use case that way, building it in Sim is mostly wiring those operations together. ## A surface for scale -Tables aren't only storage — they're a working surface for your AI systems. **Workflow columns** let you run an operation across every row at once, in parallel, so a table becomes the place you launch and track work in bulk. +Tables aren't only storage, they're a working surface for your AI systems. **Workflow columns** let you run an operation across every row at once, in parallel, so a table becomes the place you launch and track work in bulk. -That makes a table a powerful interface for automation — the place you manage and operate agentic processes at scale. +That makes a table a powerful interface for automation: the place you manage and operate agentic processes at scale. + + ## Related documentation diff --git a/apps/docs/content/docs/en/academy/tables/operations.mdx b/apps/docs/content/docs/en/academy/tables/operations.mdx index 084385fa000..0a405368c70 100644 --- a/apps/docs/content/docs/en/academy/tables/operations.mdx +++ b/apps/docs/content/docs/en/academy/tables/operations.mdx @@ -1,11 +1,12 @@ --- title: Table Operations -description: The Table block works across two surfaces — a panel where you describe the operation, and the live table that answers it — with one shape shared by query, insert, update, and delete. +description: The Table block works across two surfaces, a panel where you describe the operation, and the live table that answers it, with one shape shared by query, insert, update, and delete. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview } from '@/components/workflow-preview' import { AV_TABLE_OPS_WORKFLOW } from '@/components/workflow-preview/academy-video-workflows' @@ -20,7 +21,7 @@ Workflows work with tables through the Table block. Everything the block can do items={[ { title: 'Filters shape a query', - body: 'A query is built from conditions — column, operator, value. Conditions stack, and each one narrows the match.', + body: 'A query is built from conditions, column, operator, value. Conditions stack, and each one narrows the match.', }, { title: 'A query only reads', @@ -32,7 +33,7 @@ Workflows work with tables through the Table block. Everything the block can do }, { title: 'Update combines both', - body: 'Update Rows by Filter pairs a filter with row data — the filter picks the rows, the data changes them in place.', + body: 'Update Rows by Filter pairs a filter with row data: the filter picks the rows, the data changes them in place.', }, ]} /> @@ -62,12 +63,19 @@ Here is the block from the video, configured for the first query: ## One shape for every operation -The panel describes what you mean: an operation, a table, and — depending on the operation — a filter, row data, or both. A filter is conditions stacked together (priority equals high, and status equals open), each one narrowing the match. Queries read without touching the table; Delete Rows by Filter removes what matches; Insert Row lands a payload as a new row; Update Rows by Filter picks rows and changes them in place. +The panel describes what you mean: an operation, a table, and, depending on the operation, a filter, row data, or both. A filter is conditions stacked together (priority equals high, and status equals open), each one narrowing the match. Queries read without touching the table; Delete Rows by Filter removes what matches; Insert Row lands a payload as a new row; Update Rows by Filter picks rows and changes them in place. ## Reading the result The live table answers every run: matched rows highlight, deleted rows leave, inserted rows land, and updated cells flip where they sit. The block's output carries the same result back into the workflow for the next block to use. + + ## Related documentation - [Tables overview](/tables) diff --git a/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx b/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx index bac49cac518..9ffc44bf709 100644 --- a/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx +++ b/apps/docs/content/docs/en/academy/tables/workflow-columns.mdx @@ -1,24 +1,25 @@ --- title: Workflow Columns -description: Attach a workflow to a table column and the table fills itself — and every value it writes carries the full trace of the run that produced it. +description: Attach a workflow to a table column and the table fills itself, and every value it writes carries the full trace of the run that produced it. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq'
-A workflow column doesn't hold typed-in values — it holds the **output of a workflow**, run once per row. Attach the workflow, bind its input to a column and its output to the column it fills, and the table starts doing the work itself: one run for every row, cascading through stages, updating as new rows arrive. +A workflow column doesn't hold typed-in values, it holds the **output of a workflow**, run once per row. Attach the workflow, bind its input to a column and its output to the column it fills, and the table starts doing the work itself: one run for every row, cascading through stages, updating as new rows arrive. ## Related documentation diff --git a/apps/docs/content/docs/en/academy/use-cases/document-extraction.mdx b/apps/docs/content/docs/en/academy/use-cases/document-extraction.mdx index 445237a5b18..d4aa2203a20 100644 --- a/apps/docs/content/docs/en/academy/use-cases/document-extraction.mdx +++ b/apps/docs/content/docs/en/academy/use-cases/document-extraction.mdx @@ -12,7 +12,7 @@ import { VideoChapters } from '@/components/ui/video-chapters'
-Turn a pile of unstructured documents — invoices, contracts, forms — into structured data. The workflow reads each file, extracts the fields that matter, and writes them as rows you can query and process. +Turn a pile of unstructured documents, invoices, contracts, forms, into structured data. The workflow reads each file, extracts the fields that matter, and writes them as rows you can query and process.
-Build a system that runs on a schedule, checks the sources you care about, researches what's new, and delivers a synthesized report — competitor moves, market signals, anything worth watching — without you asking each time. +Build a system that runs on a schedule, checks the sources you care about, researches what's new, and delivers a synthesized report, competitor moves, market signals, anything worth watching, without you asking each time.
-Run your sales pipeline as data. Start with thin lead records in a table, enrich each one — company info, fit signals — score it, and write the results back, all in parallel across the whole table. +Run your sales pipeline as data. Start with thin lead records in a table, enrich each one, company info, fit signals, score it, and write the results back, all in parallel across the whole table. @@ -40,4 +40,4 @@ Build an agent that lives in a Slack channel: it reads each incoming IT request, A **Slack trigger** starts the workflow on each new message. An **Agent** block classifies the request and decides the path: a **knowledge-base search** drafts an answer for common questions, while anything it can't resolve is routed to a human or filed as a ticket. Every run is recorded in the [logs](/logs-debugging). -This pulls together [workflows](/academy/workflows/intro), [agents](/academy/agents/intro), and [knowledge bases](/academy/knowledge-bases/intro) into one system — the foundations, composed. +This pulls together [workflows](/academy/workflows/intro), [agents](/academy/agents/intro), and [knowledge bases](/academy/knowledge-bases/intro) into one system: the foundations, composed. diff --git a/apps/docs/content/docs/en/academy/workflows/branching.mdx b/apps/docs/content/docs/en/academy/workflows/branching.mdx index eebea7b2a7b..d96eb3151bd 100644 --- a/apps/docs/content/docs/en/academy/workflows/branching.mdx +++ b/apps/docs/content/docs/en/academy/workflows/branching.mdx @@ -1,11 +1,12 @@ --- title: Branching -description: Split a workflow into different paths based on the result of a step — the Condition block decides with a rule, the Router lets a model decide. +description: Split a workflow into different paths based on the result of a step: the Condition block decides with a rule, the Router lets a model decide. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview, CONDITION_ROUTE_WORKFLOW } from '@/components/workflow-preview' @@ -13,7 +14,7 @@ import { WorkflowPreview, CONDITION_ROUTE_WORKFLOW } from '@/components/workflow
-Branching is how a workflow **splits into different paths based on the result of a step**. Sim gives you two blocks for it — the **Condition** block, which decides with an explicit rule, and the **Router**, which lets a model decide from intent. +Branching is how a workflow **splits into different paths based on the result of a step**. Sim gives you two blocks for it: the **Condition** block, which decides with an explicit rule, and the **Router**, which lets a model decide from intent. -## The Condition block — decide with a rule +## The Condition block, decide with a rule -The **Condition** block branches on an **explicit rule** — a comparison over an earlier block's output, like priority equals "high". The matching branch runs; the others don't. It's deterministic and predictable. +The **Condition** block branches on an **explicit rule**, a comparison over an earlier block's output, like priority equals "high". The matching branch runs; the others don't. It's deterministic and predictable. -## The Router block — let a model decide +## The Router block, let a model decide -Sometimes the rule is fuzzy: "send billing questions one way, everything else another." The **Router** block hands the decision to a **model** — it reads the input, picks the branch that matches the intent, and the run continues down it. Same fork, but the decider is reasoning instead of a fixed rule. +Sometimes the rule is fuzzy: "send billing questions one way, everything else another." The **Router** block hands the decision to a **model**: it reads the input, picks the branch that matches the intent, and the run continues down it. Same fork, but the decider is reasoning instead of a fixed rule. ## Still one workflow Whichever way it forks, it's **still one workflow**, and every run is recorded. Open the logs and you can see exactly which path a given run took, and why. + + ## Related documentation - [How workflows run](/workflows/how-it-runs) diff --git a/apps/docs/content/docs/en/academy/workflows/deployment.mdx b/apps/docs/content/docs/en/academy/workflows/deployment.mdx index 688610bf1c8..8dcd8220b1c 100644 --- a/apps/docs/content/docs/en/academy/workflows/deployment.mdx +++ b/apps/docs/content/docs/en/academy/workflows/deployment.mdx @@ -1,11 +1,12 @@ --- title: Deployment -description: Deploying gives a workflow an address so the outside world can run it — the same Start block answers calls as an API, a chat, or an MCP tool. +description: Deploying gives a workflow an address so the outside world can run it: the same Start block answers calls as an API, a chat, or an MCP tool. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview, RESPONSE_API_WORKFLOW } from '@/components/workflow-preview' @@ -13,7 +14,7 @@ import { WorkflowPreview, RESPONSE_API_WORKFLOW } from '@/components/workflow-pr
-Deploying publishes a workflow and gives it an **address**, so something other than the editor can run it. Nothing inside the workflow changes — the same blocks, the same Start block — but now an external request can reach it and start a run. +Deploying publishes a workflow and gives it an **address**, so something other than the editor can run it. Nothing inside the workflow changes, the same blocks, the same Start block, but now an external request can reach it and start a run. ## Deploy gives it an address -Deploying publishes the workflow and gives it an **address**. Nothing inside the chain changes — same blocks, same Start block, same logic. What's new is that the workflow is now **live** and reachable from outside, at a stable, versioned URL. A deployment is a snapshot, so you can promote new versions and roll back. +Deploying publishes the workflow and gives it an **address**. Nothing inside the chain changes, same blocks, same Start block, same logic. What's new is that the workflow is now **live** and reachable from outside, at a stable, versioned URL. A deployment is a snapshot, so you can promote new versions and roll back. ## A call from outside -An external request comes in, hits that address, and flows straight into the **Start block** — the same entry you tested with in the editor. From there the run is identical: the chain executes and the response goes back to whoever called it. An external call is just a run; the only difference is where it came from. +An external request comes in, hits that address, and flows straight into the **Start block**, the same entry you tested with in the editor. From there the run is identical: the chain executes and the response goes back to whoever called it. An external call is just a run; the only difference is where it came from. ## The same workflow, three surfaces The one deployed workflow can be reached three ways, and you choose which: -- **API** — other systems POST to an endpoint and get the response back. -- **Chat** — a hosted chat page anyone can open; each message becomes the workflow's input. -- **MCP** — the workflow becomes a tool that other AI agents (like Cursor or Claude) can call. +- **API**, other systems POST to an endpoint and get the response back. +- **Chat**, a hosted chat page anyone can open; each message becomes the workflow's input. +- **MCP**, the workflow becomes a tool that other AI agents (like Cursor or Claude) can call. -Same blocks underneath, same Start — just different doors in. +Same blocks underneath, same Start, just different doors in. ## Runs when they run it -Once deployed, the workflow runs on demand — whenever a caller hits it, with no one in the editor. The same process you built is now an operational system. +Once deployed, the workflow runs on demand, whenever a caller hits it, with no one in the editor. The same process you built is now an operational system. + + ## Related documentation diff --git a/apps/docs/content/docs/en/academy/workflows/intro.mdx b/apps/docs/content/docs/en/academy/workflows/intro.mdx index 05fe0ef2f27..b0629fce0e7 100644 --- a/apps/docs/content/docs/en/academy/workflows/intro.mdx +++ b/apps/docs/content/docs/en/academy/workflows/intro.mdx @@ -1,11 +1,12 @@ --- title: Workflows -description: A workflow is a visual program made of blocks — where you compose data, operations, integrations, and AI agents into a process. +description: A workflow is a visual program made of blocks: where you compose data, operations, integrations, and AI agents into a process. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview, CLASSIFY_REPLY_WORKFLOW } from '@/components/workflow-preview' @@ -13,7 +14,7 @@ import { WorkflowPreview, CLASSIFY_REPLY_WORKFLOW } from '@/components/workflow-
-A **workflow** is a visual program made of blocks. It's where you compose everything else in Sim — data, operations, integrations, and AI agents — into a process, and bind it to a trigger so it runs. +A **workflow** is a visual program made of blocks. It's where you compose everything else in Sim, data, operations, integrations, and AI agents, into a process, and bind it to a trigger so it runs. `. -- Everything that happened is saved in the **logs** — the trigger, every block, and each block's input and output — so you can see exactly where a value came from. +- Everything that happened is saved in the **logs**, the trigger, every block, and each block's input and output, so you can see exactly where a value came from. -Here's a small workflow you can read top to bottom — blocks wired in order, each one a step. The highlighted block reads an earlier block's output through a connection tag: +Here's a small workflow you can read top to bottom, blocks wired in order, each one a step. The highlighted block reads an earlier block's output through a connection tag: ## How execution flows -A block waits only for the blocks it depends on — nothing else. +A block waits only for the blocks it depends on, nothing else. So if `A` feeds both `B` and `C`, then `B` and `C` start at the same moment `A` finishes; they don't wait for each other. And if `B` and `C` both feed `D`, then `D` waits for both before it runs. The shape of the connections *is* the execution plan. ## Branches, loops, and parallel -From those primitives you get expressive control flow: **branch** down one path or another with a Condition or Router, **loop** over a list, run work in **parallel** across many items. These are the expressive core of what you'll build — and they're all just blocks and connections. +From those primitives you get expressive control flow: **branch** down one path or another with a Condition or Router, **loop** over a list, run work in **parallel** across many items. These are the expressive core of what you'll build, and they're all just blocks and connections. -Everything complicated — an automated software factory, an autonomous triage system that takes action on its own — is built from these same simple primitives. You start with a few blocks; the platform scales to your ambition. As you get more comfortable, the workflows you compose get richer — more branches, more agents, more reach — without ever leaving the same model you learned here. We're glad you're on this journey: Sim is built of simple primitives that compose into anything you can imagine. +Everything complicated: an automated software factory, an autonomous triage system that takes action on its own, is built from these same simple primitives. You start with a few blocks; the platform scales to your ambition. As you get more comfortable, the workflows you compose get richer, more branches, more agents, more reach, without ever leaving the same model you learned here. We're glad you're on this journey: Sim is built of simple primitives that compose into anything you can imagine. + +: a block's parameter references the output of an earlier block, and the value resolves when the run reaches it." }, + { question: "When does a block run?", answer: "When every block it depends on has finished. Independent branches run in parallel automatically, and a block waits for all of its inputs." }, +]} /> ## Related documentation diff --git a/apps/docs/content/docs/en/academy/workflows/logs.mdx b/apps/docs/content/docs/en/academy/workflows/logs.mdx index 019987c4cdc..36a4e01a0c9 100644 --- a/apps/docs/content/docs/en/academy/workflows/logs.mdx +++ b/apps/docs/content/docs/en/academy/workflows/logs.mdx @@ -1,11 +1,12 @@ --- title: Logs -description: A log is the complete record of one workflow run — and debugging is reading that record backwards, from a wrong value to the block that produced it. +description: A log is the complete record of one workflow run, and debugging is reading that record backwards, from a wrong value to the block that produced it. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview, ROUTER_TRIAGE_WORKFLOW } from '@/components/workflow-preview' @@ -13,7 +14,7 @@ import { WorkflowPreview, ROUTER_TRIAGE_WORKFLOW } from '@/components/workflow-p
-Every time a workflow runs, Sim writes down exactly what happened: the trigger, every block in the order it ran, and for each block its input, its output, its timing, and any error. That record is a **log** — the ground truth for understanding and debugging a run. +Every time a workflow runs, Sim writes down exactly what happened: the trigger, every block in the order it ran, and for each block its input, its output, its timing, and any error. That record is a **log**, the ground truth for understanding and debugging a run. @@ -48,27 +49,34 @@ Every time a workflow runs, Sim writes down exactly what happened: the trigger, ## Every run leaves a record -When a workflow runs, the run isn't a black box. Sim records the **trigger** that started it, every **block** in the order it executed, and for each block its **input**, its **output**, its **timing**, and an error message if it failed. Nothing about a run is a mystery — it all gets written down. +When a workflow runs, the run isn't a black box. Sim records the **trigger** that started it, every **block** in the order it executed, and for each block its **input**, its **output**, its **timing**, and an error message if it failed. Nothing about a run is a mystery; it all gets written down. -Here's the kind of workflow whose runs you'll read — a trigger, an agent, and the branches it routes between: +Here's the kind of workflow whose runs you'll read: a trigger, an agent, and the branches it routes between: ## The record -Open a run and the log lists every block in the order it ran, each with its **duration**. So when a run is slow, you can see exactly where the time went — which block took the seconds — instead of guessing. +Open a run and the log lists every block in the order it ran, each with its **duration**. So when a run is slow, you can see exactly where the time went, which block took the seconds, instead of guessing. ## What each block did -Selecting a block shows everything it actually did: the **input** it received, the **output** it returned, and — for an agent — the **tool calls** it made and the **tokens** it used. From the outside a step can look instant; the log keeps everything that happened inside it. +Selecting a block shows everything it actually did: the **input** it received, the **output** it returned, and, for an agent, the **tool calls** it made and the **tokens** it used. From the outside a step can look instant; the log keeps everything that happened inside it. ## Read it backwards -The log also shows where every value came from. A block's input names the block that produced it — a connection tag like ``. So to debug, you start from the **wrong value** and step **backwards**: which block produced it, what that block read, and on back through the chain until you reach the source. Debugging a workflow is reading its log backward from the symptom. +The log also shows where every value came from. A block's input names the block that produced it: a connection tag like ``. So to debug, you start from the **wrong value** and step **backwards**: which block produced it, what that block read, and on back through the chain until you reach the source. Debugging a workflow is reading its log backward from the symptom. ## Every run writes one -You don't enable any of this — every run produces a log automatically. When a workflow does something you didn't expect, the log is the first place to look, because it's the one place that records what actually happened. +You don't enable any of this: every run produces a log automatically. When a workflow does something you didn't expect, the log is the first place to look, because it's the one place that records what actually happened. + + ## Related documentation diff --git a/apps/docs/content/docs/en/academy/workflows/loops.mdx b/apps/docs/content/docs/en/academy/workflows/loops.mdx index 36869f401dd..61695d219b8 100644 --- a/apps/docs/content/docs/en/academy/workflows/loops.mdx +++ b/apps/docs/content/docs/en/academy/workflows/loops.mdx @@ -1,11 +1,12 @@ --- title: Loops & Parallel -description: Repeat the same steps over a collection — the Loop block runs them one item at a time, the Parallel block runs every item at once. +description: Repeat the same steps over a collection: the Loop block runs them one item at a time, the Parallel block runs every item at once. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview, LOOP_WORKFLOW } from '@/components/workflow-preview' @@ -13,7 +14,7 @@ import { WorkflowPreview, LOOP_WORKFLOW } from '@/components/workflow-preview'
-Repeating the same steps across a whole collection is one of the most fundamental ideas in programming. Sim gives you two blocks for it — the **Loop** block and the **Parallel** block. They do the same job and differ only in *how* they run. +Repeating the same steps across a whole collection is one of the most fundamental ideas in programming. Sim gives you two blocks for it: the **Loop** block and the **Parallel** block. They do the same job and differ only in *how* they run. ## What each run knows -Inside the container, every iteration gets the **current item** to work on (and its index). That's how one lane of blocks becomes a run per lead, per row, or per file — the steps stay the same, the data changes each pass. +Inside the container, every iteration gets the **current item** to work on (and its index). That's how one lane of blocks becomes a run per lead, per row, or per file: the steps stay the same, the data changes each pass. ## One at a time, or all at once This is the whole difference between the two blocks: -- **Loop** runs the items **sequentially** — one finishes before the next begins. Reach for it when each step builds on the last, or when you need to respect order or rate limits. -- **Parallel** runs them **all at once** — every item concurrently. Reach for it when the items are independent; it's dramatically faster across a large collection. +- **Loop** runs the items **sequentially**, one finishes before the next begins. Reach for it when each step builds on the last, or when you need to respect order or rate limits. +- **Parallel** runs them **all at once**, every item concurrently. Reach for it when the items are independent; it's dramatically faster across a large collection. ## Swapping the container -Because the two blocks share the same shape, you can **swap a Loop for a Parallel** (or back) without rewiring anything inside. Same logic, different execution — sequential or concurrent — chosen by which container you wrap it in. +Because the two blocks share the same shape, you can **swap a Loop for a Parallel** (or back) without rewiring anything inside. Same logic, different execution, sequential or concurrent, chosen by which container you wrap it in. + + ## Related documentation diff --git a/apps/docs/content/docs/en/academy/workflows/subworkflows.mdx b/apps/docs/content/docs/en/academy/workflows/subworkflows.mdx index 8558dfba7cd..4443c32b082 100644 --- a/apps/docs/content/docs/en/academy/workflows/subworkflows.mdx +++ b/apps/docs/content/docs/en/academy/workflows/subworkflows.mdx @@ -1,11 +1,12 @@ --- title: Subworkflows -description: Call one workflow from another, the way you'd call a function in code — reuse logic and compose small workflows into larger systems. +description: Call one workflow from another, the way you'd call a function in code, reuse logic and compose small workflows into larger systems. --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' import { WhatYouWillLearn } from '@/components/ui/what-you-will-learn' import { VideoChapters } from '@/components/ui/video-chapters' +import { FAQ } from '@/components/ui/faq' import { WorkflowPreview, WORKFLOW_CALL_WORKFLOW } from '@/components/workflow-preview' @@ -13,7 +14,7 @@ import { WorkflowPreview, WORKFLOW_CALL_WORKFLOW } from '@/components/workflow-p
-Once you've built a workflow that does something well, you can **call it from another workflow** — the way you'd call a function in code. The Workflow block turns any workflow into a reusable step. +Once you've built a workflow that does something well, you can **call it from another workflow**, the way you'd call a function in code. The Workflow block turns any workflow into a reusable step. ## It becomes a block -Any workflow can be used as a **block** inside another. You drop a **Workflow block**, point it at the workflow you want, and pass it an input — just like calling a function. You don't rebuild its logic; you reuse it. +Any workflow can be used as a **block** inside another. You drop a **Workflow block**, point it at the workflow you want, and pass it an input, just like calling a function. You don't rebuild its logic; you reuse it. ## Call, run, return -When the parent run reaches the Workflow block, the **child workflow runs** start to finish — its own blocks, its own logic — and its **result comes back** into the parent, where the next block reads it. The parent doesn't need to know how the child works, only what it returns. +When the parent run reaches the Workflow block, the **child workflow runs** start to finish, its own blocks, its own logic, and its **result comes back** into the parent, where the next block reads it. The parent doesn't need to know how the child works, only what it returns. ## Workflows all the way up -This is how big systems stay manageable: factor shared logic into focused subworkflows and **compose** them. Each workflow you build becomes a building block for the next — small, tested pieces assembling into larger processes, without turning into a mess. +This is how big systems stay manageable: factor shared logic into focused subworkflows and **compose** them. Each workflow you build becomes a building block for the next, small, tested pieces assembling into larger processes, without turning into a mess. + + ## Related documentation From 184b19d8a8e79a4cba269a339a18473753fb97e5 Mon Sep 17 00:00:00 2001 From: William Chen Date: Thu, 2 Jul 2026 17:31:22 -0700 Subject: [PATCH 12/12] fix: quote frontmatter descriptions that gained colons in the em-dash pass (unquoted YAML scalars with a second colon broke every page) --- apps/docs/content/docs/en/academy/agents/block.mdx | 2 +- apps/docs/content/docs/en/academy/agents/intro.mdx | 2 +- apps/docs/content/docs/en/academy/agents/memory.mdx | 2 +- apps/docs/content/docs/en/academy/chat/intro.mdx | 2 +- apps/docs/content/docs/en/academy/workflows/branching.mdx | 2 +- apps/docs/content/docs/en/academy/workflows/deployment.mdx | 2 +- apps/docs/content/docs/en/academy/workflows/intro.mdx | 2 +- apps/docs/content/docs/en/academy/workflows/loops.mdx | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/docs/content/docs/en/academy/agents/block.mdx b/apps/docs/content/docs/en/academy/agents/block.mdx index b21b7c71742..221038fe253 100644 --- a/apps/docs/content/docs/en/academy/agents/block.mdx +++ b/apps/docs/content/docs/en/academy/agents/block.mdx @@ -1,6 +1,6 @@ --- title: The Agent Block -description: Inside the Agent block, a run becomes a conversation: a message stack the model reads, a swappable brain, and an output bundle every later block can use. +description: "Inside the Agent block, a run becomes a conversation: a message stack the model reads, a swappable brain, and an output bundle every later block can use." --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' diff --git a/apps/docs/content/docs/en/academy/agents/intro.mdx b/apps/docs/content/docs/en/academy/agents/intro.mdx index 4c195d6779c..e911f7a9593 100644 --- a/apps/docs/content/docs/en/academy/agents/intro.mdx +++ b/apps/docs/content/docs/en/academy/agents/intro.mdx @@ -1,6 +1,6 @@ --- title: Agents -description: An AI agent is a Sim workflow that uses Agent blocks: the reasoning engine you shape, parameterize, and compose into intelligent processes. +description: "An AI agent is a Sim workflow that uses Agent blocks: the reasoning engine you shape, parameterize, and compose into intelligent processes." --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' diff --git a/apps/docs/content/docs/en/academy/agents/memory.mdx b/apps/docs/content/docs/en/academy/agents/memory.mdx index 31b1a1d1e27..8fa17c56d83 100644 --- a/apps/docs/content/docs/en/academy/agents/memory.mdx +++ b/apps/docs/content/docs/en/academy/agents/memory.mdx @@ -1,6 +1,6 @@ --- title: Memory -description: One setting gives an agent memory: a conversation ID under which every turn is kept, so the next run starts from the conversation so far. +description: "One setting gives an agent memory: a conversation ID under which every turn is kept, so the next run starts from the conversation so far." --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' diff --git a/apps/docs/content/docs/en/academy/chat/intro.mdx b/apps/docs/content/docs/en/academy/chat/intro.mdx index c07e45de1ad..c39951319f7 100644 --- a/apps/docs/content/docs/en/academy/chat/intro.mdx +++ b/apps/docs/content/docs/en/academy/chat/intro.mdx @@ -1,6 +1,6 @@ --- title: Chat -description: The chat in Sim is your workspace control plane: one conversation that queries your tables, searches your docs, runs and schedules workflows, researches the outside world, and composes it all into new systems. +description: "The chat in Sim is your workspace control plane: one conversation that queries your tables, searches your docs, runs and schedules workflows, researches the outside world, and composes it all into new systems." --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' diff --git a/apps/docs/content/docs/en/academy/workflows/branching.mdx b/apps/docs/content/docs/en/academy/workflows/branching.mdx index d96eb3151bd..7074c76df6f 100644 --- a/apps/docs/content/docs/en/academy/workflows/branching.mdx +++ b/apps/docs/content/docs/en/academy/workflows/branching.mdx @@ -1,6 +1,6 @@ --- title: Branching -description: Split a workflow into different paths based on the result of a step: the Condition block decides with a rule, the Router lets a model decide. +description: "Split a workflow into different paths based on the result of a step: the Condition block decides with a rule, the Router lets a model decide." --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' diff --git a/apps/docs/content/docs/en/academy/workflows/deployment.mdx b/apps/docs/content/docs/en/academy/workflows/deployment.mdx index 8dcd8220b1c..daebc36f68c 100644 --- a/apps/docs/content/docs/en/academy/workflows/deployment.mdx +++ b/apps/docs/content/docs/en/academy/workflows/deployment.mdx @@ -1,6 +1,6 @@ --- title: Deployment -description: Deploying gives a workflow an address so the outside world can run it: the same Start block answers calls as an API, a chat, or an MCP tool. +description: "Deploying gives a workflow an address so the outside world can run it: the same Start block answers calls as an API, a chat, or an MCP tool." --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' diff --git a/apps/docs/content/docs/en/academy/workflows/intro.mdx b/apps/docs/content/docs/en/academy/workflows/intro.mdx index b0629fce0e7..30e1bb89df4 100644 --- a/apps/docs/content/docs/en/academy/workflows/intro.mdx +++ b/apps/docs/content/docs/en/academy/workflows/intro.mdx @@ -1,6 +1,6 @@ --- title: Workflows -description: A workflow is a visual program made of blocks: where you compose data, operations, integrations, and AI agents into a process. +description: "A workflow is a visual program made of blocks: where you compose data, operations, integrations, and AI agents into a process." --- import { VideoPlaceholder } from '@/components/ui/video-placeholder' diff --git a/apps/docs/content/docs/en/academy/workflows/loops.mdx b/apps/docs/content/docs/en/academy/workflows/loops.mdx index 61695d219b8..55c8353261e 100644 --- a/apps/docs/content/docs/en/academy/workflows/loops.mdx +++ b/apps/docs/content/docs/en/academy/workflows/loops.mdx @@ -1,6 +1,6 @@ --- title: Loops & Parallel -description: Repeat the same steps over a collection: the Loop block runs them one item at a time, the Parallel block runs every item at once. +description: "Repeat the same steps over a collection: the Loop block runs them one item at a time, the Parallel block runs every item at once." --- import { VideoPlaceholder } from '@/components/ui/video-placeholder'