AIRestAI Restaurant Receptionist
How it works

How a call becomes a booking

Every call follows the same path, on a phone line or in the browser demo. The language model writes Juno's replies. The platform checks the tables, reads the booking back and writes it after the guest says yes.

The call path

From the first ring to the staff panel

The yes gate sits between the read-back and the booking. A confirmation whose details differ from what was read back is rejected.

AIRest call path Guest's phone, to the phone line on Twilio, to Juno the AI host with your approved facts, to the table check, to the read-back, to the guest's yes, to the booking written in Postgres, to the staff panel. Questions outside the facts get a callback offer; a request for a person transfers the call; the guest gets an SMS confirmation on a connected line. Guest's phonecalls the restaurant Phone lineTwilio Voice Juno, the AI hostlanguage model +your approved facts greeting · questions · booking slots Table checktables · opening hours · party-size rules Read-back“Saturday, October 10 at 7:30 PM…” THE GATE Guest says “yes”same details as read back Booking writtenone table, one booking Staff panelcalls · transcripts · bookings Question outside your facts → a callback is offered “Can I speak to someone?” → call transferred to staff SMS confirmation to the guest, on a connected line nothing is booked before this AIRest call path: phone, line, Juno, table check, read-back, the guest's yes, booking, staff panel Guest's phonecalls the restaurant Phone lineTwilio Voice, signed webhooks Juno, the AI hostlanguage model + your factsOutside the facts → callback offered“A person, please” → call transferred Table checktables · hours · party-size rules Read-backdate resolved, details repeated Guest says “yes”same details as read back Booking writtenone table, one booking Staff panelcalls · transcripts · bookings nothing is booked before the yes
Step by step

Eight steps, from the first ring to the call ledger

Taken from the product's own documentation of the call flow.

  1. Step 1
    The call arrives

    A Twilio webhook, or the browser demo driving the same handlers, routes the call to the restaurant that owns the dialled number.

  2. Step 2
    Juno greets the guest

    With the restaurant's published greeting, in the restaurant's language.

  3. Step 3
    Each turn goes to the model

    Together with the restaurant's published profile and approved facts. The model returns the intent, the reply and the booking details it heard.

  4. Step 4
    Questions are answered from facts

    Anything the facts do not cover is offered as a callback.

  5. Step 5
    The platform checks availability

    Against the restaurant's tables, opening hours and party-size rules.

  6. Step 6
    Juno reads the booking back

    With the date resolved, for example “Saturday, October 10 at 7:30 PM”, once the slot is free and the name and phone are known.

  7. Step 7
    A later “yes” writes the booking

    A fingerprint check rejects a confirmation whose details differ from the read-back, and a Postgres constraint makes double-booking one table impossible.

    The gate
  8. Step 8
    The call lands in the ledger

    Transcript, outcome and usage (minutes and model tokens) go to the call ledger and the admin.

The demo, honestly

What is real in the demo, and what is simulated

The browser demo runs the production call path. Only the phone line and the speech engine are swapped for browser equivalents.

  • Conversation
    Answers, availability, read-back, booking

    The production code path.

    Real
  • Admin
    Call ledger, transcripts, usage, admin panel

    The same admin a restaurant uses.

    Real
  • Phone line
    Browser call in place of a phone number

    The page builds the payloads Twilio would send and drives the same handlers. The Twilio path is real in the code; the public demo has no carrier number yet, and the 555 number on its screen is fictional.

    Simulated
  • Speech
    Your browser's speech recognition and voice

    On a phone line, Twilio speech recognition and Amazon Polly voices do this. Juno is the on-screen host of the demo and the admin; on a phone line guests hear your greeting in an Amazon Polly voice.

    Browser
  • Restaurant
    Bella Vista is fictional

    A seeded demo restaurant in Ottawa, with its own menu facts and tables.

    Demo data
  • Confirmations
    SMS and email to the guest

    Built in, using the platform's Twilio and email settings. The demo has none configured, and web callers get fictional 555 numbers, so nothing is texted or dialled.

    Off in the demo
Try it in about a minute

Call Bella Vista

  1. Open airest.mmix.biz in Chrome or Edge, press Call and allow the microphone. Any browser works with the typed input under the transcript.
  2. Ask “Do you have vegetarian dishes?” or “Where can I park?”
  3. Say “A table for four this Saturday at 7:30, please,” with a name and a phone number, then “Yes, please book it.”
  4. Watch the booking land on the Schedule under the call.

See the staff side

Sign in to the admin from the demo page with the read-only login. It shows the dashboard, calls with transcripts and the booking ledger; every change is refused.

Email
judge@airest.store
Password
BellaVista-demo-2026

The demo shares one language-model quota with every visitor. If Juno goes quiet, the quota may be used up for now: try again later, or watch the recorded call.

The 2-minute demo: a full call to Bella Vista, then the admin. Open the video file
Under the hood

The stack

One multi-tenant deployment serves many restaurants, each with its own published profile, phone numbers and usage limits.

  • API

    Node.js 20, TypeScript, NestJS

  • Data

    PostgreSQL 16 with Prisma and checked-in migrations; Redis for conversation sessions, booking gates, rate limits and usage counters

  • Telephony

    Twilio Voice and SMS: signed webhooks that fail closed in production, number provisioning from the admin

  • Model

    Any OpenAI-compatible chat endpoint, or Ollama; the model answers in JSON with intent, reply, booking details and action, across 18 intents

  • Admin

    Next.js 14 and Tailwind CSS

  • Automation

    Seven n8n webhook events, including call completed, reservation created and callback requested

  • Tests

    1,304 Jest unit tests and 20 integration tests on real Postgres, run in CI on the main branch

  • Deploy

    Docker and Docker Compose