The largest single day in this product's history, and the one that turned a governed voice agent into a platform.
The gateway
The agent_bot bridge, mounted on a headless Chatwoot instance, with an in-process turn queue, a per-inbox HMAC token in its own table, a delivery size cap derived rather than guessed, and silence treated as an escalation instead of being ignored. The TBP channel adapter alongside it — inbound, outbound, delivery and cost — keeping the carrier's own delivery word rather than inventing one.
The screens
The Inbox: three panes, every string extracted to a key, with real Arabic. The Agent Builder with a template library, publish and rollback. A flow canvas and turn inspector, built from one object so the picture and the trace cannot disagree. Broadcasts, with audience preview and template approval. An analytics and insights dashboard over real turns, with CSAT capture and a handoff stage so two figures stop reading 100%.
Underneath
Knowledge retrieval with citations in Arabic and English, isolation proven. Per-channel guard posture with outbound binding. Campaign audiences under the caller's own RLS, consent checked at send time, and two independent stops. Connectors for Zendesk, Salesforce, ServiceNow, Freshdesk, Jira Service Management and Dynamics, behind a per-tenant credential seam, with a provider simulator that says no as well as yes. In-app chat SDKs for iOS and Android.
The seeded world
Ninety days of conversations, the people in them, and an oracle that pins every number the analytics screens report — so a screen that starts lying fails a test.
Security work
Sixteen tenant-isolation proofs turned out to be measuring visibility rather than the grant they named, and were rewritten. The MFA suite was passing with the policies it tested dropped. Three MFA policies existed only on a local database and were committed. An adversarial pass on campaigns found two leaks, and the comments that had hidden them.