In Bangladesh, small businesses live on WhatsApp. Orders, questions, complaints — all of it happens in DMs, at all hours, from a phone that's usually in the owner's pocket. The people who could benefit most from AI can't afford to hire a team to wire it up. So I built the wiring.
┌───────────────────┐ ┌───────────────────┐
│ Customer's │ │ Business owner │
│ WhatsApp │ │ dashboard (Vue) │
└─────────┬─────────┘ └─────────┬─────────┘
│ │
▼ ▼
┌────────────────────┐ ┌──────────────────────┐
│ WhatsApp Business │ │ Laravel app │
│ API · webhooks │─────────►│ · knowledge base │
└────────────────────┘ │ · conversation state │
│ · billing (Stripe) │
└──────────┬───────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ OpenAI │ │ MySQL │ │ Redis │
│ (reply) │ │ (owner │ │ (rate + │
│ │ │ data) │ │ cache) │
└──────────┘ └──────────┘ └──────────┘ Owners don't want to model their business. They want to paste the FAQ they already have — in their voice, with their typos — and trust that the agent will figure it out. A lightweight RAG layer parses and chunks; a nightly evaluation catches drift.
When the agent isn't confident, it says so — and drops a summary into the owner's inbox with the conversation and a one-tap 'I'll take it from here' button. Trust goes up when the bot knows its limits.
Bangla-English code-switching is normal. The agent detects on a per-message basis, not per-conversation. Replies match the language of the latest customer message, not a setting the owner forgot to flip.