Workflow AI Assistant
The composable workflow editor includes an AI assistant that can build, edit, explain, and debug the current workflow graph. Tell it what you want, such as "send a Slack digest when new pricing signals are extracted," and it can add blocks, configure fields, connect nodes, and lay out the canvas.
Info: The Workflow AI Assistant is available in the composable workflow editor for v2 workflows. Legacy template workflows do not have this chat panel.
Where to Find It
Open a composable workflow at /workflows/v2/:id. The assistant lives in the right-side Chat panel next to the canvas. Agent edits are the same kind of in-memory editor changes you could make manually. They do not persist until you click Save.
When the agent is working, the editor may show:
- An animated busy ring around the canvas.
- An agent cursor over the node being edited.
- Tool-call rows in chat showing what changed.
What You Can Ask
The assistant can help with:
- Build from scratch: "Create a weekly Slack digest of severe customer signals."
- Edit a workflow: "Replace the webhook with a Slack message to #customer-alerts."
- Explain a graph: "What does this workflow do?"
- Debug a failed run: "Why did the latest test fail?"
- Generate filters: "Only include external customer signals with negative sentiment from enterprise accounts."
Tool Surface
The assistant uses a bounded tool set. Some tools run on the server, and others mutate the in-memory editor state in the browser.
| Tool | What It Does |
|---|---|
list_block_types |
Reads the server block registry, including block names, categories, output fields, and config schemas. |
get_recent_runs |
Reads recent runs for the current workflow, optionally filtered by status. |
get_run |
Reads detailed per-node output and errors for one run. |
get_workflow |
Reads the current in-memory graph, name, and description. |
add_node |
Adds a block from the catalog to the canvas. |
update_node_config |
Sets one config field with a literal, ref, or template value. |
update_node_name |
Renames a block. |
remove_node |
Removes a block and its edges. |
connect_nodes |
Adds an edge, rejecting cycles, duplicates, and self-loops. |
remove_edge |
Removes a connection. |
auto_layout |
Tidies the canvas after structural edits. |
generate_signal_filter |
Converts a natural-language signal filter into the JSON filter envelope used by workflow signal blocks. |
Filters and Variables
For signal workflows, ask in plain language:
Only high-severity churn risk signals from external customers this month.
The assistant calls generate_signal_filter, stores the returned filter as a literal config value, and the normal signal filter UI can render it later.
For other fields, the assistant uses:
- Refs for direct upstream values, such as a trigger's
callId. - Templates for text with multiple values, such as a Slack message body.
- Resource literals for connected resources, such as a selected Slack channel.
Debugging Runs
Use Run History for visual inspection, or ask the assistant to inspect recent runs. It can read run status, run-level errors, node-level errors, and truncated node output. If you click Fix with agent from a run or node error, BuildBetter sends that failure context into the chat so the assistant can propose and apply graph edits.
What the Assistant Will Not Do
- It will not save the workflow. You choose when to click Save.
- It will not enable or disable the workflow.
- It will not invent blocks outside the registered block catalog.
- It will not execute arbitrary JavaScript.
- It does not bypass integration requirements for Slack, webhooks, or external APIs.
Warning: The assistant can edit the graph, but testing still uses real action blocks. Review destinations before running a test.
Tip: Start with "Build a workflow that..." for the first draft, then ask for one specific refinement at a time. The assistant can inspect the current graph between turns, so incremental edits are easier to review.