El despertar (F0)
LUMO dormita y despierta con sorpresa alegre al detectar presencia. Nadie se acerca a una pantalla muerta; el despertar ES la invitación.
Color Ads · LUMO · Mapa de procesos
Cada etapa de la interacción huésped–robot: qué ve el huésped, qué actúa LUMO, qué pasa detrás y a dónde va cada fallo. Auditado por tres lentes adversariales (UX de kioscos, confiabilidad 24/7 y 20 años de recepción hotelera). Esta página es la especificación del software: cada estado del mapa es hoy un estado de la máquina que ya corre — la misma copia en la nube y en el simulador público.
Diagrama maestro
El hallazgo mayor de la auditoría: el pago —la espera más larga— no va al final sino en paralelo: el QR aparece al confirmar la reserva y el huésped paga desde su celular mientras el kiosco procesa documento y rostro. El cargo solo se captura cuando la identidad pasa. El kiosco baja de ~90 a ~75 segundos — el primer check-in real, cronómetro en mano, cerró en 59 — y la espera percibida del pago es cero.
Fase por fase
| Fase | El huésped ve / LUMO actúa | Detrás (orquestador) | Si falla → |
|---|---|---|---|
| F0 Reposo | Ojos de LUMO dormitando; despierta con sorpresa al detectar presencia. “Toca la pantalla o acerca tu código QR”. | Lector QR activo (salta directo a F2 con la reserva); health-check de periféricos cada 5 min; telemetría. | Periférico caído → el flujo lo esquiva (modo degradado) + ticket automático a mantenimiento. |
| F1 Bienvenida · 0–8 s | Una sola CTA dominante “Hacer check-in”; secundarios: “No tengo reserva”, “Perdí mi llave”, concierge IA, ayuda. Toggle ES/EN persistente; todo audio con subtítulo. | Modo asistido disponible (“prefiero que me ayuden”); protocolo nocturno 22–06 (menos reintentos, escala rápido). | Walk-in → muestra disponibilidad de Cloudbeds y deriva a WhatsApp de recepción para crear la reserva. |
| F2 Reserva · 8–22 s | Un solo campo que entiende lo que escribas: correo, teléfono, apellido o código de reserva — el sistema detecta solo de qué se trata (las OTAs enmascaran el correo, así que apellido y código rescatan esas reservas); teclado con modos ABC/123/@; homónimos → desambiguación enmascarada. Reserva con varias habitaciones, o varias reservas que comparten credencial → tablero de grupo: cada llegada toca una habitación libre (“Tomada · M*** · hace 20 min”) y recibe SU llave única. Resumen y consentimiento en UNA frase humana que incluye biometría. | Búsqueda directa sobre los huéspedes de Cloudbeds (~320 ms) y detalle de la reserva solo cuando hace falta → el lookup responde en menos de 1 s; caché local de llegadas del día; mapeo de códigos OTA; al confirmar → dispara P1 (QR de pago) si hay saldo. | Cloudbeds caído → caché; reserva cancelada por OTA → “venta por rescatar”: humano en un toque, nunca “no existe”. Dos personas tocan la misma habitación del tablero a la vez → exactamente una gana y la otra ve el tablero al día con un mensaje amable — jamás pantalla de error. |
| P Pago en paralelo | Al confirmar la reserva, el orquestador ordena el cobro al datáfono Bold (API self-serve): el huésped tapea tarjeta o teléfono cuando esté listo — o paga en su celular vía QR/tag NFC — MIENTRAS el kiosco sigue con documento y rostro. Wifi del lobby visible antes del QR. | Bold: POST app-checkout a la terminal + webhook de confirmación. Stripe/QR: Checkout Session única por folio (idempotente, expira 15 min) + polling de respaldo. Captura/liberación de llave solo tras identidad OK. Timeout del kiosco SUSPENDIDO con pago activo. | Declinada ×2 → causas típicas + otra tarjeta; “ya pagué por transferencia” → foto del comprobante a recepción; efectivo/noche → PIN de cortesía restringido. |
| F3 Documento · 22–40 s | ¿Pasaporte o cédula? (dos imágenes, un toque) → animación específica; la mirada de LUMO baja al lector. Titular: su documento debe coincidir con la reserva, sin excepciones. Acompañante de grupo que ya tocó su habitación en el tablero: escanea SU documento, pasa y queda registrado (sus datos se borran en el reset — regla de privacidad). Los demás acompañantes por link de WhatsApp; menores con formulario corto. | KR160 lee MRZ/PDF417 (timeout 5 s ×3); match difuso vs reserva — estricto para el titular, flexible SOLO en llegadas de tablero de grupo; rama “reserva a nombre de otro” → huésped adicional + aprobación remota. | 3 fallos o documento sin banda (PPT, cédula vieja) → modo manual: foto del doc + datos mínimos + aprobación de recepción. Menor solo → SIEMPRE humano (ley). |
| F4 Rostro · 40–50 s | Selfie con auto-encuadre (“ubícate en el óvalo”); LUMO cierra los ojos: “no miro mientras pasa la magia”. Mientras Didit piensa: confirma/corrige tu celular (tiempo muerto aprovechado). | Didit: autenticidad + face match + liveness (timeout 15 s ×2). Controles táctiles en los 2/3 inferiores (silla de ruedas). | Falso rechazo → 1 reintento con coaching (“quítate las gafas”); 2º → aprobación remota de recepción, jamás tono acusatorio. |
| F5 Llave · 50–65 s | La ruta no la decide la reserva: la decide el TIPO de propiedad, elegido al crearla. SHORT RENTAL: PIN de 6 dígitos en GRANDE en pantalla + WhatsApp de respaldo (nunca canal único). HOTEL: LUMO “empuja” la tarjeta con esfuerzo cómico y la entrega con orgullo. | Verifica housekeeping ANTES de emitir; el guard vive en el motor y es simétrico: sin UID verificado no hay tarjeta, sin PIN no hay entrega. PIN por algoritmo offline (no depende del gateway); tarjeta: encodear → leer UID → activar vía API → verificar → SOLO entonces entregar. Validez = checkout + 2 h de gracia. | Habitación no lista → llave diferida SEGÚN el tipo: hotel, “te avisamos por WhatsApp y tu tarjeta te espera” (viaja el aviso, jamás la llave física); short rental, el código llega por WhatsApp y también aparece en pantalla. Atasco/sin tarjetas → PIN automático + alerta (<10 tarjetas avisa antes). |
| F6 Cierre · 65–75 s | Indicaciones con la mirada de LUMO apuntando al ascensor real; WhatsApp con clave + wifi + mini-mapa + recibo; impreso opcional (respaldo de TODO para quien no tiene datos). Reverencia de botones. | Marca check-in en Cloudbeds (cola idempotente — el huésped nunca espera escrituras); notifica a recepción; encola TRA automático y SIRE para extranjeros (job con dashboard de fallidos). | WhatsApp no entrega → pantalla + papel ya lo cubrieron (nunca canal único); factura DIAN → captura NIT y encola al back-office. |
| F7 Reset | Despedida por nombre. Pantalla limpia. | Borra todo dato personal de pantalla y memoria; telemetría del caso (duración por paso); máquina de estados persistida (write-ahead) → un corte de luz jamás deja un estado a medias. | Pago que llega tras el reset → el orquestador TERMINA el check-in solo y envía la llave por WhatsApp; “retomar mi check-in” recupera la sesión 15 min. |
Momentos de personalidad
LUMO dormita y despierta con sorpresa alegre al detectar presencia. Nadie se acerca a una pantalla muerta; el despertar ES la invitación.
Los ojos bajan físicamente hacia el lector: el gaze del personaje dirige la mano mejor que cualquier flecha.
Durante la verificación, LUMO cierra los ojos con teatralidad y celebra el resultado con “¡eres tú!”. Jamás comenta el proceso biométrico.
Mientras el banco piensa: dato útil primero (desayuno, clima), gag después (reloj imaginario, tararea). Nunca countdown ni presión.
LUMO “empuja” la tarjeta con esfuerzo cómico sincronizado con el motor, y trata el PIN como un secreto (“shhh”, mirando a los lados).
En todo fallo, LUMO absorbe la culpa con ojos de cachorro y ofrece el humano en positivo: “esta no me salió; ya le avisé a alguien que sí sabe”.
Matriz de casos · fallos técnicos
| Caso | Fase | Resolución | Prioridad |
|---|---|---|---|
| Lector no lee el documento | F3 | Coaching en ámbar por intento (×3, 5 s c/u) → modo manual: foto del doc + datos mínimos + aprobación remota. | MVP |
| Didit caído / timeout | F4 | 15 s ×2 con backoff → guarda doc+selfie cifrados, verificación diferida, continúa con marca “identidad pendiente”. | MVP |
| Cámara o lector muertos | F3/F4 | Health-check al boot y cada 5 min; re-init ×2; si persiste, el flujo esquiva el paso (modo manual / sin selfie) + ticket automático. | MVP |
| Webhook de Stripe no llega | P | Nunca depender solo del webhook: polling cada 4 s ×120 s + botón “ya pagué” que fuerza consulta. | MVP |
| Pago duplicado | P | Una sola sesión viva por folio (idempotency key); QR nuevo expira el anterior; duplicado detectado → reembolso. | MVP |
| Dispensador atascado / sin tarjetas | F5 | 1 reintento → modo “sin dispensación” con PIN automático; alerta proactiva con <10 tarjetas; bin de rechazo monitoreado. | MVP |
| Activación de tarjeta falla | F5 | Regla de oro: la tarjeta NO sale sin activación verificada; si falla ×2 se captura al bin — jamás entregar una tarjeta muerta. | MVP |
| Gateway TTLock offline | F5 | No es fallo: el PIN se calcula offline por diseño. El gateway es solo auditoría/revocación. | MVP |
| Corte de luz a mitad de flujo | Transv. | Máquina de estados write-ahead en disco; al volver, pantalla SIEMPRE en F0 (sin datos personales); casos a medias se concilian y terminan por WhatsApp. | MVP |
| Internet caído total | Transv. | Banner ámbar honesto + recepción; cola persistente de operaciones; failover LTE (fase 2: check-in degradado con caché + PIN offline). | MVP |
| Chromium congelado | Transv. | Watchdog doble (systemd + heartbeat cada 5 s); relanzo en <10 s a F0 con limpieza de memoria. | MVP |
| Reloj desincronizado (rompe PIN offline) | F5 | NTP multi-fuente + RTC; deriva >60 s → deja de emitir PINs (peor fallo silencioso posible) y fuerza tarjeta/recepción. | FASE 2 |
Matriz de casos · realidad hotelera
| Caso | Fase | Resolución | Prioridad |
|---|---|---|---|
| Walk-in sin reserva | F1 | Muestra disponibilidad y tarifa del día; deriva a WhatsApp de recepción para crear la reserva. Nunca “no te encuentro”. | MVP |
| Llega temprano, habitación no lista | F5 | Completa documento+rostro+pago; la llave llega sola por WhatsApp cuando housekeeping marca lista la unidad. | MVP |
| Familia / grupo / menores | F3 | Solo el titular en el kiosco; acompañantes por link WhatsApp (plazo 22:00); menores con formulario corto (registro civil no tiene PDF417). TRA exige a TODOS. | MVP |
| Reserva a nombre de otro (OTA, empresa, cónyuge) | F3 | Rama explícita: registra al presente como huésped adicional + validación de posesión (QR email / últimos 4 dígitos) + aprobación remota. | MVP |
| Menor de edad solo | F3 | Bloqueo del auto check-in y escalada SIEMPRE a humano (Leyes 679/2001 y 1336/2009). | MVP |
| Extranjero sin SIM/datos | P/F5 | Wifi del lobby ANTES del QR de pago; todo lo digital se puede imprimir; link de pago por email como alternativa. | MVP |
| Adulto mayor / no maneja QR | Transv. | Modo asistido con voz paso a paso; camino completo sin QR (recepción + PIN impreso); 2 tropiezos seguidos → LUMO ofrece humano proactivamente. | MVP |
| Huésped alterado a las 2 a.m. | Transv. | Protocolo nocturno: 1 reintento, mensajes cortos y calmados, escalada rápida al de guardia con foto de cámara. | MVP |
| Quiere pagar en efectivo | P | Día: turno impreso + aviso al staff. Noche: Nequi/Daviplata con comprobante verificado remoto, o PIN de cortesía y regulariza en la mañana. | MVP |
| “Ya pagué por transferencia” | P | Botón “ya pagué”: foto del comprobante → aprobación remota en un toque libera la llave sin repetir pasos. | MVP |
| Perdió la tarjeta / olvidó el PIN | F1 | Flujo “perdí mi llave”: re-escanea documento + face match contra la selfie del check-in → re-emite invalidando la anterior. Sin identidad, jamás. | MVP |
| Llave expira con el huésped adentro | F5 | Validez = checkout + 2 h de gracia; aviso WhatsApp 1 h antes; extensión remota desde recepción. | MVP |
| TRA / SIRE (obligatorios) | F6 | Job automático post check-in (llegada Y salida); dashboard de pendientes/fallidos con alerta al administrador. El responsable es el software, no la memoria de nadie. | MVP |
| PIN de cortesía (definido) | Transv. | Solo con reserva verificada Y pagada/garantía OTA; restringido a la unidad; expira 10:00; notifica al encargado con foto; caso “por regularizar”. | MVP |
| Pre-check-in por WhatsApp (grupos/filas) | F2 | Documentos y acompañantes cargados antes de llegar: el kiosco queda en rostro+pago+llave (<40 s). | FASE 2 |
| Depósito de garantía | P | Pre-autorización (hold) de Stripe con liberación automática al checkout; monto retenido con claridad total. | FASE 2 |
| Extensión de estadía / late checkout | Post | Cotiza y cobra por link + extiende reserva y llave automáticamente. Ingreso incremental que hoy se pierde. | FASE 2 |
| Check-out en kiosco | F1 | Marca salida, avisa a housekeeping, invalida llave, buzón de tarjetas, estado de cuenta, TRA/SIRE de salida. | FASE 2 |
| Rechaza la biometría (derecho legal) | F4 | Casilla separada para biometría; si la rechaza → verificación humana remota antes de la llave. No se pierde el check-in. | FASE 2 |
| Overbooking / doble asignación | F5 | Regla dura pre-llave: unidad libre+limpia+sin otra reserva in-house; conflicto → prioridad máxima a humano. La reubicación la decide una persona. | FASE 2 |
| Tercero pide llave (“soy la esposa”) | F5 | Sin documento y rostro registrados no hay llave, punto. Solo “le avisamos al huésped” para que autorice. | RARO |
| Emergencia en el lobby | Transv. | Botón Emergencia: línea 123 en grande + alerta al de guardia con clip de cámara. LUMO conecta, no resuelve. | RARO |
De aquí salió el código: cada fase es un estado de la máquina del orquestador, cada celda “si falla” es una transición, y cada momento de personalidad es un evento hacia la app de la tablet. Ese motor ya respira en producción — una sola copia, la misma en la nube y en el simulador — con la telemetría contando cada paso desde el primer check-in.