The problem: "Where is my order?" is the most common post-purchase question in e-commerce, and the business can already answer it from its own data. Shoppers still wait for a human, fight an IVR menu, or type order numbers into a chatbot that breaks on the first follow-up. It is a voice problem, and most voice agents make it worse because they cannot be interrupted. What it does: the shopper opens the page and talks. The agent looks up their orders before asking anything, answers in two sentences, and puts tracking numbers on screen instead of reading them aloud. It can start a return, cancel an unshipped order or change an address. For anything that changes data it checks the action is possible, reads it back, and waits for an explicit yes. What makes it different: we took the Realtime STT path and own turn-taking. When the shopper talks over the agent, the browser's playback buffer is cleared at once; barge-in fires on the first real word of a streaming partial, while backchannels like "mhm" are ignored; and memory keeps only the words the shopper actually heard, computed from the audio the browser played. Built to be trusted: state-changing tools are gated in code, not in the prompt. An unknown tool, invalid arguments, a speculative turn or a missing confirmation stops the call. Returns are idempotent, and the agent never claims a success the tool did not report. Measured and shown: every turn draws a live latency waterfall. On the deployed app the agent went silent 1.14 s after being interrupted and answered in 3.0 s (median). On Groq's free tier the live demo serves one conversation at a time. Stack: AssemblyAI Universal-Streaming, Groq gpt-oss-120b with a manual tool loop, Orpheus TTS, FastAPI + asyncio, TypeScript AudioWorklets, SQLite. 288 tests.
Category tags: