Sub-second
Target end-to-end response budget, measured stage by stage
Barge-in
Interruption handling designed in, not patched on afterwards
SIP + WebRTC
The same agent on a phone line and in the browser
Replayable
Tuned against recorded calls, not live experiments on customers
Demos sound great. Production calls are where voice agents fall apart.
In a demo you speak clearly, one sentence at a time, into a laptop microphone in a quiet room, over WebRTC, watching a UI that shows the agent is thinking. In production the caller is on a mobile in a moving car, over a narrowband phone codec, with no visual feedback whatsoever. The only evidence that anything is happening is whether they can hear a voice. A 300ms gap that feels instant in a browser reads as dead air on a phone line — and somewhere past a second, people start saying “hello?” and talking over the answer that was about to arrive.
The failure modes are specific and they compound. Endpointing fires too early and the agent confidently answers a sentence the caller had not finished. Raise the silence threshold to fix that and every single turn now costs an extra few hundred milliseconds. Barge-in that is not handled properly means the agent keeps talking over an interruption — or stops, but still believes it said every word it generated, so the rest of the conversation is built on sentences the caller never heard. And each tool call you add, a CRM lookup or an availability check, is a full extra round trip through the model. That is usually where a sub-second agent quietly becomes a three-second one.
So we start with a latency budget rather than a prompt. Where the milliseconds actually go — VAD and end-of-turn detection, ASR finalisation, LLM time-to-first-token, TTS time-to-first-byte, and the network path underneath all of it — then we design against that budget: streaming at every stage, slow lookups moved off the critical path, unavoidable waits covered with speech instead of silence, endpointing tuned per channel. And we tune on recorded calls with real accents, real background noise and real interruptions, because a voice agent tested only by the team that built it has been tested exclusively by people who already know what to say.
Core Capabilities
Voice agent stacks compared
Four realistic ways to ship a voice agent. The honest difference between them is how much of the pipeline you own — and therefore how much of it you are responsible for.
If your use case is a scripted flow — appointment reminders, qualifying inbound leads, order status — a managed platform is genuinely the right answer, and cheaper than what we would charge to rebuild it. Build custom when the latency budget is tight, when audio or transcripts cannot leave a jurisdiction, when the telephony routing is unusual, or when the agent needs to reach deep into systems a platform will never integrate with.
Our Process
Call Flow & Latency Budget
We map the conversations the agent actually has to hold, then write the millisecond budget per stage before picking any model. This is also where we decide what must happen during the call and what can happen after it — the cheapest latency win is work you move off the call entirely.
Stack Selection
Cascading ASR → LLM → TTS or a speech-to-speech model, self-hosted or managed, chosen against the budget and the control you need. If the honest answer is that a platform covers your case, we say so at this step rather than three months in.
Build & Instrument
The pipeline on LiveKit Agents or Pipecat, streaming at every stage, with per-stage timing traces from the first commit. Barge-in, interruption handling and conversation-state truncation go in now — retrofitting turn-taking into a working agent is close to a rewrite.
Tune Against Real Audio
Endpointing thresholds, ASR hints for names, products and codes, TTS pacing and filler behaviour — all tuned on recordings of your actual callers on your actual channel. Accented, noisy and interrupted audio is the test set, not the edge case.
Deploy, Monitor & Hand Over
Containerised into your infrastructure, with per-call traces and latency percentiles in your observability stack, recordings and transcripts wherever compliance needs them, a runbook, and the evaluation suite in CI. You own the code.
Tech Stack
We choose the right tool for the job — not the trendiest one.
Python
OpenAI Realtime

