Tablez — Technical Analysis¶
Source: Tablez Specification v1.2 (shared by Daniel R. Döderlein, Tabelz AS) Reviewed: 2026-02-24 Reviewer: Claude-6 / Codi-E Status: Pre-engagement — evaluation only
What Is Tablez¶
An AI-driven restaurant reservation and guest engagement platform. Restaurants configure their layout, services and booking rules; guests book via web form, AI chat, AI phone agent, or email; staff operate a live floor view with real-time table status.
The differentiator is the LLM layer — every guest-facing channel (phone, chat, email) is handled by an AI agent backed by a tool-based API. The backend is always the source of truth; the LLM only talks to guests and calls tools.
System Map¶
Channels (guest-facing)
├── Web booking widget (form)
├── Web chat widget (LLM)
├── AI phone agent (LLM + STT/TTS)
├── Email agent (LLM)
├── Google Reserve (partner API)
└── Walk-in / staff direct entry
│
▼
Core Platform (backend)
├── Restaurant configuration
│ ├── Profile & users
│ ├── Floor plan (zones + tables + canvas)
│ └── Service schedule (per-date rules)
├── Reservation engine
│ ├── Availability check
│ ├── Table assignment (auto + manual)
│ ├── Lifecycle management
│ └── Waitlist queue
├── Guest database (CRM)
│ ├── Identity + contact
│ ├── Preferences + allergies
│ └── LLM-enriched notes
└── LLM tool API (Section 11)
├── check_availability
├── create_reservation
├── create_waitlist_entry
├── cancel_waitlist_entry
├── get_service_overview
├── get_service_details
├── get_guest_profile
└── update_guest_profile
│
▼
Staff dashboard
├── Live floor view (table statuses)
├── Reservation list
├── Manual reservation entry
└── Override controls
What the Spec Gets Right¶
LLM Tool Architecture (Section 11)¶
This is the strongest part of the document. The design is correct:
- LLM receives only lightweight static context at startup (restaurant ID, current datetime, channel type)
- All dynamic data (availability, menus, service rules) fetched via tools on demand
- LLM never confirms a booking on its own — always calls
create_reservation - Tools are designed to be minimal and stateless
This is exactly how a production AI booking agent should be built. It prevents hallucinated availability, keeps prompts small, and ensures menu/event changes propagate immediately.
Waitlist Design¶
The waitlist behavior is well thought through:
- Queue ordered by creation time + time window compatibility
- Slot opens → SMS link sent → temporary hold → guest completes or hold expires
- Guest specifies flexible window (earliest + latest acceptable time)
- Position shown as non-exact hint (not a precise number that becomes stale)
Reservation Lifecycle¶
Creation → edit → cancellation → arrival → no-show is fully defined. Editing is treated as re-creation (free old capacity, re-check, update in place) — correct approach that avoids partial-state bugs.
Guest Database¶
First-party CRM built in from day one. LLM enrichment during conversation (allergies, preferences, VIP signals) stored automatically. This is the long-term moat for the product — restaurants gain a guest intelligence layer they don't get from OpenTable or Google Reserve.
Gaps¶
Critical — Blocks MVP¶
| Gap | Detail |
|---|---|
| Payment provider | Ticketing and no-show fees are described in detail but no provider is named. Stripe at minimum; local payment methods (Apple Pay, Google Pay, regional wallets) per market. Payment flow (webhook, hold vs. charge, refund) is unspecified. |
| SMS provider | SMS confirmation links, waitlist notifications, payment links — SMS is used everywhere. Provider not named. Twilio and Vonage are international; regional providers can be layered per market. |
| AI phone agent stack | "Calls handled by AI" with no STT, TTS, or telephony provider. This is a significant integration. Options: Twilio Voice + Deepgram + ElevenLabs, or a managed voice AI platform (Bland.ai, Vapi.ai). |
| GDPR / data privacy | EU market, Norwegian restaurants, guest phone + email stored. No mention of data retention policy, consent model, right to deletion, or privacy policy. Required before any guest data is processed. |
Major — Needs Decision Before Architecture¶
| Gap | Detail |
|---|---|
| Tech stack | No mention of backend language/framework, database, hosting, or frontend framework. |
| LLM provider | GPT-4o? Claude? Gemini? Matters for tool-call support, latency, cost, and Norwegian language quality. |
| Multi-tenancy model | Multiple restaurants implied throughout but the isolation model is not defined (shared DB with restaurant_id scoping vs. per-tenant schema). |
| Real-time infrastructure | Floor view requires live table status updates. WebSockets? Server-sent events? Not addressed. |
| Race conditions on availability | Two guests checking availability simultaneously for the same slot — how is a slot locked during create_reservation? Optimistic lock? Database transaction? |
| Google Reserve | Marked as "requires partner verification." This is an external business dependency with its own timeline. Not a code problem — needs to be treated as a separate track. |
Minor — Fine to Defer¶
| Gap | Detail |
|---|---|
| Auth detail | OAuth mentioned but JWT/session strategy not defined |
| Admin notification model | No mention of how staff are notified of new bookings |
| Reporting | No analytics or export in MVP (listed as future) |
| API versioning | External partners (Tripadvisor, Meta) imply a public API — no versioning strategy |
MVP Scope Assessment¶
The spec labels everything as MVP. It is not. This is a phase 1 + phase 2 product if built with a small team.
Recommended Phase Split¶
Phase 1 — Core Booking Platform
- Restaurant profile, users, service schedule
- Web booking form (no AI, just form)
- Staff dashboard: reservations list, manual entry, table status
- Basic table management (no canvas floor plan editor)
- Guest database (manual creation, no LLM enrichment yet)
- SMS confirmations
- Waitlist (manual, no AI)
Phase 2 — AI Channels + Full Floor Plan
- Web chat widget (LLM)
- AI phone agent
- Email agent
- Floor plan canvas editor
- LLM guest enrichment
- Google Reserve integration
- No-show fee processing
Rationale: The floor plan canvas editor is a complex drag-and-drop UI (weeks of work on its own). The AI phone agent requires STT + TTS + telephony + LLM + latency tuning. Neither is required to take first reservations.
Complexity Flags¶
Things in the spec that look simple but are not:
Floor plan canvas — Grid-based drag-and-drop editor with table merging, rotation, and real-time occupied state. Comparable in scope to a simplified Figma or Miro canvas. Not a weekend feature.
AI phone agent — Real-time voice with sub-second response latency, Norwegian language support, graceful handling of interruptions, background noise, and accents. Needs careful provider selection and significant prompt tuning.
Concurrent availability — Two guests booking the same slot simultaneously must not result in double-booking. Requires database-level locking or a reservation token pattern. Easy to get wrong.
Waitlist timing — When a slot opens, the system must find the best matching waitlist entry (party size + time window), send an SMS, start a hold timer, and release if no response — all without race conditions across potentially many concurrent waitlist entries.
Open Questions¶
Before any architecture or timeline discussion:
- Engagement model — Build-for-hire, co-venture, or evaluation?
- Daniel's role — Is he the CEO/founder of Tabelz AS, or is this a spec for a client?
- Timeline expectation — What's the target for first bookable demo?
- Market — Single-country launch or international from day one? Which markets first?
- Budget — Is this funded, self-funded, or pre-revenue?
- Designer — Is there a UX designer involved, or does that land on us?
- Existing codebase — Is anything already built, or greenfield?
- Norwegian language requirement — Must the AI agents support Norwegian fluently from day one?
Suggested Next Steps¶
If we move forward:
- Answer the open questions — engagement model and scope must be clear before any tech decisions
- Agree on phase 1 scope — cut the canvas editor and AI phone agent from MVP
- Select payment + SMS providers — Stripe + Twilio as the international baseline; layer local payment methods per market
- Draft architecture doc — backend stack, database model, auth, hosting
- Spike the LLM tool API — Section 11 is already well-defined; a working prototype of
check_availability+create_reservation+ chat agent can validate the approach quickly - GDPR baseline — privacy policy, data retention rules, consent model before any guest data is stored
References¶
- Spec source: Tablez Specification v1.2 (Tabelz AS)
- LLM tool pattern reference: Section 11 of spec
- Related: OpenTable, SevenRooms, Eat App (competitive context)