Our kit · demo conversation · Automation · official WhatsApp Cloud API
WhatsApp assistant kit
A WhatsApp bot for a small business: prices, FAQs, bookings, callbacks and a hand-over to a person, with every lead saved to a Google Sheet the owner owns.
- Status
- Kit ready; no client deployments yet
- Related service
- WhatsApp & business automation
- Stack
- TypeScript
- Cloudflare Workers + KV
- WhatsApp Cloud API
- Google Apps Script
- Claude API (optional)
- Vitest
DemoDemo conversation. “Smile Care Dental” is the kit's sample configuration: placeholder business, prices and numbers.
Results
- automated tests passing (re-run 2026-09-24)
- 66 / 66automated tests passing (re-run 2026-09-24)
- returned to a forged webhook signature in the simulator
- 401returned to a forged webhook signature in the simulator
- greeting languages: English, Telugu, Hindi
- 3greeting languages: English, Telugu, Hindi
- hosting: Cloudflare free tier, Sheet and Apps Script
- ₹0hosting: Cloudflare free tier, Sheet and Apps Script
- estimated Meta charges a month for a small clinic (from partner-reported rates)
- ~₹40estimated Meta charges a month for a small clinic (from partner-reported rates)
Source: whatsapp-bot README and test suite; the conversation below is the kit's own simulator output.
The problem
Small businesses answer the same WhatsApp questions all day and lose enquiries that arrive after hours.
What we built
- A conversation engine: menu, services and prices, FAQ, lead capture, bookings with time-zone-aware slots, capacity and holidays, after-hours replies, and a hand-over that alerts the owner and then stays quiet.
- Greetings in English, Telugu and Hindi.
- Webhooks verified with HMAC-SHA256 in constant time; the handler acknowledges Meta immediately, works in the background and drops retried duplicates by message id.
- The Google Sheet is the source of truth for bookings: Apps Script takes a lock and rejects a slot that is already full, and the bot offers the next free times.
- Optional AI mode answers only from the business's own facts, returns structured JSON, and runs a number guard: any price, time or phone number not in the facts means the answer is discarded and a person takes over.
Built for the owner's phone bill
Meta now bills service replies per message, so the engine sends one reply per customer message where it can: an FAQ answer arrives as the body of a button message, not as a text followed by a separate menu.
The conversation
A customer asks a question, books a slot and asks for a person. The owner gets an alert each time.
Smile Care Dental
Demo business · sample config
Hi
Hello Priya! 👋 Welcome to Smile Care Dental. How can we help you today? Tap Menu below.
- Services & prices
- Book appointment
- FAQs
- Hours & location
- Request a callback
- Talk to a person
do you take upi?
UPI, cards and cash are all accepted at the clinic.
More questionsMain menuI want to book an appointment
What would you like to book?
- Consultation · ₹300 · 20 min
- Scaling & cleaning · ₹1,200 · 40 min
- Tooth filling · ₹1,500 – ₹2,500
Consultation
Pick a day:
- Today (Thu 24 Sep) · 8 slots free
- Fri 25 Sep · 13 slots free
- Sat 26 Sep · 7 slots free
Fri 25 Sep · 10:00
Please confirm your booking: 🗓 Fri 25 Sep at 10:00 💼 Consultation (₹300) 👤 Priya
ConfirmChange timeCancelConfirm
- To the owner's phone🔔 New booking: Priya — Consultation on Fri 25 Sep at 10:00.
✅ Booked! Fri 25 Sep at 10:00 — Consultation. Please arrive 10 minutes early and bring any previous X-rays or prescriptions.
Main menuI want to talk to a person
- To the owner's phone🔔 Priya wants to talk to a person. Reply: open chat
🙋 I've alerted Dr. Rao's front desk. They'll contact you on this number shortly.
What it doesn't do
Written down here so nobody finds out later.
- Meta's reviews are the timeline risk, not the code: display-name and template approval can add 1 to 3 days.
- The number guard catches invented numbers, not every invented claim, so AI mode is tested on 20 real customer questions before it is switched on, and it's off by default for the clinic example.
- Proactive messages (reminders, broadcasts) need approved templates and aren't built in.
- Bookings go to the Sheet, not to Google Calendar.
Want something like this?
Tell us what you need. You get a fixed price, or a short scoping call, within 48 hours.