← ClaudeAtlas

whatsapp-receptionist-builderlisted

Use when building, extending or debugging an AI assistant on WhatsApp that answers customers and books appointments - a receptionist, booking bot or support agent on the WhatsApp Cloud API. Covers webhook signature failures, the 24-hour customer service window, duplicate replies from webhook retries, double-booking under concurrency, voice note handling, human escalation and multi-tenant number routing.
Hiberius/whatsapp-receptionist-builder · ★ 0 · AI & Automation · score 72
Install: claude install-skill Hiberius/whatsapp-receptionist-builder
# WhatsApp Receptionist Builder ## Overview A receptionist on WhatsApp is not a chatbot with a calendar bolted on. It is a webhook that must answer in milliseconds, a queue that must not send the same message twice, a booking that must not double-book under concurrency, and a messaging window that closes 24 hours after the customer's last message whether you are ready or not. **Core principle: the webhook acknowledges, the worker thinks.** Everything else in this skill follows from that one decision. ## When to use - Building an AI receptionist, booking assistant or support agent on the WhatsApp Cloud API - Webhook returns 200 but Meta keeps retrying, or the customer receives the same reply twice - Signature verification fails and the secret is definitely correct - Messages send fine during a conversation and get rejected hours later - Two customers hold the same slot - Voice notes arrive and nothing happens - Routing several business numbers into one deployment **Not for:** WhatsApp marketing broadcasts, unofficial or reverse-engineered WhatsApp clients, or scraping. Those get numbers banned; the Cloud API is the only path that survives contact with a real business. A complete, working implementation of everything described here is [whatsapp-receptionist](https://github.com/Hiberius/whatsapp-receptionist) (Next.js, Supabase, MIT). ## The shape that works ``` Meta webhook ──► verify signature on the RAW body ──► record the message id, drop it if already