Agendity: SaaS multi-tenant de agendamiento
Arquitectura multi-tenant desde cero para una plataforma de agendamiento, con integración directa a WhatsApp Business API y sincronización de disponibilidad en tiempo real.
- Rol
- Fundador y CTO
- Industria
- SaaS
- Stack técnico
- Ruby on Rails, Next.js, PostgreSQL, Redis, NATS, WhatsApp Business API
Contexto
Agendity es una plataforma SaaS de agendamiento para salones y barberías. El producto nace de una observación simple: la mayoría de estos negocios coordinan citas por WhatsApp de forma manual, y las soluciones existentes en el mercado dependen de intermediarios (como Twilio) para automatizar esa comunicación, lo que añade costo y limita la personalización.
El reto
Construir un SaaS multi-tenant real implica decisiones que no se pueden revertir fácilmente después: cómo se aísla la información de cada negocio, cómo se modelan permisos por rol, y cómo se garantiza que la disponibilidad mostrada a un cliente sea siempre la disponibilidad real, incluso con múltiples instancias del sistema corriendo en paralelo.
A eso se sumaba un reto de integración específico: conectar directamente con la API de WhatsApp Business de Meta, sin intermediarios, para tener control total sobre confirmaciones y recordatorios automatizados.
La arquitectura
Diseñé la arquitectura multi-tenant completa (autenticación con JWT, control de acceso basado en roles con Pundit, suscripciones y motor de agendamiento) antes de escribir la primera función de negocio, porque son las decisiones más costosas de cambiar después.
Tiempo real sin intermediarios. La disponibilidad se sincroniza entre instancias mediante NATS pub/sub, de forma que un cambio de horario se refleja instantáneamente en toda la plataforma sin depender de polling ni de un único proceso central.
Integración directa con WhatsApp. En lugar de usar un proveedor intermediario, la integración se construyó directamente contra la API de Meta, lo que permite personalización completa de confirmaciones y recordatorios sin costos ni límites de un tercero.
Experiencia mobile-first. Generación de tickets con QR, PWA instalable y notificaciones push web, pensadas para un flujo de uso que ocurre mayoritariamente desde el celular, tanto para el negocio como para el cliente final.
Decisiones que marcaron la diferencia
- Resolver la arquitectura multi-tenant (aislamiento, roles, permisos) antes que cualquier feature visible, evitando una migración costosa más adelante.
- Integrar WhatsApp Business API de forma directa en vez de depender de un intermediario, a cambio de asumir la complejidad de esa integración internamente.
- Usar pub/sub para disponibilidad en tiempo real en lugar de un modelo de refresco periódico, priorizando consistencia percibida por el usuario.