Designing a Voice Agent for Customer Service
A voice agent for customer service is not a chatbot with a voice. The medium is different, the user expectations are different, the failure modes are different, and the evaluation is different. Text conversations are forgiving — the user reads at their own pace, scrolls back to verify, types and retypes their question. Voice conversations are intolerant — every second of silence feels like an eternity, the user cannot scroll back to verify, and the agent has to decide every turn whether to keep going, ask a clarifying question, or hand off to a human. In May 2026 the practitioner consensus has converged on a six-step design pattern: storyboard the flow, pick the LLM and TTS voice, design the barge-in and human-handoff policy, instrument the latency budget, ship a deflection-rate eval before going live, and iterate against the production traffic the first 72 hours produces. This lesson is that design workflow, the contact-center latency budget (sub-700-millisecond first-response, sub-1.2-second total), and the eval that has to exist before the first real customer call.
Storyboard Before You Prompt
The most common voice-agent failure mode is the one that has nothing to do with the model: the team writes the prompt first, then discovers the conversation does not flow, then patches the prompt in production. The fix is to storyboard the flow on paper (or on a whiteboard, or in a Figma file) before any LLM is invoked.
What the storyboard captures
The storyboard is a turn-by-turn walkthrough of the happy-path conversation. Each panel:
- The user's utterance (in the user's actual words, not summarized)
- The agent's intended response (the words the agent should say)
- The internal action the agent takes (tool call, RAG lookup, state update)
- The latency budget for the turn (how long the user is willing to wait)
- The branching points (what does the agent do if the user says something different?)
For a typical customer-service flow (an account-balance inquiry, an appointment reschedule, a refund request), the storyboard runs 8-15 panels. The happy path is the first storyboard; the unhappy paths are the second through sixth.
Why the storyboard reveals problems prompts cannot
When the team writes the prompt first, the prompt encodes assumptions the team has not surfaced. The storyboard surfaces them. "Wait — does the agent verify identity before reading the account balance, or after the user has explained the reason for the call?" That question, asked in panel 3, prevents an hour of debugging in production.
The storyboard also reveals where the model is doing too much. If panel 4 has the agent computing "your last three transactions" from a long conversation history, the storyboard reveals that the right design is a tool call to the transaction API, not free-form generation. The storyboard is where the team decides what is the model's job and what is the system's.
The storyboard is the artifact the design discussion produces, the artifact the eval set references, and the artifact the post-launch retrospective reviews. Voice agent designs that skip storyboarding ship faster and break more.
Pick the LLM and the TTS Voice
Two technology choices dominate the user experience: the language model and the text-to-speech voice. They are independent decisions; the workflow benefits from making them separately.
LLM selection for voice
The four frontier models in 2026 — GPT-5, Claude Sonnet 4.5, Claude Opus 4.5, Gemini 2.5 Pro — all support voice-style conversation. The differences:
- Time-to-first-token. Claude Sonnet 4.5 streams first tokens in 220-280 ms; GPT-5 in 250-320 ms; Gemini 2.5 Pro in 280-360 ms. For sub-700-millisecond first-response budgets, the 60-100 ms difference matters.
- Instruction-following at short context. Voice prompts are typically short (under 4k tokens). All four models perform well; Claude Sonnet 4.5 and GPT-5 lead on adherence to system-prompt constraints.
- Conversational pacing. Whether the model produces "voice-friendly" output — short sentences, natural transitions, appropriate use of acknowledgments ("got it," "okay," "sure"). Claude Sonnet 4.5 leads here; GPT-5 is close; Gemini 2.5 Pro requires explicit prompt scaffolding.
- Tool-call latency. When the agent has to call a tool, the round-trip is the LLM's tool decision + tool execution + LLM's response generation. Models that decide to call tools quickly and incorporate results compactly win on tool-heavy flows.
The 2026 default for new voice projects: Claude Sonnet 4.5 for inbound contact-center work where conversational pacing and instruction-following matter most. GPT-5 for tool-heavy flows where the agent does extensive backend work. Gemini 2.5 Pro for cost-sensitive long-call workloads.
TTS voice selection
The voice is the brand. The user remembers the voice longer than the words. Three platforms dominate:
- ElevenLabs Turbo 2.5. Highest fidelity, widest accent range, premium pricing ($0.04/minute at volume). First-audio latency 130-180 ms.
- Cartesia Sonic. Lowest first-audio latency in the market (90-130 ms), good fidelity, mid-tier pricing ($0.03/minute). The default for latency-constrained workloads.
- Rime. Conversational-focused voices with strong support for acknowledgments and short utterances. 110-160 ms first audio.
The voice selection process: A/B test three candidates against a sample of real user utterances. Record each agent response in each candidate voice; play to 5-10 users from the target demographic; ask which sounds most trustworthy, most professional, most natural. The exercise takes a week and produces a defensible decision.
Voice cloning and custom voices
For brand-sensitive deployments, voice cloning produces a custom voice that does not exist in the off-the-shelf catalog. ElevenLabs and Cartesia both support voice cloning. The trade-off is regulatory — voice cloning raises consent and disclosure questions that an off-the-shelf voice does not. The 2026 best practice for cloned voices in customer service: disclose the AI nature upfront ("this is Skye, our automated assistant"), record consent for the cloned voice if it is based on a real person, and avoid impersonating a known voice (a celebrity, a specific employee).
Design the Barge-In Policy
Barge-in is the technical term for the agent stopping mid-sentence when the user starts speaking. A voice agent that cannot barge in is unusable; one that barges in incorrectly is annoying. The design choices:
Barge-in sensitivity
The platform's VAD threshold determines how quickly the agent registers the user as having started speaking. Too sensitive: the agent stops every time the user clears their throat or there's background noise. Too insensitive: the user has to say two or three words before the agent stops. Tune the threshold against a sample of 50-100 real user audio recordings before going live.
Barge-in behavior
When the agent is interrupted, what does it do? Three patterns:
- Stop and listen. The agent stops speaking immediately, listens to the user, then responds to the new input. Default for most flows.
- Acknowledge and continue. The agent says "right" or "yes" and continues the previous sentence. Useful when the agent is explaining policy and the user is offering acknowledgment, not new input.
- Stop and clarify. The agent stops, asks the user to repeat or clarify. Useful when the barge-in is partial and the user's intent is unclear.
The default for customer service is "stop and listen." The other patterns require specific configuration and are most useful in vertical-specific flows.
The 100-millisecond audio flush requirement
The agent has to stop speaking within 100 ms of barge-in detection. Above 100 ms, the user perceives the agent as "talking over me." All four major platforms (Vapi, Retell, Bland, ElevenLabs Agents) support sub-100-ms flush; the customer's responsibility is to enable it and to tune the audio buffer length appropriately.
Design the Human Handoff
Every customer-service voice agent has to hand off to a human at some point. The handoff design is where most voice agents fail in production.
When to hand off
Three triggers for handoff:
- Explicit user request. The user says "let me talk to a human" or "agent" or "representative." The agent recognizes the request and hands off without questioning.
- Confidence threshold. The agent's internal confidence score (or the LLM's own self-assessment) drops below a threshold. The agent escalates rather than fabricating a confident answer.
- Topic escalation. The conversation enters a topic the agent is not authorized to handle — billing disputes, complaints, retention conversations, legal questions. The agent escalates by policy.
Handoff mechanics
The technical handoff has four steps:
- Pause the agent. The agent stops speaking; the call enters hold.
- Route to queue. The platform routes the call to the appropriate human queue (skills-based routing, language routing, complexity routing).
- Brief the human. The human picking up the call receives a context summary (transcript so far, customer identity, conversation topic, agent's last assessment). The summary should be 2-3 sentences, not the full transcript.
- Hand off conversation control. The human takes over. The agent's role becomes optional — most contact centers use the agent for the transcript, not for the ongoing conversation.
The unavailable-human fallback
What happens when the human queue is empty or all humans are busy? The 2026 best practice:
- Offer a callback. "All our agents are with other customers. We can call you back within 15 minutes — would you like that?" Capture the callback number and the time window.
- Offer asynchronous handoff. "I can have an agent email you within an hour at the address on file — would that work?"
- Offer scheduled callback. "Our agents are available again at 2pm Pacific. Can I schedule a callback for 2:15pm?"
- Avoid the infinite hold. "Please hold while I find someone" without a defined timeout produces 4-6 minute abandonment.
Retell's contact-center features include first-party configuration for all four fallback patterns. Vapi requires the customer to wire the patterns in the conversational flow.
Instrument the Latency Budget
Sub-700-millisecond first-response is the contact-center bar. Sub-1.2-second total turn is the bar for the rest of the agent's response. Both numbers have to be measured in production, not assumed.
What to measure
Per call, per turn, capture:
- Time from user-finished-speaking to STT first partial
- Time from STT first partial to semantic-VAD endpoint
- Time from endpoint to LLM time-to-first-token
- Time from LLM first token to TTS first audio
- Total first-response time (end-to-end)
- Total turn time (until agent's response complete)
The platforms differ in what they expose. Vapi exposes all six metrics per call. Retell exposes the four sub-metrics and the two totals in the dashboard. Bland exposes total first-response and total turn. ElevenLabs Agents exposes per-layer at the trace level.
The latency alerting threshold
Alert when the p95 first-response exceeds 800 ms or the p95 total turn exceeds 1.5 seconds. The p95 is the metric that matters; the average can hide tail latency. The 2026 contact-center alerting convention: 800 ms is the warning threshold (action required within a day); 1 second is the page threshold (immediate response).
Where latency degrades in production
Three common production degradations:
- Prompt growth. The system prompt was 2k tokens at launch; six weeks in, it's 6k tokens because the team kept adding "and also handle this case" instructions. LLM time-to-first-token degrades sharply above 4-5k tokens. Fix: rewrite the prompt every six weeks against the production traffic, removing accumulated cruft.
- Tool latency. A tool that was 200 ms at launch is now 800 ms because the backend team added a new database join. The voice latency budget blows. Fix: monitor tool latency as a first-class metric and treat regressions as production incidents.
- Regional drift. The agent runs on us-east-1; a new customer base in EU calls in. The cross-Atlantic round-trip adds 200 ms to first-response. Fix: deploy regional endpoints and route based on caller location.
Ship a Deflection-Rate Eval Before Going Live
The deflection rate — the percentage of calls the agent resolves without human handoff — is the primary commercial metric for a customer-service voice agent. Above 60% deflection, the agent pays for itself. Below 40%, the agent costs more than it saves.
What the deflection eval measures
The eval has two components:
- Resolution. Did the agent successfully complete the user's intended task? Measured against a labeled ground truth (account balance correct, refund processed, appointment scheduled).
- Quality. Did the user have a good experience? Measured by post-call survey (1-5 rating) or by inferred satisfaction from conversation analysis.
A call is "deflected" if it resolved AND the user did not request escalation AND the post-call quality is acceptable. Each component has to clear the bar.
The eval set composition
The deflection eval set covers:
- Golden cases (40% of the set). Clear, common user requests with unambiguous correct answers. "What's my account balance?" "Can I reschedule my appointment to Friday?" "Process a $50 refund."
- Edge cases (35%). Real but unusual requests. Users with multiple accounts asking about "my balance." Users asking compound questions ("can you reschedule my appointment and update my address?").
- Adversarial cases (15%). Deliberately tricky inputs. Users testing the agent ("can you cancel my account if I say please?"). Users with confusing speech patterns. Users who barge in mid-sentence.
- Escalation cases (10%). Cases where the agent should escalate. The eval validates that the agent recognizes and routes correctly, not that it tries to resolve.
Total set size: 200-500 cases for a typical contact-center flow. The set is generated from real call transcripts (anonymized) and from synthetic cases the team writes against the storyboard.
The deflection eval workflow
Before launch:
- Run the eval on the candidate agent. Measure deflection rate.
- If deflection is above 60%, launch in shadow mode (the agent runs alongside human agents but does not actually handle calls).
- Run the eval again after one week of shadow traffic. Add 20-50 new cases that the shadow surfaced.
- If deflection holds above 60% with the expanded set, launch in limited production (10% of calls).
- Run the eval again after one week of production traffic. Expand to full production if deflection holds.
The eval is run continuously in production. A regression below the threshold triggers a rollback decision.
The First 72 Hours in Production
The biggest learning happens in the first 72 hours after launch. The eval set, however carefully constructed, cannot anticipate every real-world input. Plan for intensive monitoring and iteration during this window.
What to watch
- Deflection rate hourly. Track the deflection rate hour by hour for the first 72 hours. Drift below the target triggers immediate investigation.
- P95 latency hourly. First-response and total turn. Tail latency at scale is different from tail latency in eval.
- Escalation reasons. Sample 20 escalated calls per hour. Categorize the reasons. Pattern recognition surfaces gaps in the agent's coverage.
- Customer feedback. Post-call surveys and any direct feedback that comes back through customer-service channels.
- Interruption rate. What fraction of agent utterances are barged in on? A high rate (above 30%) indicates the agent's responses are too long.
The 72-hour retrospective
At the end of 72 hours, the team meets:
- Review the deflection rate trend. Stable? Improving? Degrading?
- Review the escalation reasons. New cases to add to the eval?
- Review the latency trend. Any regressions?
- Review the customer feedback. Any patterns?
- Decide: expand to full production, hold at current traffic, or roll back.
The retrospective produces an updated eval set (typically 30-50 new cases) and an updated set of prompt or tool changes. The agent re-runs the deflection eval against the expanded set before the next expansion.
Three Real Failure Modes from 2025-2026 Deployments
Failures encountered by named teams; lessons distilled.
The hold-music loop
A fintech ran a Vapi-based balance-inquiry agent for six months. The agent worked beautifully for in-hours calls. Out of hours, the agent tried to escalate but found no humans available. The fallback was "please hold while I find someone." The hold loop played for 11 minutes on the average out-of-hours call before the customer hung up. The team launched without out-of-hours fallback design.
The lesson: the unavailable-human fallback is not an optional feature. Design it before launch.
The runaway sympathy spiral
A health-plan customer-service agent (built on Retell) handled member complaints. The model (Claude Sonnet 4.5) was trained to be empathetic. When members expressed frustration, the agent responded with increasingly elaborate empathetic acknowledgments. Calls grew from 3-minute average to 7-minute average. The deflection rate held but the cost per call doubled. The team had not bounded the empathy budget.
The lesson: in voice, sentence length is a cost lever. Prompt the agent for concise empathy ("I understand. Let me help with that.") not elaborate empathy ("That sounds incredibly frustrating, and I really hear what you're saying...").
The accent-driven escalation
A retail customer-service agent (built on Vapi with Deepgram STT) had a deflection rate of 68% in the US English customer base and 31% in the Indian English customer base. The STT was producing higher word-error-rate on Indian English, which caused the agent to fail comprehension, which triggered escalations. The team had run the eval in US English only.
The lesson: STT performance varies by accent and dialect. Eval has to cover the actual customer demographic, not the engineering team's default.
Key Takeaways
- Storyboard the conversation flow before writing the prompt. Each panel captures user utterance, agent response, internal action, latency budget, branching points. The storyboard surfaces assumptions that prompts hide.
- Pick the LLM and the TTS voice as separate decisions. 2026 defaults: Claude Sonnet 4.5 for conversational inbound work, GPT-5 for tool-heavy flows, Gemini 2.5 Pro for cost-sensitive long calls. ElevenLabs Turbo 2.5 for fidelity, Cartesia Sonic for latency, Rime for conversational pacing.
- Barge-in is non-negotiable. Tune VAD threshold against real audio, default to "stop and listen" behavior, ensure 100-millisecond audio flush.
- Human handoff has four steps: pause, route, brief, hand off. Brief the human with 2-3 sentences of context, not the full transcript.
- The unavailable-human fallback is the most common production gap. Offer callback, asynchronous handoff, or scheduled callback. Never play indefinite hold music.
- Sub-700-millisecond first-response, sub-1.2-second total turn. Measure per layer (STT, VAD, LLM, TTS) and per total. P95 alerts at 800 ms / 1.5 s.
- Three latency degradation patterns in production: prompt growth (rewrite every 6 weeks), tool latency regressions (monitor as first-class metric), regional drift (regional endpoints).
- Deflection rate is the commercial metric. Above 60%, the agent pays for itself. Eval set: 40% golden, 35% edge, 15% adversarial, 10% escalation. 200-500 cases. Shadow mode then 10% then full production.
- The first 72 hours in production produce the most learning. Track deflection rate, p95 latency, escalation reasons, customer feedback, interruption rate. Retrospective produces 30-50 new eval cases.
- Three real failure modes: the hold-music loop (design out-of-hours fallback), the runaway sympathy spiral (bound empathy budget), the accent-driven escalation (eval across actual customer demographics).
Skill.re