There are three sections below. The project story covers how the assistant grew from a website chat into a line that answers on its own, with figures for every month. The WhatsApp page describes how the line is set up today and how I would build it on the official API. The technical appendix is for engineers: what the bot is made of and why it is built this way.
Support Line AI Assistant
A bot that answers a delivery store's customers on WhatsApp and on its website: first to reply in 77% of conversations, a 29-second median wait, 22 checks on every model answer.
The store's name, domain, country, city and product range are hidden. Figures were taken on 19 October 2026 from the bot's log, the messenger gateway's database, git history and the store platform's data.
What's inside
- First commit and the website chat on 29 January 2026; on 31 July the bot joined the WhatsApp line and for seven weeks only wrote drafts for people.
- On 21 September the first answer went to a customer with no person involved; classes of answers opened in 15 waves over 10 days, each with its own flag and a before-and-after measurement.
- Between 5 and 19 October the bot answered first in 77% of conversations, with a 29-second median wait, and 41% of conversations needed no person.
- 3% of conversations go unanswered; in the summer, when only people answered, it was 16–18%.
- All 879 of the bot's messages were replies to a customer, the latest sent 52 minutes after the customer's message.
- A guard checks every model answer for 22 kinds of error: one rewrite when it finds one, then a fixed line or a person.
- Every rule in the instructions is explained by one of 134 cards; the store owner and a dispatcher gave 169 verdicts, and a test blocks any rule change without its card.
- Since 28 September the bot passes questions to drivers and dispatchers, 82 from customers in three weeks; since 30 September it changes an order after the customer says yes.
- 426 commits, 207 automated deploys, 3,928 tests with no network access, a 21-second suite.
- A separate page on WhatsApp: how the line runs through its own gateway and what the official WhatsApp Business Platform would change, with the 24-hour window measured from the log.
Stack
- Python 3.12, FastAPI
- asyncpg, PostgreSQL 16
- Redis: switches, rate limits, idempotency
- OpenAI GPT-5.2: answers, photos, memory summaries
- OpenAI text-embedding-3-small, NumPy
- Whisper: voice messages
- Strict JSON schema for model answers
- WebSocket, iframe, plain JavaScript
- WhatsApp: own messenger gateway
- Telegram: operators' feed
- Signed requests between services
- Docker Compose
- GitHub Actions, GitHub Container Registry
- nginx
- pytest
- gitleaks
- Claude Code
Read in depth
- 01 · ~19 min
Business logic
How a store's support assistant grew out of a website chat: drafts for staff, answers opened in measured waves, questions to drivers, order changes.
Read →
- 02 · ~17 min
WhatsApp and the official API
How the line runs on WhatsApp through its own gateway, and how I would build it on the WhatsApp Business Platform instead.
Read →
- 03 · ~22 min
Tech stack
For engineers: the path from gateway to outcome, signed integrations, a guard on model answers, waves and switches, memory, and decisions with costs.
Read →