BotCitas
Bot de WhatsApp con IA que agenda, modifica y cancela citas médicas en lenguaje natural, disponible las 24 horas sin intervención humana.
botcitas.edwsystem.comEl problema
Una clínica médica recibía más de 80 solicitudes de cita al día por WhatsApp. El personal dedicaba más de 3 horas diarias a copiar y pegar información en una hoja de cálculo, llamar de vuelta a los pacientes para confirmar disponibilidad y enviar recordatorios uno a uno de forma manual.
El resultado era predecible: citas duplicadas, pacientes que llegaban en el horario equivocado, solicitudes que se respondían horas después —o directamente se perdían en el hilo de mensajes— y un equipo administrativo desbordado que atendía el teléfono mientras intentaba registrar datos.
"Cuando una paciente escribe a las 11 p.m. preguntando si hay turno para el jueves, nadie contesta hasta el día siguiente. Para ese momento ya agendó en otra clínica."
— Coordinadora administrativa, cliente (anónimo)
La solución
Desarrollamos un bot conectado directamente a la WhatsApp Business API de Meta que comprende lenguaje natural, consulta disponibilidad en tiempo real y gestiona el ciclo de vida completo de una cita sin intervención humana.
Entendimiento en lenguaje natural
El paciente escribe como le resulte natural: "quiero una cita para el martes con el Dr. García". La IA extrae la intención, la fecha, la hora y el servicio sin formularios ni menús rígidos.
Disponibilidad en tiempo real
Consulta PostgreSQL al instante y ofrece únicamente los horarios libres. No hay riesgo de doble agendamiento: el registro se escribe en una transacción atómica.
Recordatorios automáticos
El sistema envía un recordatorio 24 horas antes y otro 1 hora antes de la cita, directamente por WhatsApp, sin que el personal toque nada.
Escalado a agente humano
Cuando la solicitud excede la capacidad del bot (reclamos, casos especiales, urgencias), la conversación se transfiere al personal con el historial completo ya visible.
Tecnologías utilizadas
Estado de conversación en PostgreSQL
Cada número de teléfono actúa como clave de sesión. El estado actual del flujo (paso en que está el usuario, datos parcialmente capturados) se persiste en base de datos, lo que hace al bot resistente a reinicios y escalable horizontalmente.
-- Tabla de sesiones de conversación CREATE TABLE conversation_sessions ( phone_number TEXT PRIMARY KEY, step TEXT NOT NULL DEFAULT 'idle', context JSONB, updated_at TIMESTAMPTZ DEFAULT now() );
Interpretación de intención con DeepSeek vía OpenRouter
El mensaje del usuario se envía a DeepSeek con un prompt estructurado que devuelve JSON con la intención detectada (book, cancel, reschedule, query), la fecha/hora normalizada y el servicio solicitado.
// Respuesta del modelo
{
"intent": "book",
"datetime": "2024-11-19T10:00:00",
"doctor": "García",
"service": "consulta_general",
"confidence": 0.97
}Jobs de recordatorio con pg-boss
Al confirmar una cita, se encolan dos jobs en pg-boss: uno para 24 h antes y otro para 1 h antes. pg-boss garantiza ejecución exactamente una vez (at-least-once + deduplication), lo que evita doble envío incluso si el servidor reinicia entre medias.
Resultados
Tras el lanzamiento, el equipo administrativo dejó de gestionar el agendamiento por WhatsApp por completo. El bot maneja el 92 % de las conversaciones de principio a fin; solo el 8 % restante requiere algún tipo de intervención humana (casos que implican excepciones médicas o cambios de agenda de último minuto).
El tiempo de respuesta bajó de un promedio de 20 minutos (en horario laboral) a menos de 3 segundos, y el bot opera los 7 días de la semana, incluyendo festivos. La clínica reporta cero citas perdidas atribuibles al proceso de agendamiento desde la puesta en marcha.
¿Necesitas algo similar?
Si tu equipo invierte horas en tareas repetitivas de agendamiento, confirmaciones o atención inicial por WhatsApp, podemos automatizarlo.
Hablemos de tu proyecto