Skip to content

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:

NodeWhat it does
SayBot speaks a line (TTS)
ListenCaptures user input (STT) into a variable
BranchIf/else on a variable
ConfirmRead back a value, ask for yes/no
Verify identityRequired before any dispatch node
DispatchSubmit refill request / book appointment / etc.
GotoJump to another flow (or sub-flow)
EndHang 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.