A guest just messaged a hotel's WhatsApp number and walked away with a confirmed, priced booking — no human involved. That's the AI booking agent I just shipped for a real hotel use case (Kimti Suites), built 100% in n8n. ✅ **New bookings:** checks real-time room availability (Standard/Deluxe/Suite) against total rooms + existing bookings, calculates total price (nights × rate), confirms details, then books straight into Google Sheets ✅ **Reschedules:** looks up the existing booking, re-checks availability for the new dates, updates the same row ✅ **Cancellations:** confirms with the guest, then updates booking status ✅ **Owner alerts:** auto-emails the hotel owner on every new booking, reschedule, or cancellation ✅ **Filters out noise:** WhatsApp sends delivery/read-status pings on the same webhook as real messages — the workflow silently ignores those instead of erroring out **Stack:** n8n + Google Gemini (AI Agent) + Google Sheets (as the live database) + Gmail + Meta WhatsApp Cloud API This is my first build that goes all the way from a Telegram bot to a full WhatsApp Business API integration, and the WhatsApp setup was genuinely the hardest part — Meta's developer account verification, webhook configuration, and getting a stable public URL for local testing (ngrok's free tier doesn't play well with Meta's webhook validation, ended up moving to n8n Cloud for a permanent URL). 🔑 **Biggest lessons:** - Lock in your sheet structure (columns + format — text vs number) *before* building the tools, not after - Match reschedule/cancel logic on a unique Booking ID from day one, not guest details - A Google Sheets cell that *looks* like a number but needs to match as text will silently fail — format it as Plain Text Open to feedback if anyone's built a similar booking flow or is working through the WhatsApp API setup themselves.