← field notes
case study

WhatsApp Bot for a Restaurant: Reservations + Menu, 48 Hours

Apr 5, 2026 6 min read

A 40-seat restaurant was handling 80+ WhatsApp messages a day by hand — reservations, menu queries, hours, allergies. Staff were losing 2 hours of floor time to a shared phone. Here's exactly what we built to fix it.

The situation

Dimitri runs a Mediterranean restaurant in a busy area. His WhatsApp number is on every menu, every table card, and his Google Maps listing. The channel works — guests use it — but it had become a full-time job.

Peak service, his front-of-house staff were stepping off the floor to answer: "Do you have a vegan option?", "Can I book a table for four on Friday?", "What time do you close?". Each reply takes 30–60 seconds. Across 80 messages a day, that's nearly 2 hours of lost floor time, every single day.

Ignoring messages wasn't an option either. WhatsApp Business tracks response rates, and that metric feeds Google's local search ranking. Slow to respond = less visible. He was stuck in a loop: answer fast and lose staff time, or protect the floor and lose discoverability.

What we mapped

We logged a week of incoming messages and categorised every one. The breakdown was stark:

86% of messages could be handled automatically. That last 14% — private hire inquiries, complaints, unusual requests — still needed a human. But routing only those to staff would cut the interruption load by almost 6x.

What we built

A WhatsApp Business API bot running on n8n, with Google Sheets as the reservation store and a JSON knowledge base for menu and FAQ content. Full flow:

restaurant whatsapp bot — n8n + whatsapp business api
💬
WhatsApp Inbound
Webhook trigger
──▶
🧠
Intent Classifier
Reserve / Menu / Info / Escalate
──▶
🔀
Branch Router
4-way split
──▶
📅
Sheets / KB Lookup
Availability or FAQ
──▶
Reply + Notify
WhatsApp + Telegram
↳ message in → classified in <2s → answered instantly or escalated with full context → staff Telegram ping for reservations + edge cases only

The intent classifier reads the raw message and assigns a category. For menu and info queries, it pulls from a JSON knowledge base — allergens, dietary options, hours, location, dress code. Dimitri updates this file himself when the menu changes. It takes about 90 seconds.

Reservation requests kick off a guided conversation: the bot collects date, time, and party size, checks Google Sheets for slot availability, and confirms or offers alternatives. Every booking writes to the sheet and fires a Telegram notification to the manager — no need to monitor the WhatsApp thread.

Anything that doesn't fit cleanly — unusual requests, ambiguous intent, anything the classifier scores below 80% confidence — gets escalated. The staff member receives a Telegram message with the full conversation context and a one-tap "reply" button that opens the WhatsApp thread. Human time is spent only where it's actually needed.

The details that mattered

Core flow: ~6 hours. The rest of the 48 was edge cases and polish:

A bot that confidently misunderstands a guest is worse than no bot at all. Getting these details right is the difference between something that helps and something that creates complaints.

The stack

n8n handles all the orchestration — webhook intake, classification logic, Sheets reads/writes, WhatsApp replies, Telegram alerts. It runs on a $6/month VPS we provisioned as part of the build. WhatsApp Business API access uses Meta's Cloud API directly — no third-party platform subscription, just a verified business account (free tier covers volumes like this comfortably).

Dimitri owns everything. He has the n8n workflow JSON, the server access, the knowledge base file, and a Loom walkthrough of how to update menu content. No ongoing dependency on us unless he wants to add something new.

The result

after 6 weeks
85% of messages handled automatically — zero staff time
Average first-response time: 2 seconds (was 28 minutes during service)
WhatsApp Business now shows "Very responsive" on Google listing
~1.5 hours of floor time reclaimed per day
No-show rate dropped 35% after automated reminders went live
Running cost: $6/month VPS + Meta free tier — no SaaS fees

Dimitri told us guests started commenting on how fast they got a reply. "They assume there's someone on the phone the whole time. It sets a good tone before they've even walked in." That first impression matters — and it's now fully automated.

The ROI math was simple: he was losing roughly 10 covers a week to slow response times and missed after-hours messages. At his average spend per cover, the build paid for itself inside the first two weeks.

Hospitality, services, retail — if your customers message you, we can automate the routine 80% and escalate the rest.

[ let's talk ]

home work pricing blog about