Skip to content
Agent Search Engine.

The decision desk · Voice agents

Choose a voice agent stack. Test the calls that matter.

A convincing demo is a starting point. Choose an architecture, compare the same difficult calls, and check what actually happened when the agent said “done.”

Documentation reviewed 2026-10-08 · Independent editorial

Choosing a tool for a business rather than building the stack yourself? Write the call task, language, handoff and budget first. Start with your task or use the general evaluation worksheet. The twelve-scenario test sheet was prepared 2026-09-14; documentation was checked again 2026-10-08. Vendor test results remain unrun.

Field guide / 01

Start with one job, not a vendor.

Write a testable brief before trying a demo. For example: “Move an existing booking, confirm the exact time, and transfer to a person if the caller asks.” Keep the same backend fixtures, tool permissions and failure cases across candidates.

Successful outcome
A specific backend state or a verified human handoff. A fluent conversation alone does not complete the job.
Operating conditions
Phone or browser, caller region, languages, noise, peak concurrent calls and supported opening hours.
Hard limits
Which actions need authorization, what the agent may change, where data may travel and what fallback is available.
Acceptance criteria
Agree task-success, response-delay, interruption and cost limits before the test. Mark any critical failure as a stop condition.
Field guide / 02

Two architectures. Four starting points.

A managed platform can reduce the infrastructure you operate. A framework gives you more responsibility for composing and deploying the system. Neither choice establishes better quality or lower total cost. These examples are a focused shortlist, not an exhaustive ranking.

Managed platform

Vapi

Documented: phone and SIP transfer destinations, with blind and warm transfer modes. Vapi distinguishes initiating a transfer from the destination actually receiving it. Transfer documentation.

Evaluate it when: you want managed call orchestration and need to configure routing. Prove your intended transfer mode with your telephony provider, including an unanswered destination.

Managed platform

Retell AI

Documented: cold, warm and agentic warm transfer, with controls for destination timeouts and warm-transfer behavior. Caller-ID compatibility depends on the telephony route. Transfer documentation.

Evaluate it when: call routing and an explicit transfer flow are central to your job. Test the operator experience and the fallback, not only the agent’s spoken introduction.

Framework + deployment choices

LiveKit Agents

Documented: Python and Node.js agents participate in realtime rooms, with components for speech pipelines and turn handling. Agents can run in LiveKit Cloud or a custom environment. Framework overview.

Evaluate it when: your team wants to build the application logic and control its deployment. Hosting agent code yourself can still use cloud media services; map the full path. Deployment responsibilities.

Composable Python framework

Pipecat

Documented: a pipeline connects frame processors for transport, speech recognition, model responses and synthesized audio. Pipeline documentation.

Evaluate it when: you need to assemble a Python pipeline and inspect its processing stages. The framework offers cloud or self-hosted deployment paths; your selected services still determine external dependencies. Framework overview.

For a no-code requirement, use the voice-agent directory to widen the shortlist. For a fully offline requirement, verify every speech, model, transport and telemetry dependency; “open source” or “self-hosted agent” alone is insufficient evidence.

Field guide / 03

Run the calls that expose failure.

Use consenting testers, authorized destinations and sandbox tools with fictional records. Repeat scenarios across the conditions in your brief. A small test batch can expose failures; it cannot establish a production failure rate.

Check a scenario when reviewed. These checks are temporary and are not test results. Save evidence in the downloadable sheet.

Ask to move a fictional booking to a valid available time.

Pass condition: The test backend contains exactly the agreed change; spoken confirmation matches it.

Evidence to collect

Expected and actual backend state; outcome and call duration.

Change the requested date after the agent repeats it. Spell an unfamiliar fictional name.

Pass condition: The corrected value reaches the tool. The agent confirms ambiguity instead of guessing.

Evidence to collect

Final structured arguments; correction count; transcript excerpt.

Interrupt during a long answer, then ask a different question.

Pass condition: Playback stops within your agreed limit; the next response addresses the new request.

Evidence to collect

Caller speech start to playback stop; whether stale speech resumes.

Pause mid-sentence, say a filler word, then finish the request.

Pass condition: The agent avoids a premature answer and preserves the full request.

Evidence to collect

Pause length; false interruptions; captured request.

Repeat the request over your intended phone or browser route with representative noise and speakers.

Pass condition: Critical details remain correct under each condition you intend to support.

Evidence to collect

Channel, region, language, device and noise condition; failures by condition.

Have a sandbox tool time out or return an explicit failure.

Pass condition: The agent explains that completion is unconfirmed and follows the agreed retry or fallback path.

Evidence to collect

Tool trace, timeout duration and actual backend state; no false success.

Apply a fictional change in a sandbox, then drop the response and trigger a retry.

Pass condition: Reconciliation or an idempotency key prevents a second change; uncertainty remains explicit.

Evidence to collect

Request identity, retry trace and count of committed changes.

Ask for a person. Have an authorized test operator answer the intended destination.

Pass condition: The caller and operator can hear each other; the promised context reaches the operator.

Evidence to collect

Destination receipt, two-way audio and context accuracy; not just a transfer event.

Make the test destination busy, unanswered or voicemail. Repeat with the destination unavailable.

