Dialogue workflows
Dialogue workflows
Visual editor for voice + chat flows. The same runtime drives the
AI voice contact center and the
in-portal chat. Lives at /admin/dialogue-workflows.
React Flow editor
Drag-and-drop a graph of nodes:
| Node | What it does |
|---|---|
| Say | Bot speaks a line (TTS) |
| Listen | Captures user input (STT) into a variable |
| Branch | If/else on a variable |
| Confirm | Read back a value, ask for yes/no |
| Verify identity | Required before any dispatch node |
| Dispatch | Submit refill request / book appointment / etc. |
| Goto | Jump to another flow (or sub-flow) |
| End | Hang up / close chat |
Edges define the conversational flow. Node config is JSON visible in the right-rail inspector.
Safety locks live in code, not in the editor
The identity-before-dispatch lock and DEA II–V controlled-substance gate are enforced at the runtime layer. The editor lets you build any graph; the runtime rejects ones that violate the safety invariants at execution time, with a clear error message and a link to the offending node.
You can’t “draw your way around” the locks — that’s intentional.
AI flow generation
Type a prompt — “build me a flu-shot recall call” — and the AI
generates an editable workflow scaffold. Pollen8 uses the tenant’s
chat provider (task=chat) for generation; the output is a JSON
workflow that lands in the editor as a draft.
This is the entry point for non-developer staff to build new flows. Pick a stub, refine the prompts, hit Publish.
Versions + rollback
Every Publish creates an immutable version. Promote any prior version to “live” with a one-click rollback — no data loss, no re-deploy.
Same runtime, two surfaces
- Voice runtime: contact-center telephony adapter receives the call, streams audio through STT, runs the workflow, streams TTS back through the call.
- Chat runtime: portal chat UI sends turns to the same runtime via WebSocket. Same nodes, same locks, same Why trace.
This means a workflow you author runs identically over voice and chat. Useful when a phone refill flow needs a chat-channel fallback.