# Classic IVR: navigate a menu tree with DTMF and reach the balance message. # `steps` are hints the caller follows in order; `expect` is a semantic match. schema_version: 1 name: "IVR - check account balance" target: phone: "+14155550103" kind: ivr platform: genesys persona: description: "Existing customer who knows the menu and presses keys quickly" patience: high goal: "Reach the account balance message through the IVR menu" steps: - type: expect text: "welcome message and main menu options" timeout_s: 20 - type: dtmf digits: "2" - type: expect text: "asks for the account number followed by the pound key" - type: dtmf digits: "12345678#" - type: wait seconds: 2 - type: expect text: "reads the account balance" timeout_s: 30 assertions: - id: balance-read type: transcript_regex pattern: "balance (is|of)" speaker: target - id: reached-goal type: goal_reached - id: fast-tree type: max_duration_s value: 120 severity: warn limits: max_duration_s: 180 silence_timeout_s: 30 tags: ["ivr", "dtmf"] variants: - title: "Invalid key then recovery" instructions: "Press 9 at the main menu first (invalid option), then follow the menu normally." assertions: - type: must_include text: "tell the caller the option is invalid and repeat the menu"