olive. engineering

Our demo line runs on the production call path, on purpose

Staging parity is a myth you pay for twice; we isolate the demo by data, not by path, and test it with a probe that publishes real audio.

2026-07-23demo-infra

Where the field is

The environments literature has quietly given up on perfect staging parity. Production accumulates years of schema migrations, organic edge cases, and data combinations no synthetic snapshot reproduces; the current advice is "relevant parity" (match the runtime, database versions, and external service config that actually change behavior) plus controlled testing in production for everything else. Voice AI makes this worse than ordinary web software, because the thing being demoed IS the production behavior: latency under real telephony, turn-taking against a real carrier leg, tool calls under a live latency budget. One industry analysis attributes the majority of failed AI-calling deployments to exactly this demo-to-production gap: the demo ran on a path the product never runs in production.

So the standard vendor demo (a staged environment, a canned video, a happy-path web widget) is not just a sales shortcut, it is an engineering claim the production system was never asked to back. The interesting question is the inverse: what does it cost to demo on the real path, and how do you cap the blast radius when you do?

What we shipped against it

Olive's concierge demo line is a real phone number answered by the production stack. The routing is a config flip on the platform side, not a deploy: platform config marks the demo number, inbound routing sends it to a concierge agent, and the concierge hands off to vertical demo agents through a bridge into the voice engine. From there the call takes the same webhook auth, the same intake ingestion, and the same notification path as any paying shop's call.

The isolation is at the data tier, not the path tier. Demo agents' tools resolve against a fictional-data service: deterministic fictional shops, appointments, and lookups that behave like tenant data without touching any. That's the whole trade in one line: every service the demo exercises is production (so the demo is evidence), and everything the demo can read or write is fictional (so the blast radius is a dataset we invented). The two honest costs: a config flip in production is still a production change and gets treated like one, and the fictional-data boundary has to be complete, because any tool that falls through to real data turns a demo into an incident.

Demoing on prod created a second obligation: testing it like prod. The same work shipped an end-to-end probe that joins a web call as a media-room participant publishing a mic-like audio track, seconds of silence, then a spoken WAV. The real-audio part is not decoration: a silent join stalls the realtime model's generation and reproduces nothing. The probe drives both orderings that have actually broken, speech-first (greet, caller speaks, verbal transfer) and transfer-first (a control-API agent transfer before any caller speech, which produces an assistant-greeting-only history shape the model once rejected outright). Limit worth stating: the probe surfaces symptoms (final status, transcript) but cannot see engine errors itself; worker logs stay part of the loop.

real phone callinbounddemo number matchtransferengine sessiontool callssame webhooks, same authSERVICEInbound Routingconfig flip marks demoConcierge Agentpicks the verticalEngine Bridgehandoff to voice engineVertical Demo Agentvoice engine sessionDATAFictional Data Servicedeterministic demo tenantsEXTERNALProspect Callerdials the demo numberGATEWAYDemo DIDPSTN, real numberBACKENDIntake + Notificationssame prod pipeline
The demo line on the production path — Every box the caller touches is production; the only demo-specific component is the fictional data the tools resolve against.

Takeaway

If a demo has to prove the product works, run it through the path you're claiming works and put the isolation where you can actually enforce it: the data tier. Path isolation (staging, sandboxes, canned flows) makes demos safe by making them meaningless. And once anything customer-visible runs on production, it inherits production's testing bar, including the unglamorous detail that realistic input (real audio, both orderings) is what makes an end-to-end test reproduce anything at all.

prod pathsame prod patheventstenant tools onlydemo tools onlySERVICEShared Call Stackrouting, agents, engine, webhooksDATATenant Datareal shops, real appointmentsFictional Datasetinvented, deterministicEXTERNALTenant Callpaying shop's lineDemo Calldemo lineBACKENDWebhook Authverified both ways
Isolation by data, not by path — Tenant calls and demo calls share every service; they diverge only at the data tier, which is where the blast radius is capped.
join web callmic-like audio framestransfer BEFORE speech (ordering 2)caller speech (ordering 1)final status + transcriptSERVICEControl APIagent transfer (transfer-first)Agent Sessionrealtime modelDATAStatus + Transcriptprobe's only visibilityCLIENTProbe Clientjoins as participantAudio Tracksilence + spoken WAVGATEWAYMedia Roomweb call
The E2E probe: real audio or you reproduce nothing — The probe publishes silence plus a spoken WAV because a silent join stalls generation; it drives both orderings that have broken before.

Sources

  1. How to Implement Environment Parity (OneUptime) — production accumulates data/config no staging reproduces; aim for relevant parity, not perfect parity
  2. Dev, QA, preview, test, staging, and production environments (Northflank) — what staging can and cannot mirror
  3. Why You Should Be Testing in Production (Medium) — the controlled testing-in-production argument
  4. The Demo-to-Production Gap That Kills AI Calling Deployments (Auto Interview AI) — attributes most failed voice-AI deployments to the demo path differing from the production path
  5. Staging vs Test Environments (Shipyard) — environment taxonomy and isolation trade-offs