// the problem
Two problems, one platform. Businesses wanting an AI agent on WhatsApp face weeks of Meta Cloud API plumbing, and a bot that hallucinates because it has no grounding in their actual documents. And in the flagship case — a dental clinic — the dentist is hands-on with a patient. Stopping to type clinical notes, update an odontogram, or write a prescription breaks focus, slows the visit, and means touching a keyboard with gloved hands.
// the build
A multi-tenant platform where each business gets isolated data, config, and its own vector-indexed knowledge base — plus a ReAct-based Clinical Copilot on top of it for the dental vertical.
›Retrieval-grounded answers: upload PDFs or URLs and they are chunked and embedded into Qdrant, with a 0.40 cosine-similarity floor so the bot stays quiet rather than inventing an answer it cannot support.
›Provider-agnostic LLM layer — DeepSeek, OpenAI, Groq, or OpenRouter behind one interface. Switching providers is two environment variables and a restart, not a refactor, so no client is locked to one vendor's pricing.
›WhatsApp via the Meta Cloud API with a BullMQ queue absorbing webhook bursts, an embeddable SSE-streaming web widget, and Embedded Signup so a client connects their own phone number through an in-app OAuth flow instead of a support ticket.
›Human handoff that actually works: an agent inbox on a live SSE feed, and the bot goes silent the moment a person takes over, so a customer never gets a human and a robot answering at once.
›Hands-free dental charting: the dentist says "caries on tooth 16, mesial and occlusal", the Copilot parses FDI notation and updates an interactive 32-tooth odontogram itself — across 13+ backend tools covering extractions, allergy cross-checks, prescriptions, and SOAP notes.
›A 13-step Spanish WhatsApp intake questionnaire — history, allergies, medications, insurance — landing as structured data in a 6-tab medical record, and voice calls escalating to a Vapi AI agent that runs on the platform's own LLM proxy with knowledge-base tool access.
// what shipped
Running in production on a hardened deployment — PM2, Nginx, Let's Encrypt, and Qdrant bound to localhost — with 33 unit tests over the LLM service and conversation engine. Natural-language observations become structured medical data: SOAP notes, treatment plans, phased budgets, odontograms. The dentist stays focused on the patient instead of the keyboard.