Color Ads · LUMO · Mapa de procesos

El check-in, de 0 a 100.

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

Ocho fases, el pago en paralelo, dos llaves

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.

F0 ReposoF1 Bienvenida F2 ReservaF3 Documento F4 RostroF5 Llave F6 CierreF7 Reset ojos + QR activo1 CTA · walk-in lookup + consentim.MRZ / PDF417 Didit 2–5 sPIN o tarjeta WhatsApp + mapalimpieza + telem. QR del email salta directo a F2 → P1 · datáfono o QRP2 · tapea o paga en celular al confirmar la reservawebhook · captura tras identidad PAGO EN PARALELO SHORT RENTAL: PIN TTLockHOTEL: tarjeta del dispensador offline · enmascarado + WhatsAppactivada ANTES de entregarse CARRIL ÁMBAR: cualquier fallo → LUMO asume la culpa → humano en un toque (recepción/WhatsApp) · nunca rojo · nunca callejón sin salida

Fase por fase

Qué ve, qué actúa, qué pasa detrás

FaseEl huésped ve / LUMO actúaDetrá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

Donde el personaje hace el trabajo

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.

La mirada que guía (F3)

Los ojos bajan físicamente hacia el lector: el gaze del personaje dirige la mano mejor que cualquier flecha.

“No miro, prometido” (F4)

Durante la verificación, LUMO cierra los ojos con teatralidad y celebra el resultado con “¡eres tú!”. Jamás comenta el proceso biométrico.

El mayordomo paciente (P)

Mientras el banco piensa: dato útil primero (desayuno, clima), gag después (reloj imaginario, tararea). Nunca countdown ni presión.

El clímax físico (F5)

LUMO “empuja” la tarjeta con esfuerzo cómico sincronizado con el motor, y trata el PIN como un secreto (“shhh”, mirando a los lados).

La culpa es mía (ámbar)

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

Cuando el fierro o la nube fallan

CasoFaseResoluciónPrioridad
Lector no lee el documentoF3Coaching en ámbar por intento (×3, 5 s c/u) → modo manual: foto del doc + datos mínimos + aprobación remota.MVP
Didit caído / timeoutF415 s ×2 con backoff → guarda doc+selfie cifrados, verificación diferida, continúa con marca “identidad pendiente”.MVP
Cámara o lector muertosF3/F4Health-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 llegaPNunca depender solo del webhook: polling cada 4 s ×120 s + botón “ya pagué” que fuerza consulta.MVP
Pago duplicadoPUna sola sesión viva por folio (idempotency key); QR nuevo expira el anterior; duplicado detectado → reembolso.MVP
Dispensador atascado / sin tarjetasF51 reintento → modo “sin dispensación” con PIN automático; alerta proactiva con <10 tarjetas; bin de rechazo monitoreado.MVP
Activación de tarjeta fallaF5Regla 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 offlineF5No 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 flujoTransv.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 totalTransv.Banner ámbar honesto + recepción; cola persistente de operaciones; failover LTE (fase 2: check-in degradado con caché + PIN offline).MVP
Chromium congeladoTransv.Watchdog doble (systemd + heartbeat cada 5 s); relanzo en <10 s a F0 con limpieza de memoria.MVP
Reloj desincronizado (rompe PIN offline)F5NTP 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

Los casos que la recepción conoce de memoria

CasoFaseResoluciónPrioridad
Walk-in sin reservaF1Muestra 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 listaF5Completa documento+rostro+pago; la llave llega sola por WhatsApp cuando housekeeping marca lista la unidad.MVP
Familia / grupo / menoresF3Solo 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)F3Rama 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 soloF3Bloqueo del auto check-in y escalada SIEMPRE a humano (Leyes 679/2001 y 1336/2009).MVP
Extranjero sin SIM/datosP/F5Wifi 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 QRTransv.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 efectivoPDí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”PBotón “ya pagué”: foto del comprobante → aprobación remota en un toque libera la llave sin repetir pasos.MVP
Perdió la tarjeta / olvidó el PINF1Flujo “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 adentroF5Validez = checkout + 2 h de gracia; aviso WhatsApp 1 h antes; extensión remota desde recepción.MVP
TRA / SIRE (obligatorios)F6Job 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)F2Documentos y acompañantes cargados antes de llegar: el kiosco queda en rostro+pago+llave (<40 s).FASE 2
Depósito de garantíaPPre-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 checkoutPostCotiza y cobra por link + extiende reserva y llave automáticamente. Ingreso incremental que hoy se pierde.FASE 2
Check-out en kioscoF1Marca 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)F4Casilla 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ónF5Regla 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”)F5Sin documento y rostro registrados no hay llave, punto. Solo “le avisamos al huésped” para que autorice.RARO
Emergencia en el lobbyTransv.Botón Emergencia: línea 123 en grande + alerta al de guardia con clip de cámara. LUMO conecta, no resuelve.RARO

Las reglas duras del sistema (no negociables en el código)

  • La tarjeta no sale sin activación verificada; el PIN no se muestra sin identidad verificada. Sin excepciones.
  • Máquina de estados persistida (write-ahead): ningún corte de luz deja un pago o una llave a medias; todo caso incompleto se concilia y termina solo.
  • WhatsApp es refuerzo, nunca canal único: pantalla + papel térmico respaldan todo dato crítico.
  • El timeout jamás mata un pago en vuelo; la inactividad se pausa con “dame un minuto” y presencia por cámara.
  • Errores en ámbar con humano a un toque — nunca rojo, nunca callejón sin salida, y LUMO siempre asume la culpa.
  • Todo se mide por paso (telemetría de duración y fallo) desde el primer día — el <75 s se gestiona, no se desea.
  • Los datos personales viven lo mínimo: limpieza en cada reset, disco cifrado, biometría solo en el proveedor certificado.
  • El claim de habitación es atómico: dos llegadas tocan la misma habitación del tablero en el mismo instante y exactamente una gana; la otra ve el tablero ya actualizado con un mensaje amable. Jamás una pantalla de error.
  • La ruta de llave pertenece al tipo de propiedad, no a la reserva: hotel → tarjeta física verificada antes de entregarse; short rental → PIN en pantalla con WhatsApp de respaldo. El guard vive en el motor, en las dos rutas.

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.