Flow builder
Flows let you orchestrate a conversation beyond just “follow the system prompt”. Each flow is a DAG of typed nodes. The runtime walks the DAG, executes each node's side effects, and resumes the conversation according to the chosen edge.
Node types
- start — entry point; every flow has exactly one.
- message — agent speaks the configured text (template-rendered).
- question — agent asks; engine waits for visitor response; answer stored in a variable.
- condition — routes by comparing a variable against a literal or another variable.
- appointment — books a slot via the workspace's calendar adapter.
- form — emits a form-fill request (e.g. on a click-to-call widget).
- webhook — POST a payload to an external URL mid-flow.
- transfer — warm-transfer the call to a human agent.
- delay — pause for N seconds before continuing.
- end — explicit termination with an end-reason.
- qa (Phase 13) — runs a Voxy AI critic against a previous agent turn, routes by rubric score.
Editor
The visual editor at /workspace/flows/[flowId] is a drag-and-connect canvas with an inspector pane for the selected node. Saves are autosave; you can manually publish a draft as the active revision.
Test runner
The “Run test” panel ships a synthetic conversation through the flow engine. Side-effects (webhook fires, appointment books) are captured as a structured log instead of being executed, so you can iterate safely without firing real production traffic.
QA node (Phase 13)
A QA node lets you score the agent's response against a rubric (clarity / accuracy / tone) and route by the result. Hidden behind the flows.qa_node feature flag; off by default.

