Healthcare / Primary Care · 9 days
Banigala Family Clinic — 24/7 WhatsApp Receptionist Bot
Banigala is a 24/7 family clinic in Islamabad. Their phone line was the bottleneck — patients calling at 2am asking "are you open?", "how much for a pediatric visit?", "can I see Dr. Komal tomorrow?". The receptionist was answering the same five questions hundreds of times a day, and after-hours calls got missed entirely. Walk-ins were dropping because patients couldn't confirm fees or hours. The clinic owner asked me one question on a Loom call: *"Can WhatsApp do this for us?"*
Banigala Family Clinic — 24/7 WhatsApp Receptionist Bot
Client: Banigala Family Clinic and Child Care, Islamabad
Industry: Healthcare / Primary Care
Timeline: 9 days
Stack: n8n · WhatsApp Cloud API (Meta) · Claude Sonnet · Google Sheets · Vercel
Slug: /case-studies/banigala-clinic-whatsapp-bot
The problem
Banigala is a 24/7 family clinic in Islamabad. Their phone line was the bottleneck — patients calling at 2am asking "are you open?", "how much for a pediatric visit?", "can I see Dr. Komal tomorrow?". The receptionist was answering the same five questions hundreds of times a day, and after-hours calls got missed entirely. Walk-ins were dropping because patients couldn't confirm fees or hours.
The clinic owner asked me one question on a Loom call: "Can WhatsApp do this for us?"
What I built
A Meta WhatsApp Business API bot, orchestrated by n8n, with Claude Sonnet handling intent classification and reply generation.
Architecture:
Patient WhatsApp message
↓
Meta WhatsApp webhook → n8n
↓
Parse & verify webhook (handles Meta's hub.challenge handshake)
↓
Pull last 5 messages from Google Sheets (per-phone history)
↓
Send to Claude with clinic system prompt
↓
Parse JSON: { intent, response, next_action, priority }
↓
Branch by intent:
- emergency → escalate to clinic phone + alert owner
- appointment → push to booking sheet, confirm
- medical → "I can't diagnose, here's how to book Dr. X"
- query → answer (hours, fees, location)
- general → friendly reply
↓
Send reply via Meta Graph API
↓
Log everything to Sheets
The system prompt locked Claude into the clinic's voice: short replies (2–3 sentences), professional emojis, never diagnoses, escalates emergencies, knows fees and hours by heart.
Key engineering decisions:
- Used Meta's free Cloud API instead of WATI. Saved the clinic ~$30/month and gave full control over rate limits.
- Stored conversation history in Google Sheets, not a database. The clinic admin can read it, audit it, export it. No database to maintain.
- Forced Claude to return JSON. Made downstream branching trivial and let me add new intents without rewriting the n8n flow.
- Built the verification handler in the same webhook. Meta requires a
hub.challengeecho for webhook setup — handled inline so the clinic could verify their webhook themselves.
The numbers
- Day 1: Bot handled 47 messages, 3 escalations, 0 missed appointments
- Week 2: 312 messages handled, ~85% fully resolved by AI
- Month 1: Receptionist's after-hours calls dropped from ~40/week to ~6/week
- Month 2: Clinic added a second doctor's slots to the bot — zero extra dev work, just updated the system prompt
Cost to run: ~$8/month (Claude API + Meta API is free for first 1000 conversations + Google Sheets is free).
Build cost: $1,200 fixed price. Payback period: 3 weeks (in receptionist hours saved).
What I'd do differently
If we did v2, I'd add a real booking calendar (Cal.com integration) instead of writing to Sheets and confirming manually. The clinic doesn't want it yet — they like the human approval step — but it's the obvious next move.
Key takeaway
You don't need WATI, Twilio, or a $500/mo SaaS to run a WhatsApp bot. Meta's Cloud API + n8n + Claude + Google Sheets gets you 90% of the value at 5% of the cost. The hard part isn't the tech — it's writing the system prompt that captures the business's actual voice.
Download the n8n workflow JSON →