Multilingual WhatsApp Commerce Agent
Live and scalingPehesara Book Shop, productised under CEYLAI Labs, 2026
Four registers, one agent
The model can only quote what catalogue.search returns. If nothing comes back, it says so instead of guessing.
A WhatsApp agent that answers shop customers in English, Sinhala, Tamil and Singlish, and can only quote what the product catalogue says.
- Problem
- Sri Lankan shops lose sales in WhatsApp chats they cannot answer fast enough, and customers often write in Sinhala, Tamil or Singlish rather than English.
- Constraint
- A wrong price or a stock promise the shop cannot keep costs more than a slow reply. Whatever answers has to be right as well as fast, and cheap enough per conversation for a small shop.
- Decision
- An agent that replies in the customer's own language, sends one message per turn and may only quote products that the shop's catalogue returns.
- Outcome
- Live for Pehesara Book Shop, and packaged by CEYLAI as a service for other businesses, planned to roll out ahead of Meta's October 2026 pricing change.
- Problem
- A real shop with real customers writing in four languages. No sandbox and no synthetic benchmark; the test is whether a customer gets the right answer.
- Constraint
- It had to be safe, so it never invents stock. It had to be cheap, because a small business pays per conversation. And it had to feel natural in languages most LLM demos ignore.
- Decision
- I set the product rules (grounding through a catalogue tool, one message per turn, replying in the customer's language), chose the model for speed and cost, and own the rollout to other businesses.
- Outcome
- LLM product judgement in production, covering grounding, cost and multilingual experience, plus the commercial sense to turn one build into a service.
- Problem
- Let a language model sell from a catalogue without ever letting it make a product up.
- Constraint
- WhatsApp Cloud API webhooks, customers who switch language mid-thread, romanised Sinhala that tokenisers were never trained on, and per-message costs that punish chatty bots.
- Decision
- Node.js on the Meta WhatsApp Cloud API with Claude Haiku 4.5. Product facts come only from a catalogue tool, and the model may quote what the tool returns and nothing else. The turn policy allows one outbound message per customer message.
- Outcome
- Grounding is enforced by the tool contract instead of being hoped for in a prompt, and the cost of a conversation is predictable.
- Node.js
- Meta WhatsApp Cloud API
- Claude Haiku 4.5
- Tool use





