Proyecto
AgendaBot Pro
SaaS multi-tenant que permite a los pacientes agendar, reagendar y cancelar citas completamente desde WhatsApp —sin apps adicionales— para el mercado mexicano/LATAM. Impulsado por un agente de IA (GPT con function calling) con guardrails deterministas, WhatsApp Cloud API, cobros con Stripe y facturación electrónica (CFDI).
En producción Producto propio — en producción Fundador e Ingeniero (Full Stack — Producto, IA, Backend, Infraestructura) Resumen público
Producto propio, en producción y operado en solitario. SaaS multi-tenant que maneja datos de clientes y pacientes; los detalles de implementación se resumen a alto nivel.
Stack
Angular 21TypeScriptTailwind CSSNode.jsExpressFirebase HostingFirestoreFirebase AuthCloud FunctionsOpenAI GPT-4o (function calling)WhatsApp Cloud APIStripeFacturapi (CFDI)ResendGCPGitHub Actions
Impacto
- Los pacientes agendan, reagendan y cancelan 24/7 completamente dentro de WhatsApp —sin instalar apps— reduciendo la carga de recepción/teléfono para clínicas y profesionales independientes.
- El negocio puede conectar el número de WhatsApp que ya usa, en vez de pedirle a sus pacientes que se aprendan uno nuevo — la razón más común por la que este tipo de producto se abandona durante el alta.
- Agente de IA sobre GPT con function calling donde el modelo NUNCA escribe en la base de datos: solo invoca tools definidas en el backend, manteniendo cada cita correcta, auditable y segura.
- Capa de confirmación determinista fuera del LLM: los recordatorios de 1 hora amarran los IDs de cita, así una respuesta o un botón confirman la cita exacta — eliminando los 'confirmado' falsos.
- Monetización por uso con cobro medido de Stripe, facturando solo las citas completadas por ciclo de suscripción.
- Facturación electrónica mexicana (CFDI) nativa: los pacientes se autofacturan desde WhatsApp o un portal público, con credenciales encriptadas por organización.
- Multi-tenant desde el día uno — un solo modelo de datos sirve a profesionales independientes y clínicas con varios médicos, con aislamiento de inquilino forzado en el servidor.
Lo que hice
- Diseñé un agente de IA sobre GPT con function calling: el modelo solo llama tools tipadas, ejecutadas en el servidor contra Firestore — el LLM nunca toca la base de datos.
- Construí flujos interactivos de WhatsApp — pickers de servicio/profesional/fecha/hora y botones quick-reply de plantilla con payload dinámico por mensaje.
- Implementé un estado de slot-filling a prueba de truncamiento e historial acotado para que el bot deje de repreguntar y sobreviva conversaciones largas.
- Blindé los webhooks: verificación de firma de Meta y Stripe sobre el raw body, más deduplicación por messageId con escrituras atómicas en Firestore.
- Automaticé el sync de plantillas de WhatsApp a Meta vía Graph API con ediciones no destructivas (evitando el cooldown de eliminación de nombres de Meta).
- Auth multi-tenant con custom claims de Firebase + middleware de tenant que acota cada query; feature flags actualizados solo desde webhooks de Stripe.
- Jobs programados para recordatorios dentro de la ventana gratuita de 24h de Meta, detección de no-shows y reportes diarios.
- Panel de super-admin con analítica de costo/margen por organización y monitoreo de conversaciones en vivo; CI/CD con GitHub Actions y un gate de tests que bloquea el deploy.
- La lista de espera ofrece los huecos liberados durante 30 minutos y la compresión de agenda propone horarios más juntos, pero ninguna mueve jamás a un paciente sin un sí explícito por WhatsApp: el cambio lo hace el toque, no el algoritmo.
Arquitectura
- Monorepo de dos capas: SPA Angular 17 (Firebase Hosting) + Node/Express en Cloud Functions v2; el frontend nunca accede a Firestore directamente — todo pasa por el backend.
- Webhook de WhatsApp Cloud API → middleware de auth + tenant → agente de IA (GPT con function calling), o un Flow Engine hardcodeado cuando la IA está desactivada.
- GPT llama tools tipadas; el backend las ejecuta contra Firestore y devuelve el resultado — el modelo nunca escribe.
- Los webhooks de Stripe controlan el plan y los feature flags; cobro medido sobre citas completadas por ciclo de suscripción.
- Facturapi para timbrado de CFDI con llaves encriptadas por organización; portal público de facturación + flujo dentro de WhatsApp.
- Jobs programados (Cloud Scheduler / onSchedule): recordatorios, detección de no-shows, reportes y compresión de datos.
Etiquetas
SaaSWhatsAppAI AgentsLLMsMulti-tenantStripeFirebaseLATAMFull Stack
