
Every business that promises things on the phone (a delivery day, a time window, a price) loses that promise the moment the call ends. Plans change, and nobody calls the customer back before they find out the hard way. Unsay turns every binding promise into a register entry: the value, the exact words, the speaker, and the audio window they were spoken in, playable at the exact second with the words highlighted. When the source of truth changes (a truck is rescheduled, a slot fills up), the entry flips to "broken" and Unsay places an outbound call on its own. The agent quotes its own earlier promise, offers only slots that are actually free, and closes the loop with a new, equally-anchored entry. Three AssemblyAI products carry the product. The Voice Agent API runs both the inbound order-desk call and the self-triggered callback over Twilio Media Streams (native G.711 μ-law, zero transcoding), with live tool calls: lookup_order, confirm_new_value, offer_alternative. Every recording is re-transcribed with Universal-3.5 Pro for word-level timestamps and speaker labels, and the LLM Gateway extracts commitments as structured JSON. A deterministic word-aligner, not the LLM's guess, anchors each quote to real start/end milliseconds. If it can't find the quote, the entry ships without a play button rather than a fake one. Honest by construction: the order table and free slots are curated demo data, labeled in the UI. Outbound calls are hard-restricted in code to one allowlisted number, and a CALLS_ENABLED switch keeps the public demo from dialing anyone. Everything else is real: phone bridge, recording, transcription, extraction, anchoring, and the callback itself. Stack: Node 20, TypeScript, Fastify + WebSockets, SQLite, vanilla JS UI with Server-Sent Events. Deployed on Fly.io because long-lived WebSocket connections rule out serverless hosts.
30 Sep 2026