AutoReserva es un agente conversacional para reservas médicas. Este artículo describe las decisiones técnicas detrás del sistema — dirigido a desarrolladores, early adopters tech y cualquiera que quiera entender cómo funciona por dentro.
Stack tecnológico
Backend
Python 3.13 + FastAPI + Playwright (Chromium headless). Corre en un Mac Mini doméstico expuesto a internet vía Cloudflare Tunnel, sin costo de servidor cloud. El costo operativo de infraestructura es cero: Cloudflare free tier + Supabase free tier + Resend free tier + electricidad del equipo.
Frontend
Next.js 14 (App Router) + TypeScript + Tailwind CSS. La interfaz es la capa visible en app.autoreserva.cl. El backend API corre en api.autoreserva.cl via Cloudflare Tunnel apuntando al Mac Mini.
Procesamiento de lenguaje natural
Claude Haiku 4.5 con prompt caching. El costo por consulta es aproximadamente $0.001 USD. El sistema tiene dos parsers intercambiables: RealIntentParser que invoca la API de Claude, y MockIntentParser basado en expresiones regulares para desarrollo local sin incurrir en costos.
Decisiones de arquitectura
Patrón Provider para multi-clínica
Cada clínica es un módulo que hereda de una clase base con dos métodos: search(intent) y book(slot, user). Agregar una clínica nueva significa escribir un Provider nuevo — sin tocar el core del sistema. Esto permite escalar horizontalmente sin deuda técnica acumulada.
Selectores en YAML, no en código
Los selectores CSS de cada sitio web de clínica se almacenan en archivos YAML separados del código Python. Si una clínica actualiza su frontend, se actualiza el YAML sin tocar la lógica. El sistema rechaza ejecutarse si el YAML no tiene validated: true — evitando que selectores desactualizados produzcan reservas incorrectas.
Drill-down de agenda limitado a 5 médicos
Cuando hay una ventana horaria específica, el agente entra a la pantalla de agenda de cada médico para revisar disponibilidad granular. El límite de 5 médicos por búsqueda es un balance entre cobertura y tiempo de respuesta — el objetivo es resultados en menos de 30 segundos.
Monitoreo asíncrono con SSE
Si no hay disponibilidad inmediata, el sistema lanza tareas de fondo que re-ejecutan la búsqueda cada 10 minutos. Las notificaciones llegan al frontend via Server-Sent Events (SSE) y por email. No hay polling desde el cliente — el servidor empuja el aviso cuando hay un resultado.
Infraestructura y costos
- Cloudflare Tunnel: expone el Mac Mini a internet sin abrir puertos del router. Free tier.
- Supabase: base de datos y autenticación. Free tier.
- Resend: envío de emails de notificación. Free tier.
- Claude Haiku 4.5: ~$0.001 por consulta NLU. Único costo variable.
- Electricidad del Mac Mini: costo fijo doméstico.
El resultado es un stack de producción real con costo operativo cercano a cero mientras el volumen sea bajo.
Qué sigue
El roadmap técnico más cercano incluye: reserva de un clic (autocompletado del formulario de la clínica), soporte multi-clínica (un Provider por plataforma), y pruebas de carga para validar el modelo de monitoreo concurrente con múltiples usuarios activos.
Preguntas frecuentes
¿Por qué Python y no Node.js para el backend?
Playwright tiene soporte nativo y maduro en Python. Las bibliotecas de automatización de browser y las integraciones con LLMs (vía SDK de Anthropic) tienen mejor ergonomía en Python para este tipo de agente.
¿Por qué Cloudflare Tunnel en vez de un VPS?
El Mac Mini ya existe. Cloudflare Tunnel lo expone de forma segura sin costo adicional. Un VPS con capacidad equivalente (CPU para Chromium headless) costaría entre $20 y $60 USD al mes. Para validar el producto, el costo cero tiene más sentido.
¿El agente puede detectar si la clínica cambia su interfaz?
El mecanismo de validated: true en el YAML detiene la ejecución si los selectores no están verificados. Cuando una clínica actualiza su sitio, el sistema falla explícitamente en vez de ejecutar acciones incorrectas silenciosamente.
Probá AutoReserva gratis → app.autoreserva.cl
AutoReserva — Servicio independiente. No afiliado a ninguna clínica o institución. Solo automatiza acciones que cualquier persona puede hacer públicamente desde su navegador con datos públicos.