WhatsApp Reservation Follow-Up Assistant
Independent portfolio prototype
- My role
- AI Automation Developer
- Team
- Solo project
- Tools
- n8n
- Supabase
- PostgreSQL
- Twilio WhatsApp API
- Gemini
- ngrok
- Timeline
August 2026 — Prototype
- Description
An end-to-end hospitality reservation assistant that sends WhatsApp booking confirmations, processes customer replies, uses AI to classify intent, updates reservation records, and escalates cases that require staff attention.
- Context
I built the project as a portfolio demonstration around a fictional hospitality business called Harbour Table. Reservation communication is highly repetitive: customers need confirmations and reminders, while staff repeatedly process simple responses such as confirming, cancelling, or requesting a change. The goal was to automate these predictable interactions while ensuring ambiguous or operationally sensitive requests could still be handed to staff.
Click around...
Challenge
Incoming customer messages are not guaranteed to use predictable wording.
A customer might respond with "yes", "we'll be there", "can't make it anymore", "could we move it to seven?", or something completely unrelated.
The system therefore needed to interpret intent without allowing an AI model to make unrestricted changes to reservation data.
Constraints
The project used WhatsApp through Twilio and local development endpoints through ngrok, so it was built as a prototype rather than a production deployment.
AI classification also needed to be constrained to a small known set of intents rather than allowing the model to invent arbitrary workflow actions.
Rescheduling presented another boundary. A message can express the desire to reschedule, but production scheduling requires real availability information. Those cases therefore needed staff review rather than automatic confirmation.
Research
I modelled the reservation workflow around a small set of operational intents:
- Confirm
- Cancel
- Reschedule
- Other
Gemini's role was limited to determining which category best represented the customer's message.
n8n then handled the deterministic business logic associated with that classification.
Iterations
The first workflow created a reservation record in Supabase and sent a WhatsApp confirmation through Twilio.
An inbound workflow was then added to receive replies, locate the relevant reservation, log the incoming message, and pass it through Gemini for intent classification.
Confirmed and cancelled reservations could be updated automatically. Rescheduling and unclear messages could instead be marked for staff attention.
Message history was retained in Supabase, and scheduled n8n workflows were added for reminder communication.
The complete flow was tested end to end.
Key Features
- Reservation records in Supabase
- Twilio WhatsApp confirmations
- Incoming WhatsApp webhook handling
- Gemini intent classification
- Confirm intent handling
- Cancel intent handling
- Reschedule detection
- Unknown/other intent handling
- Reservation-status updates
- Message-history logging
- Staff-review escalation
- Scheduled reservation reminders
- n8n workflow orchestration
Final Deliverable
The prototype demonstrated a complete conversational workflow from booking creation through outbound confirmation, customer response, AI interpretation, database update, and follow-up handling.
It showed how conversational AI can be constrained inside a deterministic workflow rather than giving a language model direct control over an operational system.
Takeaway
The most important architectural decision was separating interpretation from execution.
Gemini decides what a message appears to mean; n8n and the database decide what actions that classification is allowed to trigger.
That separation makes the system easier to reason about and significantly safer than allowing an AI agent to modify reservations freely.