IVR intelligence for voice agents
Every phone menu, mapped for your AI agents.
TurnGraph gives your voice agents the exact path through a company’s phone menu: what to press or say, what to listen for, and when to act.
Route to provider enrollment
Built for teams automating calls to
- Health plans
- Pharmacies
- Banks
- Insurers
- Utilities
- Government agencies
The problem
Phone menus weren’t built for AI agents.
They were designed for patient people. A voice agent needs to know the menu before it dials.
Timing is unforgiving
Most menus wait only a few seconds for an answer before repeating or moving on. An agent that hesitates answers the wrong prompt.
Every menu is different
Some lines list keypad options. Others open with a spoken question or accept only certain phrases. Your agent needs to know which.
Not every path leads somewhere
Some options end in a general queue or ask for account details first. Knowing the destination before you dial avoids dead ends.
Why a mapped route
Generic IVR prompts only get you so far.
Most voice agents are told to listen to the menu and pick the best option. That holds until a line wants a key within a few seconds, opens with a spoken question, or keeps the right department two menus deep. A route mapped for each number tells your agent exactly what to do, so it reaches the right person instead of failing before the conversation starts.
Generic IVR prompt
Listen to the menu and choose the option that best matches the caller’s goal.
- Guesses at every menu, on every call
- Misses short answer windows
- Ends up in the wrong queue or back at the main menu
TurnGraph route for this number
As soon as you hear “For providers, press 2”, press 2 within 6 seconds.
- The exact key or phrase for each menu
- The sentence to wait for and how long the line waits
- The path to the right department, checked on recorded calls
Mapping
A complete map of every menu.
We call each number, listen to every prompt, and follow each option with its own short call. Every option is stored with its key, its spoken phrase, the sentence that announces it, and where it leads.
- Keypad and speech-driven menus
- Menus that open with a spoken question
- Departments, further menus, and requests for account details
PromptFor claims, say claims or press 1. For eligibility, press 2. For provider enrollment, say provider enrollment or press 3. To speak with a representative, press 0.
Timing
The right action at the right moment.
Phone menus give callers a few seconds to respond. Every route tells your agent which sentence to wait for and how long the line will wait, so it acts on cue instead of guessing.
- A cue sentence for every step
- Measured answer windows
- A fallback if a key or phrase isn’t accepted
API
One request before every call.
Send a phone number and a goal. TurnGraph returns every step in order: what to listen for, what to press or say, and how long the line will wait.
- action · value
- Press a key or say a phrase, and exactly which one.
- listen_for
- The sentence the line says right before your agent should act.
- timing
- When to act: after an opening question, on the option’s own cue, or once the menu finishes.
- respond_within_s
- How long the line waits for an answer, measured on recorded calls.
- fallback
- The other way through if a key or phrase isn’t accepted.
- instructions
- The whole route as numbered sentences, ready to drop into your agent’s prompt.
- REST and JSON
- Bearer-token auth
- Versioned at /v1
curl -G https://turngraph.com/v1/route \
-H "Authorization: Bearer $TURNGRAPH_API_KEY" \
--data-urlencode "phone_number=+18005550199" \
--data-urlencode "goal=provider enrollment"{
"object": "route",
"phone_number": "+18005550199",
"goal": "provider enrollment",
"steps": [
{
"action": "press",
"value": "2",
"label": "Providers",
"listen_for": "For providers, press 2.",
"timing": "on_cue",
"respond_within_s": 6
},
{
"action": "say",
"value": "provider enrollment",
"label": "Provider enrollment",
"listen_for": "Please say claims, eligibility, or provider enrollment.",
"timing": "after_menu",
"respond_within_s": 5,
"fallback": { "action": "press", "value": "3" }
}
],
"destination": {
"type": "human_queue",
"label": "Provider enrollment"
},
"confidence": 0.94,
"last_verified_at": "2026-10-02T14:31:07.000Z",
"instructions": "1. As soon as you hear “For providers, press 2”, press 2 within 6 seconds.\n2. After you hear “Please say claims, eligibility, or provider enrollment” and the menu finishes, say “provider enrollment” within 5 seconds. If that isn’t accepted, press 3.\nThis reaches Provider enrollment."
}Built for Vapi, Retell and Bland.
Fetch the route before you dial and hand instructions to your agent as a call variable. Your agent presses keys with its platform’s own keypad tool.
- Vapi
assistantOverrides.variableValuesand the built-indtmftool- Retell
retell_llm_dynamic_variablesand thepress_digittool- Bland
request_datawithivr_modeand the built-in button-press tool- Any other stack
- LiveKit, Pipecat or your own: read
stepsdirectly.
Vapi, Retell and Bland are trademarks of their respective owners. TurnGraph is not affiliated with them.
// POST https://api.vapi.ai/call
// Assistant tools include { type: "dtmf" } for key presses.
{
assistantId: "your-assistant-id",
phoneNumberId: "your-phone-number-id",
customer: { number: "+18005550199" },
assistantOverrides: {
variableValues: { route: route.instructions },
},
}Follow this phone-menu route exactly:
{{route}}Early access
Map the lines your agent calls.
Coverage is limited during early access. Tell us which numbers matter to you and we’ll map those first.