Skip to main content
Instead of playing an IVR menu (“Press 1 for billing, press 2 for support”), this recipe lets the caller state their need in natural language and routes them based on what they said. The LLM extracts intent; the function handles the routing deterministically.

When to use this

Use this pattern when:
  • Replacing a traditional IVR or phone tree
  • You have multiple specialist queues and want to route callers correctly first time
  • You want to capture the caller’s intent in conv.state to brief the receiving agent

The complete pattern

Behavior field reference:

Routing flow

Briefing the receiving agent

The routing_reason stored in conv.state can be passed to your CTI or CRM via a webhook on call transfer. This means the agent answering the call already knows why the caller is calling — reducing “Can you tell me again what you need?” moments.

Handling caller corrections

Callers sometimes change their mind or correct the LLM’s initial interpretation. Make the routing function re-callable by not using flow.goto_step() — stay in the current context so the LLM can re-route if the caller says “actually, it’s a billing question”:
Add a brief confirmation before transferring if the caller’s intent is ambiguous: “Just to confirm — I’m connecting you with billing. Is that right?” The LLM can handle this naturally if you include it as an instruction in the step prompt or Behavior field.

Key decisions

The LLM captures the caller’s exact words (paraphrased) in reason. This is more useful than just intent because it gives the receiving agent context about why the caller chose this queue — not just which queue they were sent to.
An unknown intent should never cause the call to fail or loop. Routing to general ensures the caller always reaches a human who can handle any edge case.
Using utterance gives the caller a natural transition message before the transfer. Without it, the call transfers silently, which feels like a dropped call.

Check your understanding


← Caller ID validation

Previous recipe

Back to Recipes

All recipes
Last modified on May 1, 2026