1. Draw the ladder
The ladder has four rungs, and every caller falls to the cheapest rung that can handle them:maxWaitSeconds plus overflowAction is the ladder’s hinge: when the wait crosses your ceiling, the caller escalates to Rung 4 instead of hanging up. The same fields drive the after-hours path when no member is enrolled or logged in. See Voice queues for the full field contract, including announceIntervalSeconds bounds (15–180 s).
2. Slot-filling intake before escalation
Collect the top call reason’s facts while the caller is still in the IVR, so the eventual human (or AI agent) opens with the answer half-built. Follow Collect structured intake in an IVR with slot-filling: one intent for the top reason, its required slots, and a prompt-confirm-reprompt loop. For a support line the top reason is usually the outage-or-problem report:slot_<name> variable and travels with the caller into the queue — the receiving agent’s screen pop shows the account number and problem summary before the first hello. Cap the loop at two reprompts per slot; a caller who cannot supply a slot in three tries escalates with what you have, not with another apology.
3. Validate the speech layer first
This is the difference between a demo and a live IVR. Before you publish any rung that listens, run ten real utterances through the STT playground and pick the engine on the results, not on the vendor’s marketing page. Record or upload ten clips that match your callers, not a quiet office:- A Glaswegian caller saying your product names and a postcode.
- A caller in a running car.
- A Lagos English speaker spelling an account number.
- A caller with a kitchen extractor fan behind them.
- A short, mumbled “my internet’s down again”.
- A Manila English speaker giving a billing address.
- A caller on a windy sidewalk.
- An older caller speaking slowly with long pauses.
- A caller with a baby crying in the background.
- A terse “press zero did nothing, I need a person”.
The numbers are curated comparison estimates, not per-call SLAs. Apply them to your playground results with two rules:
- If your ten clips carry account numbers, addresses, or plan names and the fast engine mangles them, pay for the better STT tier before you pay for a smarter model. A 5/5 LLM reasoning over a wrong account number is worse than a 3/5 reading the right one.
- If barge-in matters on this line (callers interrupt; most do), keep the whole path to first audio under a second: Ultra Fast exists precisely for that.
4. Barge-in and prompt delivery on the agent leg
The AI agent that takes Rung 4 speaks to a caller who has already waited. Two settings decide whether that leg feels like rescue or like another menu:- Barge-in. The caller will interrupt the agent’s greeting; a caller on hold always does. If your playground latency plus preset p50 sits near or over a second, pick Ultra Fast for this leg so the agent stops talking when the caller starts, instead of finishing yesterday’s sentence.
- Delivery cues. Write the wait into the prompts with timed pauses, as in Timed pauses and expressive audio cues in voice prompts:
I can see you have been holding for a few minutes [pause:1.5s] let's get this sorted.The pause gives the caller room to jump in, which is the barge-in you want. Check the provider matrix in that guide for how your chosen voice renders each tag, and audition the rendered audio before publish — cues that one voice renders naturally, another reads aloud as brackets.
announceIntervalSeconds at 30 keeps the announcements from becoming the thing callers hold on to hear the end of.
5. Handoff semantics when a human frees up
When an agent logs in and the queue dispatches a caller who is mid-conversation with the AI agent, the handoff is warm by contract, as defined in AI-voice warm handoff to a human agent: the AI agent calls itstransfer_to_human tool, the live caller bridges into the queue, and the receiving human’s screen pop carries the handoff packet — the AI’s summary of the call, the caller’s sentiment, and every collected slot from section 2. The human never asks for the account number again; it is the first line of the pop.
Two things to wire on purpose:
- Make
transfer_to_humanavailable on the Rung 4 agent and instruct it to hand off when the caller asks for a person, by name or by tone. A caller who asked for a human and got a faster robot still asked for a human. - Turn on whisper coaching for the receiving agents while the ladder is new. A supervisor can whisper guidance into the agent’s earpiece without the caller hearing, which is how a fresh queue absorbs its first escalated AI calls; setup is in Agent assist: whisper coaching.
6. Fallbacks: failure loops, the DTMF escape hatch, callback deflection
Every listening node on the ladder gets the same three exits, configured per node:- Recognition-failure loop count. Two reprompts after a no-match or no-input, then the caller drops a rung — from NLU catch to human queue, never back to the same menu. A third repetition of the same question is where callers hang up.
- The DTMF escape hatch. “At any time, press 0 for a person” on every gather, including the slot-filling loop. The zero key must route straight to Rung 3. This is the contract that makes the rest of the ladder tolerable: nobody is trapped in it.
- Callback deflection. When the announced wait is long or the call arrives after hours, offer the SMS callback before the AI agent: the Offer SMS Callback node from the First IVR via the Visual Builder canvas tutorial, and the missed-call side of the same coin in Missed-call → SMS callback recipe for callers who abandon the queue or ring out. A caller who accepts a callback leaves the queue, your wait estimate drops, and the next caller’s announced wait is honest again.
callbackMaxAttempts and callbackRetryIntervals if you enable abandoned-callback rescue, so a caller who accepted a callback and missed the first attempt gets the second one on a schedule you chose.
7. After launch: VAQI, containment, and the retrain loop
The ladder is live when the DID routes to it; it is good when three numbers move the right way:- VAQI. The VAQI dashboard scores your agent leg on live traffic — the measurement the preset table deliberately estimated. Run the before/after comparison the preset guide’s VAQI section describes (Pick a voice-agent model preset): after-hours VAQI versus business-hours VAQI tells you whether the AI agent is carrying the load or just answering the phone.
- Containment. The AI Containment and Resolution dashboard shows the share of agent conversations resolved without a human. For this ladder, watch it together with the IVR-to-queue volume: containment rising while queue volume falls means Rung 4 is absorbing real work, not just delaying handoff.
- The retrain loop. Escalations are your training data. Pull the recorded traces of calls that left the AI agent for a human, promote the instructive ones into an eval dataset with Promote production traces into eval datasets, correct the transcript where STT got a proper noun wrong, and rerun your original ten playground clips through the STT playground before and after any engine or preset change. Ship the change only when the ten clips still transcribe clean and the eval set scores higher.
See also
- First IVR via the Visual Builder canvas
- Build an IVR flow with NLU intent routing
- Collect structured intake in an IVR with slot-filling
- STT Playground: compare speech-to-text vendors
- Pick a voice-agent model preset
- Timed pauses and expressive audio cues in voice prompts
- AI-voice warm handoff to a human agent
- Agent assist: whisper coaching
- Missed-call → SMS callback recipe
- Voice queues
- Promote production traces into eval datasets
- Read the AI Containment and Resolution dashboard