Label like you’re writing tool descriptions
Because edge labels literally become LLM tool descriptions, write them as conditions from the caller’s perspective:- ✅
caller confirms they are an existing customer - ✅
caller wants to cancel or reschedule - ❌
yes,path A,continue
Keep agents small and single-purpose
One agent = one job (qualify, answer billing questions, book). Short, focused instructions per agent outperform one mega-agent with a wall of text. Handoffs are cheap — use them.Validate data with collect nodes, not prompts
Emails and phone numbers transcribed from speech are noisy.collect nodes confirm and validate (“Was that m-e-y-e-r?”) and only proceed on success. Always name the variable clearly (callback_phone, not var1) — those names surface in webhooks and call details.
Design the failure paths
- Give
collectnodes afailededge that leads somewhere sensible (a human transfer or a polite goodbye). - Set warm-transfer
fallbackdeliberately:continuefor optional handovers,cold_transferwhen the caller must reach someone. - End every branch with an
endnode with a proper farewell.
Test with web calls, watch the events
Run test calls from the browser after each change. In the call detail view, the event log shows node transitions, tool calls, collect results, and transfer outcomes — read it like a stack trace when the flow misbehaves.Use async tools for anything slower than ~2 seconds
Synchronous tool calls freeze the conversation. Mark slow webhooksasync and configure filler phrases; the assistant stays responsive while the request runs. See the tool node.