Raju Rayhan
Head of Development · AI Platform Architect
Available · Q3 2026
← work / aalapai.com
Case 04 · 2024 · Personal SaaS

AalapAI

A personal SaaS that connects WhatsApp Business numbers to AI agents so small businesses can automate customer conversations on the channel they already use. Built solo, evenings and weekends.
LaravelMySQLOpenAI APIWhatsApp Business APIStripeRedis
1
Developer · solo build
BD
Primary market
24/7
Customer coverage
WA
WhatsApp-native
§ 01 The brief
Context

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.

Constraints
  • Zero ops overhead — setup in under 10 minutes, no developer required.
  • WhatsApp Business API rules are strict; templates, opt-in, windows must all be honored.
  • Multi-lingual — Bangla and English in the same conversation, sometimes in the same sentence.
  • Pricing had to fit a shopkeeper's budget, not an enterprise's.
The owner shouldn't have to learn what an "LLM" is. They should paste their FAQ, connect their number, and walk away.
— design principle
§ 02 The architecture simplified
    ┌───────────────────┐           ┌───────────────────┐
    │  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)  │
                        └──────────┘     └──────────┘     └──────────┘
§ 03 A few decisions
03.1
Knowledge base as a pasted document, not a schema

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.

03.2
Hand-off to a human, cleanly

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.

03.3
Bilingual by default, not by flag

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.

§ 04 Outcomes
Before
  • Owners answering DMs at midnight
  • FAQs repeated until the owner memorized their own business
  • Missed messages meant missed sales
After
  • First reply in seconds, any hour
  • Owner only reads conversations that actually need them
  • FAQ pasted once, answered forever — in the right language
Next case
LearnWithAI.BD
Read next →