An enterprise support voice agent that optimizes for operational reality: tool-calling, voice agents, escalation, traces, fallbacks, and a clear forward deployed story.
Many voice-agent demos work only when the user speaks clearly, the backend is healthy, and the request fits one happy path. This repo is intentionally about what happens when those conditions fail.
- you can model a support workflow as a control loop instead of a single prompt
- you can route across tools, fallback states, and human handoff
- you think about latency budget, interruption handling, and observability up front
app/voice_agent.py: orchestration loop and state machinedocs/architecture.md: system design and deployment notesdocs/runbook.md: operator playbookdocs/latency_budget.md: user-facing responsiveness targetsscripts/demo_session.py: run a mocked session locallydata/mock_tool_results.json: synthetic backend datatraces/sample_trace.json: example execution trace
- caller describes an issue
- agent classifies intent and confidence
- tool call executes against mocked support systems
- agent either answers, asks a clarifying question, or escalates
- trace is written for debugging and review
python3 scripts/demo_session.py --input "My refund is stuck and the bot said my account is locked."- low ASR confidence triggers clarification
- missing tool data triggers a bounded fallback response
- policy-risk or repeated failure triggers human handoff
- long latency triggers a brief progress utterance before the next step