Kit · 2026-10-03
Voice agent
voice
Hears or speaks on a call or a realtime channel, and confirms account-changing actions before they run.
Needs below are the JTBD ids already listed on this class, capped at 6. The pick is the current Depot Pick. The cheapest line is that job's matching sourced SKU, or unavailable. A free row is listed only when its jtbd ids include that job. This page does not rescore. Agents that cannot spend use ?cost=free and must not treat the paid pick as free.
GET /api/kit?class=voice · ?cost=free · all kits · class JSON
Depot Pick: elevenlabs · score as of 2026-09-14 · /api/jtbds/voice-agents
Depot Pick for voice-agents: elevenlabs (asOf 2026-09-14). See GET /api/jtbds/voice-agents + GET /api/methodology.
pickIsNotPriceWinner: true
Cheapest matching SKU: vapi · Vapi hosting · 0.05 usd_per_minute · not a per-million-token rate. min sourced voice-agent hosting minute among candidates; usd_per_minute only; not speech-to-text; not a speech-engine minute; not a chat $/1M rate; not quality-adjusted
Pick is not a price winner. Cheapest matching USD per voice-agent minute among candidates is vapi at 0.05. The pick has no matching sourced price. Chat input $/1M was not borrowed.
Depot Pick: vapi · score as of 2026-09-14 · /api/jtbds/voice-agent-platform
Depot Pick for voice-agent-platform: vapi (asOf 2026-09-14). See GET /api/jtbds/voice-agent-platform + GET /api/methodology.
pickIsNotPriceWinner: false
Cheapest matching SKU: vapi · Vapi hosting · 0.05 usd_per_minute · not a per-million-token rate. min sourced voice-agent hosting minute among candidates; usd_per_minute only; not speech-to-text; not a speech-engine minute; not a chat $/1M rate; not quality-adjusted
Pick is the cheapest matching USD per voice-agent minute among candidates (0.05).
Free resources
freeMatch: none
none
Depot Pick: deepgram · score as of 2026-10-19 · /api/jtbds/speech-to-text
Depot Pick for speech-to-text: deepgram (asOf 2026-10-19). See GET /api/jtbds/speech-to-text + GET /api/methodology.
pickIsNotPriceWinner: true
Cheapest matching SKU: cloudflare-workers-ai · @cf/openai/whisper audio minute · 0.0005 usd_per_minute · not a per-million-token rate. min sourced speech-to-text SKU among candidates; usd_per_minute only; not a chat $/1M rate; not quality-adjusted
Pick is not a price winner. deepgram matching USD per minute is 0.0043; cheapest among candidates is cloudflare-workers-ai at 0.0005.
Depot Pick: elevenlabs · score as of 2026-09-14 · /api/jtbds/speech-synthesis
Depot Pick for speech-synthesis: elevenlabs (asOf 2026-09-14). See GET /api/jtbds/speech-synthesis + GET /api/methodology.
pickIsNotPriceWinner: true
Cheapest matching SKU: deepgram · Aura-2 · 0.03 usd_per_1k_characters · not a per-million-token rate. min sourced speech-synthesis SKU among candidates; usd_per_1k_characters only; not a chat $/1M rate; not quality-adjusted
Pick is not a price winner. elevenlabs matching USD per 1k characters is 0.04; cheapest among candidates is deepgram at 0.03.
Depot Pick: cartesia · score as of 2026-09-14 · /api/jtbds/realtime-tts
Depot Pick for realtime-tts: cartesia (asOf 2026-09-14). See GET /api/jtbds/realtime-tts + GET /api/methodology.
pickIsNotPriceWinner: true
Cheapest matching SKU: deepgram · Aura-2 · 0.03 usd_per_1k_characters · not a per-million-token rate. min sourced speech-synthesis SKU among candidates; usd_per_1k_characters only; not a chat $/1M rate; not quality-adjusted
Pick is not a price winner. Cheapest matching USD per 1k characters among candidates is deepgram at 0.03. The pick has no matching sourced price. Chat input $/1M was not borrowed.
Depot Pick: deepgram · score as of 2026-10-19 · /api/jtbds/production-stt
Depot Pick for production-stt: deepgram (asOf 2026-10-19). See GET /api/jtbds/production-stt + GET /api/methodology.
pickIsNotPriceWinner: false
Cheapest matching SKU: deepgram · Nova-3 Monolingual pre-recorded speech-to-text · 0.0043 usd_per_minute · not a per-million-token rate. min sourced speech-to-text SKU among candidates; usd_per_minute only; not a chat $/1M rate; not quality-adjusted
Only 1 candidate has a matching USD per minute; nothing was compared, so pickIsPriceWinner is null.
Failure modes
Silent truncation silent-truncation
Tools must return whether the payload was truncated and how long the original was. Fail the task if the answer depends on the missing span.
Identity confusion identity-confusion
Bind every tool call to a user or tenant id. Refuse the call if that id changed mid-task. For a public bot, the operator owns the words the bot shows.
Over-refusal over-refusal
Log refusals separately from successes. Review a sample against the written policy. Do not treat a refusal as a pass, and do not weaken a safety check to raise the pass rate.
Non-determinism non-determinism
Run the task more than once and compare the end state, not a single transcript. Record the trial count next to any success rate you cite.
Partial tool success partial-tool-success
Require a per-item status and a failure count. Success for the task requires the failed count to be zero or explicitly handed to a retry queue.
Confirmation skip confirmation-skip
Gate those tool names on an approval id recorded before the call. A missing approval is a failure even if the downstream tool returns success.
Runaway spend runaway-spend
Set a budget and a tool-call cap per task. Alert when spend jumps. Stop the run at the cap instead of summarizing a partial trace as success.