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.