Qué vas a construir
Esta lección presenta el producto que se busca lograr: un recepcionista con IA que convierte una conversación natural de WhatsApp en una cita confirmada en Cal.com. Las siguientes lecciones construyen este recorrido desde el primer mensaje hasta el despliegue del webhook.
El cliente comienza con una solicitud normal en lugar de un comando:
Hola, necesito instalar una puerta de vidrio.
Luego, el recepcionista:
- Comprende que el cliente necesita una evaluación en el lugar.
- Recopila la dirección en Lima, el nombre, el correo electrónico y los detalles relevantes del servicio.
- Obtiene horarios disponibles para la cita en lugar de inventarlos.
- Se adapta cuando el cliente cambia del lunes al miércoles.
- Resume el servicio, la dirección, la fecha y la hora antes de pedir confirmación.
- Crea la cita en Cal.com solo después de que el cliente confirma.
Las palabras exactas del modelo pueden variar entre ejecuciones. Las reglas del negocio y los datos que devuelven los sistemas externos no deberían variar.
Sigue el sistema, no solo el chat
La conversación visible es el resultado de varios sistemas que trabajan en conjunto:
Cliente -> WhatsApp -> webhook de Kapso -> aplicación Hono
|
+-> historial de conversaciones en Neon
+-> modelo de IA y herramientas específicas
+-> disponibilidad y reservas de Cal.com
WhatsApp <- Kapso sendText <----+Cada componente tiene una responsabilidad como fuente de verdad:
| Aspecto | Fuente de verdad |
|---|---|
| Identidad del cliente | El webhook verificado de Kapso |
| Historial de la conversación | Neon |
| Intención expresada en lenguaje natural | El modelo |
| Horarios disponibles | Cal.com |
| Tipo de evento, zona horaria y credenciales | La configuración de la aplicación |
| Cita completada | La respuesta de la reserva de Cal.com |
Verifica el comportamiento final
Cuando reproduzcas la demostración completa, verifica los sistemas por separado:
- Todos los horarios ofrecidos existen en Cal.com.
- Pedir otro día devuelve un nuevo conjunto de horarios válidos.
- Seleccionar un horario todavía no crea una reserva.
- Una confirmación explícita crea exactamente una cita.
- La respuesta final de WhatsApp coincide con la reserva en Cal.com.
- La reserva contiene los detalles del servicio que necesita el técnico.
Usa datos sintéticos de clientes durante las pruebas. Una grabación de pantalla puede exponer números de teléfono, direcciones, correos electrónicos, identificadores de mensajes, enlaces de reservas y credenciales con la misma facilidad que el control de versiones.
Dónde aparece esto en el repositorio
En este video no se escribe código. El código fuente final envía la respuesta generada mediante la misma función de Kapso que se presenta en la siguiente lección:
const kapsoResponse = await kapso.messages.sendText({
phoneNumberId: process.env.KAPSO_PHONE_NUMBER_ID!,
to: userPhoneNumber,
body: aiResponse,
});Consulta la ruta de la respuesta final en index.ts.
Límites para producción
Este video demuestra la experiencia del producto, no todos los requisitos para producción. El repositorio final es una instantánea compacta para aprender y todavía necesita una revisión cuidadosa antes de manejar datos reales de clientes. En particular, el código de producción debe validar la estructura de los eventos, limitar cada actualización de la base de datos a un solo cliente, evitar duplicados cuando se reintentan webhooks y reservas, volver a comprobar la disponibilidad, evitar registros con demasiada información de identificación personal (PII) y definir el comportamiento para reintentos y derivaciones a una persona.
El resto del curso construye la experiencia completa, una capacidad verificable a la vez.