The problem
Leads arrive on WhatsApp and get answered when somebody gets to them. A bot that answers instead usually makes it worse. It asks for the budget the person gave two messages ago, stacks three questions into one reply, and keeps talking after a consultant has already picked up the thread.
What we built
An agent on Cloudflare Workers with one Durable Object per conversation. It reads the fields out of what was actually written, so it only ever asks for the first thing still missing, and a model reply carrying two questions or a repeat is replaced by a template before it is sent. A burst of short messages is held for a couple of seconds and answered as one turn, the way a person would. Intent is scored by arithmetic that lists every point it awarded, with the model's read as one labelled input rather than the whole verdict. The model may only choose the parameters of a tool, and a value that is not in the customer's own words is refused. When a consultant takes over the agent stops, and a reply composed during the handover is dropped rather than sent.
The result
Marula Journeys is a fictional travel agency and the page says so. It runs in a WhatsApp-style phone on the page, or through real WhatsApp over the Twilio sandbox, with a CRM view beside it that fills in as the conversation goes. When the day's Workers AI allocation runs out the agent keeps working on code alone: the same fields, the same score, the same questions, in fixed wording, and the page says that is what is happening.