Most teams building on WhatsApp are building chatbots. Multi-turn conversations, intent trees, fallback loops — the whole nine yards.
But here's the thing: most of them don't actually need a chatbot.
They need a system that turns incoming messages into backend actions.
The Chatbot Trap
A hotel guest sends:
"Can I get extra towels in room 312?"
The typical chatbot approach:
Bot: Hi! How can I help you?
Guest: I need towels
Bot: Which room?
Guest: 312
Bot: How many towels?
Guest: ...just some towels
Bot: I didn't understand. How many towels would you like?
3 round-trips to extract 2 fields. The guest is annoyed. The developer is maintaining a conversation state machine. Everyone loses.
Messages Are Not Conversations
Here's the insight: most inbound messages already contain everything you need. You don't need to ask follow-up questions — you need to extract what's already there.
The shift is simple:
Message
↓
Analysis (single LLM call)
↓
Structured payload
↓
Backend action
One message in, one structured payload out. No conversation state. No dialog trees. No "I didn't understand."
What This Looks Like in Practice
The same message — "Can I get extra towels in room 312?" — processed as a message-driven system:
{
"intent": "room_service_request",
"confidence": 0.97,
"actions": [
{
"type": "housekeeping.task.create",
"payload": {
"room": "312",
"item": "extra towels"
}
}
],
"suggested_reply": "Of course! Extra towels are on the way to room 312."
}
Your backend receives this via webhook. You create the task in your PMS. You send the reply. Done.
One message. One payload. One action.
The Architecture
Here's the full flow — from WhatsApp message to backend action:
WhatsApp (inbound message)
↓
Pre-filter (spam, noise — no LLM cost)
↓
Router (classify + route to the right agent)
↓
Agent (LLM call → structured output)
↓
Webhook (HMAC-signed payload to your app)
↓
Your backend (create task, update booking, send reply)
Each step is deterministic. The LLM is used once, for extraction — not for conversation. The output is a structured JSON payload your backend can trust.
Code, Not Config
Here's what triggering an agent looks like with the Ruby SDK (same way with TypeScript or Python SDK):
require "whatsrb"
client = WhatsRB::Client.new(api_key: "wrb_live_xxx")
run = client.agents.run(
agent_id: "agt_abc123",
input: "Cancel booking #BK-4521"
)
puts run.output
# => { "intent" => "cancel_booking", "actions" => [...] }
Or with a simple curl:
curl -X POST "https://api.whatsrb.com/v1/agents/agt_abc123/runs" \
-H "Authorization: Bearer wrb_live_xxx" \
-H "Content-Type: application/json" \
-d '{"input":"Cancel booking #BK-4521"}'
You get back a structured payload. Every time. No conversation state to manage.
When Chatbots Make Sense (And When They Don't)
| Use case | Chatbot? | Message-driven? |
|---|---|---|
| Customer FAQ with branching logic | Yes | No |
| "Book a table for 4 at 8pm" | No | Yes |
| "Cancel my order #12345" | No | Yes |
| "AC broken in room 204" | No | Yes |
| Guided product recommendation | Yes | No |
| "Where's my shipment TRK-789?" | No | Yes |
If the message already contains the intent and the data — you don't need a chatbot. You need a message-to-action pipeline.
Real Results
With this approach:
- No conversation state to maintain
- Single LLM call per message (~1-2s latency)
- Deterministic outputs your backend can trust
- 90%+ accuracy on intent + field extraction out of the box
This Is What We're Building
WhatsRB Cloud is a platform that turns WhatsApp messages into structured, actionable webhooks. No chatbot framework. No dialog trees. Just messages in, actions out.
We're opening the beta on March 31, 2026 to a limited group of early adopters.
Check out the API docs to see how it works under the hood.
Follow me on X for updates
GitHub
Built with Ruby, Rails, and a healthy distrust of chatbots.

Top comments (1)
Quick personal review of AhaChat after trying it
I recently tried AhaChat to set up a chatbot for a small Facebook page I manage, so I thought I’d share my experience.
I don’t have any coding background, so ease of use was important for me. The drag-and-drop interface was pretty straightforward, and creating simple automated reply flows wasn’t too complicated. I mainly used it to handle repetitive questions like pricing, shipping fees, and business hours, which saved me a decent amount of time.
I also tested a basic flow to collect customer info (name + phone number). It worked fine, and everything is set up with simple “if–then” logic rather than actual coding.
It’s not an advanced AI that understands everything automatically — it’s more of a rule-based chatbot where you design the conversation flow yourself. But for basic automation and reducing manual replies, it does the job.
Overall thoughts:
Good for small businesses or beginners
Easy to set up
No technical skills required
I’m not affiliated with them — just sharing in case someone is looking into chatbot tools for simple automation.
Curious if anyone else here has tried it or similar platforms — what was your experience?
Some comments have been hidden by the post's author - find out more