// el problema
Dos problemas, una plataforma. Un negocio que quiere un agente de IA en WhatsApp se enfrenta a semanas de plomería con la Meta Cloud API, y a un bot que alucina porque no está anclado a sus documentos reales. Y en el caso estrella — una clínica dental — el dentista tiene las manos en el paciente. Parar para escribir notas clínicas, actualizar un odontograma o redactar una receta rompe la concentración, alarga la visita y obliga a tocar un teclado con guantes.
// la construcción
Una plataforma multi-tenant donde cada negocio tiene datos, configuración y base de conocimiento vectorial aislados — y encima, un Copiloto Clínico basado en ReAct para el vertical dental.
›Respuestas ancladas en recuperación: subes PDFs o URLs, se trocean y se indexan en Qdrant, con un piso de similitud coseno de 0.40 para que el bot se calle en lugar de inventar una respuesta que no puede sostener.
›Capa de LLM agnóstica del proveedor — DeepSeek, OpenAI, Groq u OpenRouter detrás de una sola interfaz. Cambiar de proveedor son dos variables de entorno y un reinicio, no una refactorización, así que ningún cliente queda atado al precio de un solo vendor.
›WhatsApp vía Meta Cloud API con una cola BullMQ que absorbe las ráfagas de webhooks, un widget web integrable con streaming SSE, y Embedded Signup para que el cliente conecte su propio número con un OAuth dentro de la app en vez de un ticket de soporte.
›Traspaso a humano que de verdad funciona: bandeja de agente sobre un feed SSE en vivo, y el bot se silencia en el momento en que una persona toma el control, para que el cliente nunca reciba respuesta de un humano y un robot a la vez.
›Fichado dental sin manos: el dentista dice "caries en el diente 16, mesial y oclusal", el Copiloto interpreta la notación FDI y actualiza él mismo un odontograma interactivo de 32 dientes — con más de 13 herramientas de backend que cubren extracciones, cruce de alergias, recetas y notas SOAP.
›Un cuestionario de admisión de 13 pasos por WhatsApp — antecedentes, alergias, medicamentos, seguro — que aterriza como datos estructurados en un expediente de 6 pestañas, y llamadas de voz que escalan a un agente de IA con Vapi corriendo sobre el propio proxy LLM de la plataforma, con acceso a la base de conocimiento.
// qué se entregó
Corriendo en producción sobre un despliegue endurecido — PM2, Nginx, Let's Encrypt y Qdrant atado a localhost — con 33 pruebas unitarias sobre el servicio de LLM y el motor de conversación. Las observaciones en lenguaje natural se vuelven datos médicos estructurados: notas SOAP, planes de tratamiento, presupuestos por fases, odontogramas. El dentista se queda con el paciente, no con el teclado.