Engineering

How We Built a WhatsApp Bot That Handles 10K Conversations a Day

A behind-the-scenes look at our AI WhatsApp integration and the architecture that makes it scalable and reliable.

The constraint that shaped everything

WhatsApp webhooks expect a fast acknowledgement. Anything that takes seconds — a model call, a database lookup across three systems — cannot happen inside the request. So the webhook does one job: validate, enqueue, return 200.

Queue first, think later

Every inbound message lands on a queue keyed by conversation. Workers pull, assemble context, call the model, and push the reply. Per-conversation keys mean a burst from one customer never delays another, and a failed worker retries without duplicating replies.

Grounding beats cleverness

The model never answers from memory. It answers from retrieved records — order status, appointment slots, live pricing. Hallucination stops being a risk when the answer is assembled from your own data and the model only phrases it.

The human escape hatch

Low confidence, three failed clarifications, or any mention of a complaint routes straight to a human with full transcript context. Measuring how often that fires is the single most useful quality signal we collect.

If a number in this article does not match what you see in your own dashboard, that gap is worth an hour of someone’s time. Ask us about it.

Let’s go

Tell us the problem. We’ll scope it honestly.

Worst case you get a written scope, a realistic timeline and a second opinion for free.

Start a conversation