Inspiration
A full-service restaurant keeps about three cents of every sales dollar as profit, and labor is its biggest controllable cost: a median 36.5% of sales. Profitable restaurants spend about 34% on labor, and restaurants losing money spend almost 43% (National Restaurant Association). Turnover averages 79.6% a year, and each lost employee costs an estimated $5,864. How well a team runs is often the line between profit and loss.
Most restaurants already have an intercom or speakers, and they use them like a megaphone: every message goes to every zone. The kitchen hears the host, the servers hear the bar, and the one message that matters, a guest's allergy, gets lost in the noise. Kitchen display screens only help staff who are looking at them.
We wanted an AI management layer that decides who needs to hear something and when, using the audio equipment a restaurant already owns.
What it does
Expo is an integrated service that runs on a restaurant's existing mics and speakers. A mic at each staff station hears the read-backs and calls staff already make. Expo keeps one live model of the restaurant (tables, tickets, inventory, who is where) and decides which zone's speaker should say what, and when.
Voice-first orders. A server reads an order back as usual: "Table seven, two salmon, one burger, fire." Expo turns it into a fired ticket, and only the kitchen speaker plays "Table 7: two salmon, one burger, fire." Three priority tiers. URGENT (an allergy, an 86'd item mid-order) interrupts immediately. NORMAL waits until the station is quiet. LOW is batched for a quiet moment. An attention scheduler holds non-urgent messages while a station is in use, then releases them the moment it goes quiet. Smart routing. Food-up calls go to the nearest free runner, not every zone. Every decision carries a plain-English reason, such as "nearest runner to T2, 0 in queue", so a manager can audit it. Short spoken lines. Every spoken line is eight words or fewer, written the way an expo calls the pass. A live manager dashboard. It shows the floor (12 tables with timers, needs, allergy badges and the ticket rail), every zone's comms lane, and every held message. One key flips between routed and broadcast mode, so owners can see how much noise Expo removes. A seeded Friday-rush simulation runs virtual tables, a virtual kitchen and virtual staff. The business case: software as a service at $99 a month per location, with a free 30-day pilot. There's no hardware to buy, because it runs on the venue's existing audio. Keeping a single employee from quitting would pay for about five years of the subscription.
What the demo shows: in the demo, an operator plays the station mic by firing the same input a real transcript would produce. The AI, routing, scheduling and dashboard are the real system.
How we built it
A TypeScript monorepo (pnpm workspaces, Node 22). The server is Fastify 5 with WebSockets. The dashboard is React 19, laid out once for a 1920×1080 projector and scaled to fit. One event bus and one reducer. Every state change is an event applied by the same pure function on the server and in the dashboard. Every contract is a zod schema. The LLM parses; code routes. Claude Haiku 5.5 turns a transcript into a structured intent, using structured output and a cached system prompt. A deterministic rules parser is both the fast path and the fallback. The agents (orders, kitchen, table, inventory), the router and the scheduler are pure, deterministic and unit tested. There's no agent-to-agent chat, so every decision is repeatable and explainable. The voice layer sits behind provider interfaces: Deepgram Flux for streaming speech-to-text and Cartesia Sonic for text-to-speech, each with a mock fallback. A phone radio app exists as one way into the same pipeline. Latency is the product. Every hop is timed, from end of speech through parse, route and first audio byte. Our budget is under 2 seconds. In rehearsal, with simulated voice providers, the slowest message reached the listener's ear in about 0.7 seconds. Built by 4 people in 4 parallel tracks (voice, brain, simulation and floor, dashboard and demo), with strict ownership rules. We used Claude Code agents heavily, including several headless agents working in separate git worktrees, coordinated through a shared board. Quality: 885 automated tests, plus a rehearsal tool that drives all five demo beats end to end and reports latency. Three runs in a row finish with no drift.
Challenges we ran into
Interruptions. An URGENT has to cut in instantly without losing the line it interrupted. That line replays right afterwards and counts as delivered exactly once. Not talking over anyone. Getting the scheduler right meant deciding how long a station must be quiet before a held message plays. Latency. Under two seconds from end of speech to speaker means every stage (transcribe, parse, route, synthesize) has to be fast. Browser audio. Nothing plays until a user gesture unlocks the audio, and resume() can hang forever, so the first screen can never wait on it. Four tracks building in parallel while the dashboard was redesigned partway through.
Accomplishments that we're proud of
The whole demo runs end to end: an order becomes a ticket that reaches the kitchen speaker, a message is held while a station is in use, and an allergy interrupts two zones at once. All five demo beats pass our automated rehearsal, three runs in a row. Every routing decision is explainable, so a manager can see why each zone heard what it heard. Red means URGENT, and only URGENT, on every screen.
What we learned
Let the AI understand language, and let code make decisions. Keeping routing deterministic made it testable, explainable and fast. In voice products, timing matters as much as accuracy. When a message plays matters as much as what it says. Strong contracts (zod schemas and one reducer) are what let four people and many AI agents build in parallel.
What's next for Expo
A pilot with local restaurants, measuring ticket times, table turns and comped meals before and after. Connecting to a venue's PA. Today the audio layer streams to browsers and phones; hooking it to a venue's speakers and station mics through a standard audio interface is the pilot step. Point-of-sale integration, so tickets and the 86 list come from the restaurant's own system. Growth from independent restaurants to restaurant groups, then hotels, resorts and event venues. At 1% of U.S. locations, about 10,000 restaurants, that's about $11.9 million a year in recurring revenue.
Built With
- anthropic
- cartesia
- claude
- deepgram
- fastify
- node.js
- pnpm
- react
- typescript
- vite
- vitest
- web-audio-api
- websockets
- zod
Log in or sign up for Devpost to join the conversation.