Sistema de reservas para restaurante con IA, WhatsApp y n8n
Como construi un sistema de reservas para restaurante con WhatsApp, n8n, IA, Google Calendar, control de capacidad, email y cancelaciones.
Uno de los sistemas que he construido dentro de NexaVision AI es una automatizacion de reservas para restaurante. La idea era resolver un problema muy concreto: muchas reservas llegan por canales conversacionales, especialmente WhatsApp, pero el restaurante necesita que esas conversaciones acaben en una reserva real, validada, registrada y facil de cancelar.
No publico el repositorio ni el codigo porque forma parte de los workflows internos de NexaVision AI. Pero si puedo explicar la arquitectura, el enfoque de producto y las decisiones tecnicas que hacen que el sistema funcione.
El problema
Reservar una mesa parece una tarea sencilla, pero cuando lo miras desde dentro de un restaurante aparecen muchos detalles:
- el cliente escribe de forma natural, no con un formulario perfecto,
- puede faltar el dia, la hora, el numero de personas, el nombre o el email,
- hay horarios de comida y cena,
- hay dias cerrados,
- existe una capacidad maxima por tramo horario,
- algunos grupos grandes deben revisarse manualmente,
- el restaurante necesita evitar reservas duplicadas o solapadas,
- el cliente debe recibir una confirmacion clara,
- la reserva debe poder cancelarse despues por el mismo canal.
El objetivo era convertir todo eso en un sistema automatico, pero sin hacerlo rigido. Un restaurante no necesita una IA que parezca brillante; necesita una IA que no rompa operaciones.
La solucion
El sistema funciona como un asistente de reservas conectado a WhatsApp, n8n y Google Calendar. El cliente puede escribir algo como:
Hola, quiero reservar manana para 4 a las 21:00.
El workflow interpreta la intencion, extrae datos estructurados, valida si la reserva esta completa, comprueba disponibilidad y crea el evento en Calendar si hay capacidad.
Si falta informacion, el asistente no inventa datos. Pregunta lo minimo necesario:
- dia,
- hora,
- numero de personas,
- nombre,
- email para enviar la invitacion de Calendar.
Esa parte es importante. En automatizacion empresarial, una buena IA no es la que responde mas largo, sino la que reduce friccion sin perder control.
Arquitectura general
La arquitectura se divide en varios bloques:
- Entrada WhatsApp: recibe mensajes del cliente desde una instancia conectada a n8n.
- Normalizacion del mensaje: filtra mensajes invalidos y prepara datos utiles como telefono, texto, chat y contexto.
- Configuracion del restaurante: nombre, zona horaria, duracion de reserva, capacidad por tramo, tamano maximo de grupo, dias cerrados y bloques de apertura.
- IA de interpretacion: transforma lenguaje natural en intenciones como consultar disponibilidad, reservar, cancelar o responder una pregunta general.
- Google Calendar: consulta eventos, calcula conflictos y crea reservas.
- SQLite interno: guarda historial conversacional y reservas.
- Email / Calendar invite: envia confirmacion y anade al cliente como invitado.
- Respuesta por WhatsApp: devuelve una respuesta clara al usuario.
El codigo y los endpoints quedan privados, pero el patron de arquitectura es el importante: canal conversacional, capa de interpretacion, capa de validacion, capa de disponibilidad y capa de confirmacion.
Control de disponibilidad
El sistema no se limita a preguntar si hay un evento justo a esa hora. Calcula disponibilidad con criterio de restaurante.
Para cada dia, revisa:
- si el restaurante esta cerrado,
- que bloques de apertura aplican,
- si la hora solicitada cae dentro de comida o cena,
- cuantos eventos se solapan con el tramo solicitado,
- si el numero de reservas concurrentes supera la capacidad configurada,
- si el grupo supera el tamano maximo automatizable.
Eso permite separar tres casos:
- Hay hueco: se crea la reserva.
- No hay capacidad: se propone buscar otra hora.
- Caso delicado: grupo grande o peticion fuera de regla, se deriva al equipo humano.
Esta distincion evita que el asistente intente forzar reservas que un humano deberia revisar.
Validacion antes de confirmar
Antes de tocar Calendar, el sistema valida campos. No basta con que el usuario diga "reserva para cuatro"; hay que saber dia, hora, nombre y email.
El email es especialmente importante porque la reserva se puede confirmar tambien con una invitacion de Google Calendar. Si el usuario escribe un email invalido, el sistema lo detecta y lo pide de nuevo antes de confirmar.
Tambien valida:
- reservas en dias cerrados,
- horas fuera de servicio,
- grupos por encima del limite automatico,
- fechas ambiguas,
- reservas incompletas.
Este bloque de validacion es el que convierte el flujo de "chatbot simpatico" en herramienta operativa. Sin validacion, una IA puede prometer cosas que el restaurante no puede cumplir.
Creacion de reserva
Cuando los datos son correctos y existe capacidad, el sistema crea el evento en Google Calendar. La reserva queda registrada con:
- nombre del cliente,
- telefono,
- email,
- dia,
- hora,
- numero de personas,
- estado,
- identificador del evento.
Despues devuelve una confirmacion por WhatsApp y envia la invitacion al email del cliente. Asi el restaurante no depende de una conversacion perdida en el chat: la reserva queda en el calendario que el equipo ya usa.
Cancelaciones por WhatsApp
Tambien implemente cancelacion de reservas activas. El cliente puede escribir que quiere cancelar, y el sistema busca reservas asociadas a su telefono. Si encuentra una reserva activa, cancela el evento en Calendar y actualiza el registro interno.
Esta parte es clave porque una automatizacion de reservas incompleta suele resolver solo la entrada, pero no la vida real. En la vida real la gente cambia planes, se equivoca o necesita cancelar.
Historial y contexto
El workflow guarda historial conversacional y reservas en SQLite interno. Esto ayuda a mantener contexto entre mensajes y a no tratar cada frase como si fuera una conversacion nueva.
Por ejemplo, si el usuario primero pregunta:
Hay mesa para 2 este viernes por la noche?
y despues responde:
Vale, a las 21:30.
el sistema necesita entender que esa segunda frase pertenece a la consulta anterior. El historial no esta para hacer la IA mas vistosa; esta para que el flujo sea util.
Por que n8n encaja aqui
Para este tipo de sistema, n8n encaja muy bien porque permite combinar piezas que ya existen:
- WhatsApp,
- IA,
- Google Calendar,
- email,
- base de datos ligera,
- reglas de negocio,
- respuestas automatizadas.
Podria haberse hecho como backend custom desde cero, pero en una primera version comercial n8n permite iterar mas rapido, ver cada ejecucion, depurar nodos concretos y ajustar reglas sin redeplegar una aplicacion completa.
La clave no es usar n8n como una cadena de nodos sin criterio. La clave es disenar el flujo como un sistema: entradas limpias, estados claros, validaciones antes de acciones, salidas previsibles y escalado humano cuando toca.
Que aprendi construyendolo
Este proyecto me reforzo varias ideas sobre automatizacion con IA:
- La IA debe interpretar, no decidirlo todo. Las decisiones importantes pasan por reglas explicitas: horarios, capacidad, campos obligatorios y condiciones de escalado.
- Una reserva es una operacion transaccional. No basta con responder bien; hay que registrar, confirmar y poder deshacer.
- El canal importa. WhatsApp es natural para el cliente, pero el negocio necesita datos estructurados al final.
- La automatizacion buena sabe pedir datos. Si falta informacion, pregunta de forma concreta.
- El humano sigue siendo parte del sistema. Grupos grandes, casos raros o peticiones ambiguas se deben derivar.
Mejoras futuras
Si lo evolucionara como producto mas completo, anadiria:
- panel visual para configurar horarios y capacidad sin tocar el workflow,
- lista de espera automatica,
- confirmacion previa unas horas antes de la reserva,
- deteccion de no-shows,
- integracion con CRM o base de datos de clientes,
- analitica de demanda por dia y franja,
- multiidioma,
- version web embebible conectada al mismo calendario.
La base ya esta preparada para eso porque el sistema separa conversacion, reglas, calendario, persistencia y notificaciones.
Conclusion
Este sistema de reservas resume bastante bien como entiendo NexaVision AI: no se trata de poner un chatbot encima de un negocio, sino de convertir conversaciones reales en procesos fiables.
Para un restaurante, eso significa menos mensajes manuales, menos errores de agenda, confirmaciones mas claras y una experiencia mas comoda para el cliente. Para mi, como desarrollador, fue un buen ejercicio de arquitectura aplicada: IA donde aporta valor, reglas donde hace falta precision y automatizacion solo cuando el resultado se puede verificar.