Demo build / AI automation
WhatsApp Booking BotBookings and payments on WhatsApp
Customers book on WhatsApp: the bot checks availability, takes the booking, sends a Paystack payment link, logs it, and hands over to a person when a request needs one.
- Type
- AI automation · demo build
- My role
- Solo build — product, design and engineering
- Stack
- Next.js · Claude API · Paystack · Twilio

01The challenge
Small hospitality businesses already take bookings on WhatsApp — by hand. Someone has to check the calendar, quote a price, chase payment and update a spreadsheet, and enquiries that arrive at 2am go cold by morning. This demo runs a fictional Lagos short-let business, Ewa Stays, to show the whole loop automated.
02What I built
- A WhatsApp bot that understands plain-language requests: dates, number of guests and questions about the place.
- Real availability and prices checked in code, with each booking held for 30 minutes while the guest pays.
- Paystack payment links, with every payment re-verified with Paystack before the booking is confirmed.
- A bookings dashboard that updates as payments land, and a handover to the host for anything outside the business's policies.
03Key decisions
The technical calls that mattered — and what they meant for the business.
The AI decides, code does the maths
Claude chooses which tool to call — check availability, create a booking, hand over — but dates, prices, holds and payment amounts are always computed in code, so the bot can't misquote or double-book.
Payments trusted only after verification
Webhook signatures are checked and each payment is re-confirmed with Paystack. If a payment arrives after the hold expired and the dates are gone, both guest and host are told.
Channel-agnostic core
The bot doesn't know about WhatsApp — a channel passes messages in and sends replies out. The same booking logic can power a website chat or Instagram DMs.
A demo that costs nothing to host
The public site replays a saved run of the real bot, with tool calls and the bookings table updating alongside it, so visitors never trigger a paid API call.