Skip to content
Jesus Miguel Sánchez Torres
Back to projects

Maître

An AI assistant that takes restaurant bookings by phone and web chat, in French, English and Spanish, with every rule enforced by tested code.

Role
Design and development
Team
Own project
Period
Oct 2026
Stack
TypeScript, Python, Cloudflare Workers and Durable Objects, Astro, LiveKit, Claude Haiku
Status
Live public demo
Test call with invented data

Why it's built this way

Voice booking assistants are often shown working once, on a live call, and called done. In one such demo, the agent read the caller's number back with a digit wrong and booked the table under it. Nothing noticed, because nothing was checking.

Maître starts from the other end. What must always be true is written in code and covered by tests, and the language model only does the talking. Guests book by phone or web chat; the staff run the day's service from a dashboard with the floor plan.

Rules the code enforces

  • The last table goes to one guest

    Finding a table and booking it is a single step, so two guests can never end up with the same table.

  • Dates that don't slip

    The guest says “on Friday” or “the day after tomorrow”, the code works out the day, and every answer reads the full date back.

  • Allergens from the kitchen's sheet

    The answer comes from the sheet, word for word. When the sheet doesn't say, the answer is “we don't know” and the question goes to the team.

  • The model never sees the number

    The number comes from the channel itself (caller ID, the keypad or a form), never from speech recognition.

  • Asking twice books once

    If the model repeats an action, no second booking is made.

  • Data stays in the EU

    Each restaurant's data is stored in the EU, and conversations are deleted after 90 days.

How it's evaluated

The model was chosen with a rule written before the tests. Every conversation had to be right in all three runs; after that came the shortest wait for the guest and, between close candidates, an independent benchmark of conversations with tools. Several real models were compared this way, and Claude Haiku came out ahead.

Today the suite holds 41 conversations written in advance in French, English and Spanish, 26 of them also played on the phone. Each one runs three times and only passes if all three do. In the latest run all 41 passed, with a median reply of 1.6 seconds.

Several failures turned into code. One model filled in a date with the wrong month, so the model no longer handles dates (the code works them out). Another promised to have a guest called back and recorded nothing, so now the code passes the request to the team itself.

Known limits

It doesn't join tables yet, so parties bigger than the largest table go to a person. There is no staff login, and a real deployment would put Cloudflare Access in front of the dashboard. WhatsApp is designed but not built.

No real restaurant uses it yet. The demo runs an invented bistro with invented data, and the evaluation catches regressions without proving the assistant right in every possible conversation.

41/41
conversations passed in the latest run
1.6 s
median reply, latest evaluation
26
conversations also tested by phone
90 days
before conversations are deleted
  • Test call with captions, where the assistant confirms a table for two
    Test call with invented data
  • The guest types the phone number on the call's keypad
    Test call with invented data
  • A nut allergy question the kitchen's sheet doesn't cover, so the assistant passes it to the team instead of guessing
    Test call with invented data
  • The phone booking for two on the floor plan, waiting to be confirmed
    Restaurant dashboard with invented data
  • The dashboard's call-back list, with the allergen question the sheet couldn't answer
    Restaurant dashboard with invented data
  • The test call's transcript in the dashboard, with the booking and the question passed to the team
    Restaurant dashboard with invented data