Skip to content
All builds
rangevoicesafety-criticalaiSaffron Table Indian Kitchen (pilot)

Restaurant Voice Ordering & Operations Copilot

A voice- and chat-first ordering copilot (piloted for a real Indian kitchen) that feels natural to guests but treats the database — not the model — as the source of truth. Handles natural multi-turn ordering, safety-critical allergen classification (contains / may contain / cross-contact / unknown, never claiming medical safety), full read-back and explicit confirmation before a kitchen ticket, and a staff ops dashboard. A deliberately out-of-domain "range" build that shows breadth and safety-first agent design.

Live demo coming soon
114
Automated tests
13
Agent tools
~325 tracked files
Codebase

The problem

Restaurants lose revenue and guest satisfaction when ordering is friction-heavy — long hold times, menu confusion, modifier mistakes, and allergy-related risk. Traditional IVR and static web forms can't handle natural conversation ("two medium-spice butter chickens, one without dairy, pickup in twenty minutes") while still enforcing business rules, and generative AI alone isn't safe for food service — models can invent ingredients, skip allergen warnings, or confirm orders that were never validated.

The challenge

Build a voice- and chat-first ordering copilot, piloted for a real Indian kitchen, that feels natural to guests while treating the database — not the model — as the source of truth, across multiple trust boundaries: conversational AI at scale, safety-critical allergen handling, a hybrid architecture pairing LLM dialogue with server-side enforcement, and a full staff operations loop.

Constraints

  • The agent must never write directly to the database — every menu fact, cart change, and confirmation flows through validated server tools
  • Allergen data is classified (contains / may contain / cross-contact / unknown) and the system must never claim medical safety
  • Production hardening: fail-closed webhook authentication, CORS allowlists, JWT-scoped staff access, idempotent ticket dispatch
  • Voice agents miss checkout phrases, skip tool calls, or duplicate responses without added reliability layers

The solution

Guests browse the menu, build a cart, receive allergen warnings, confirm orders with a full read-back, and trigger kitchen tickets by voice or text in a single session. ElevenLabs Conversational AI handles natural dialogue over WebSocket text and WebRTC voice; Supabase holds menu, orders, sessions, escalations, and the audit trail; Edge Functions enforce validation, cart mutations, confirmation, and ticket dispatch; n8n orchestrates kitchen/POS workflow; and a React monorepo serves both the guest ordering embed and a staff operations dashboard.

Architecture

  • ElevenLabs Conversational AI for natural dialogue (WebSocket text + WebRTC voice)
  • 13 ElevenLabs agent tools for menu search, cart, allergens, read-back, confirm, and escalate
  • 14 Supabase Edge Functions and 53 shared server modules enforcing validation, cart mutations, confirmation, and ticket dispatch
  • n8n for kitchen/POS workflow orchestration
  • React monorepo serving the guest ordering embed and staff operations dashboard
  • Client-side reliability bridges (checkout phrase detection, escalation, session wrap-up) pairing with server-side enforcement (confirmation gates, rate limits, webhook secrets, hashed session tokens)

Product decisions I owned

  • The agent never writes to the database — every menu fact and cart change flows through validated server tools, with explicit guest approval before a kitchen ticket exists
  • When allergen data is incomplete the system warns and escalates to staff rather than guessing; safety copy is templated from backend classification, never model-generated
  • Split conversation from commitment — the LLM handles dialogue, the backend enforces state transitions for order confirmation and ticket creation
  • Added client-side reliability bridges for checkout, escalation, and session wrap-up to cover gaps in even well-prompted voice agents

Design laws

The database, not the model, is the source of truth

Allergen answers never claim medical safety

Full read-back and explicit confirmation before any kitchen ticket

Stack

ElevenLabs Conversational AI (voice + text) · Supabase · Edge Functions · n8n · React monorepo · TypeScript · Playwright · Vercel

Key learnings

  • Ground the agent in tools, not memory — menu prices, ingredients, and availability must come from structured server-tool data, or hallucination follows
  • Split conversation from commitment — the LLM handles dialogue; the backend handles state transitions
  • Voice agents need reliability layers — client-side phrase detection and deterministic bridges materially improve pilot stability without sacrificing natural conversation
  • Regulated domains need explicit uncertainty handling — when allergen data is incomplete, warn and escalate rather than guess
  • Modular architecture de-risks iteration — voice provider, database, workflow engine, and frontend can evolve independently
  • Auditability is a feature, not overhead — every tool invocation and safety-relevant decision is logged for operators and future compliance review

Screenshots and a walkthrough video are coming.