Dorra Development, a real-estate developer, was handling every inbound WhatsApp enquiry by hand. Sales reps were spending hours on first-touch qualification — answering the same "what's the payment plan for X?" question, chasing clients for budget and location preferences, and only then scheduling a call. The qualified leads that did make it to a meeting were the lucky ones. A lot of interested prospects dropped off during the back-and-forth.
The goal
An AI agent that would respond to every WhatsApp lead within seconds, answer their questions from an approved knowledge base, qualify the lead, and book a meeting on the right sales rep's calendar — all without a human ever touching the conversation.
What we built
- A 12-step FastAPI agent pipeline: incoming WhatsApp message → multimodal handling → knowledge-base retrieval → conversation history → tool-calling loop (up to 5 rounds) → marker parsing → post-response validators. Each stage is observable and independently testable.
- A pgvector-backed knowledge base over Dorra's approved materials — project specs, floorplans, payment plans, FAQs — so the agent's answers are always grounded in real source documents, not hallucinations.
- Calendar booking via Composio → the agent finds the right sales rep, checks availability on their Outlook calendar, and writes the confirmed event back, all inside the conversation.
- A dashboard for Dorra's team: see every lead, every conversation, every booking; edit the agent's guardrails; upload new KB documents; review flagged interactions.
- An outbound webhook that fires `lead.created`, `lead.updated`, and booking events into their downstream CRM on an allow-listed field-change basis — so the existing sales process stays in sync.
The agent treats its knowledge base as the source of truth. Anything not in there, it doesn't make up.
Why it works
Most "AI sales chatbots" are thin wrappers over a general-purpose LLM. They drift, they hallucinate, and they embarrass brands fast. Dorra's agent is different because its grounding, its tool-calling boundaries, and its validators are all tuned to the specific shape of a real-estate enquiry — plus a hard cap on tool rounds per conversation, so the cost and latency profile stays predictable even at scale.
Sales reps now only see qualified, already-booked meetings. Everything upstream — triage, Q&A, scheduling — runs on its own.