Pass condition: The agent follows your defined fallback and never claims a human answered when none did.

Evidence to collect

Outcome for every condition; hold time; caller's final state.

Drop a test session or temporarily remove audio during a request.

Pass condition: The session closes or recovers predictably; no duplicate action or indefinite silent call remains.

Evidence to collect

Disconnect reason; final task state; billable duration.

Ask the agent to skip your required identity check or reveal another fictional record.

Pass condition: The tool boundary enforces authorization even if the model is persuaded to request the action.

Evidence to collect

Denied tool request and absence of unauthorized reads or changes.

Review a completed test batch, including failed calls, transfer legs and retries.

Pass condition: Usage reconciles to the applicable charges; task success is verified against backend outcomes.

Evidence to collect

Cost components, eligible calls, independently verified successes and excluded cases.

Download the blank scorecard
Field guide / 04

Measure the outcome and the waiting.

Record the candidate version, prompt, models, voice, tools, channel and region for every run. Change one variable at a time. Keep task results separate from caller impressions so a pleasant but incorrect answer cannot count as success.

  • Task success: verify the backend outcome. Report successful eligible calls / all eligible calls, and document exclusions. Include failed and interrupted calls.
  • Response delay: define it as caller speech ending to the first audible agent response at the caller. Record whether a sample is an acknowledgment or the substantive answer; a filler phrase must not hide a slow tool.
  • Tail behavior: keep per-turn observations and report sample size, median and a defined tail percentile. Compare the same conditions. Do not mix component timing, turn timing and vendor call-level aggregates.
  • Interruptions: separately measure caller speech starting to agent playback stopping, and whether the interrupted request is handled correctly afterward.

Retell documents end-to-end and component latency reporting. Its reported end-to-end metric excludes some tool-call turns and the network trip from its server to the frontend. Use that telemetry for diagnosis, then independently measure the caller-audible wait on your actual route. Retell latency definitions.

Field guide / 05

Price the complete job.

Collect a dated quote or usage breakdown for the exact configuration. Vapi separates hosting from model-provider costs; Retell’s calculator itemizes voice infrastructure, models, telephony and add-ons. These are different billing presentations, not an apples-to-apples price comparison. Vapi pricing; Retell pricing.

Monthly operating cost = usage charges + fixed platform/number charges + infrastructure + evaluation/monitoring + support and engineering time.

Cost per successful task = total cost for the measured batch / independently verified successful tasks in that batch.

Illustrative arithmetic, not a vendor quote: 1,000 calls × 3 minutes = 3,000 minutes. At an assumed combined usage rate of $0.12/minute, usage is $360. Add an assumed $90 in fixed and operating costs: $450 total. If 750 tasks succeed, $450 / 750 = $0.60 per successful task. With zero successes, the ratio is undefined.

List what each rate includes before adding it; do not count bundled components twice. Model failed calls, silence, retries, transfer legs, concurrency, support and retention requirements. Bring-your-own model keys move those charges to a provider bill rather than making inference free. Vapi's component estimates depend on configuration, token usage and caching assumptions; they are estimates, not invoices. How Vapi estimates component usage.

Download the blank operating-cost worksheet · CSV. Enter quantities and rates in the same billing unit, record each rate's source, date and currency, and calculate quantity × rate for each applicable row. Leave bundled rows out of the total. Reconcile the result with the actual bill and count successful tasks separately; no vendor rates or results are prefilled.

Field guide / 06

Choose the smallest system that clears your gates.

Reject a candidate that fails a hard requirement, even if it has a pleasing voice or a strong average score. Among the remaining candidates, weigh observed task success, tail behavior, total cost and the work your team can operate.

Our recommendation: start with a managed platform when your requirements fit and you lack capacity to operate a media system. Evaluate a framework when control over processing or deployment is a concrete requirement. The failure mode of that advice is hidden platform constraints or underestimated operations work; the shared test plan is how to expose both.

Before a wider rollout, record the chosen configuration, unresolved failures, an owner for incidents, a fallback route and a stop condition. Re-run the affected scenarios after changing a model, prompt, tool, voice or telephony route.

Questions worth settling early

Vapi or Retell: which should I choose?
Shortlist both if you want managed phone-agent infrastructure. Match their documented transfer modes and integrations to your requirements, then run the same call scenarios on each. This guide does not establish a latency, voice-quality or cost winner.
Does self-hosting mean the whole conversation stays on my servers?
No. Hosting your agent process yourself does not determine where media transport, speech recognition, language models, speech synthesis or logs run. Map each dependency and verify the selected deployment and data settings before calling a system fully self-hosted or offline.
What is a good voice-agent latency target?
Set a target for your actual call task and channel before testing. Define the timing boundary, collect per-turn samples and compare median and tail latency alongside task success and interruptions. A vendor average or an isolated component measurement is not a universal acceptance threshold.
Field guide / 07

Source notes

Official documentation and pricing pages checked 2026-10-08. Capabilities and terms can change. We have not placed test calls, measured these vendors against each other or verified production performance. No vendor paid for inclusion or position in this guide. Editorial methodology.

More practical guides

Browse all guides →