Data & Testing
IVR Navigation
Teach an agent to get through someone else's phone tree. Katexs agents can press keys, speak menu options, wait out hold music, and detect the moment a human picks up.
When you need it
Outbound calls to insurers, carriers, suppliers, and government lines almost always start with an automated menu. Without navigation the agent talks to a robot that is not listening. With it, the agent completes the menu and starts the real conversation.
- Insurance verification โ Navigate to provider services, enter an NPI, reach a representative.
- Order and shipment status โ Enter an order number in a supplier's automated system.
- Utility and account servicing โ Authenticate with an account number before a human joins.
Two navigation modes
| Mode | How it works | Best for |
|---|---|---|
| Scripted | You define the key sequence and waits up front. | Menus that never change; fastest and most reliable. |
| Adaptive | The agent listens to each menu and chooses an option against a stated goal. | Menus that change or vary by time of day. |
| Hybrid | Scripted first steps, adaptive after the last known-stable node. | Long trees with a stable front and a variable tail. |
Scripted navigation
ivr:
mode: scripted
steps:
- wait_for: silence
timeout_seconds: 12
- press: "2" # provider services
- wait_for: prompt
match: "national provider identifier"
timeout_seconds: 20
- press: "1093871425#"
- wait_for: prompt
match: "member identification"
- press: "{{member_id}}#"
- wait_for: human
timeout_seconds: 900
on_timeout: end_call
on_wrong_branch: restart_from_step: 1- press โ Sends DTMF tones. Use # to submit a variable-length entry and , for a half-second pause between digits.
- wait_for: prompt โ Waits until the transcript matches your text, so timing shifts do not break the script.
- wait_for: human โ Ends navigation the moment a live person is detected.
- on_wrong_branch โ Fires when a matched prompt is never heard and an unexpected one is, letting you restart cleanly.
Adaptive navigation
Give the agent the goal and the identifiers it may use, and let it interpret each menu. It transcribes options, picks the closest match, and enters data only from the fields you allow.
ivr:
mode: adaptive
goal: "Reach a live representative in provider services to verify benefits."
allowed_inputs:
npi: "1093871425"
member_id: "{{member_id}}"
date_of_birth: "{{dob}}"
never_say: ["credit card", "social security number"]
max_menu_depth: 6
reprompt_on_unclear: trueSpeech-driven menus
Many systems ask you to say the option instead of pressing it. Katexs speaks the option using a slower, over-articulated delivery tuned for machine recognition, and repeats once if the far end asks again. No configuration is needed beyond enabling speech input in the IVR block.
Hold and human detection
| Signal | Interpretation | Agent behaviour |
|---|---|---|
| Music or repeating message | On hold | Stays silent, keeps the line open, logs hold time |
| Live greeting detected | Human answered | Delivers the opening line immediately |
| Voicemail beep | Machine | Leaves the configured message or hangs up |
| Prolonged silence | Dropped or dead air | Ends with end reason ivr_no_response |
Debugging a tree
- 1
Record a mapping call
Place one call with mode set to observe. The agent presses nothing and captures the full menu transcript.
- 2
Read the IVR timeline
Call Logs shows every tone sent, every prompt matched, and how long each wait took.
- 3
Script from the transcript
Copy the exact prompt wording into wait_for matches โ partial phrases are more robust than full sentences.
- 4
Re-run in Testing Lab
Replay the recorded tree as a fixture so future changes are caught without dialling out.
