Un Kahoot a medida, con la operación que el cliente realmente necesitaba.
Construimos una plataforma propia con dos roles: Participante (vista de juego) y Administrador (control central). El admin orquesta el evento en vivo desde un dashboard: activa cada pregunta cuando corresponde, ve la distribución de respuestas en tiempo real, muestra el ranking por sede en las pausas y dispara el sorteo final entre quienes obtuvieron 10/10.
Polling cada 2-4 segundos en lugar de WebSockets — y funcionó.
La decisión técnica más importante del proyecto fue NO usar WebSockets ni Ably. Para una trivia con preguntas de 60 segundos, una latencia de sincronización de 2-4 segundos es invisible para el usuario, y reduce drásticamente la complejidad operativa: cero infraestructura adicional, menos puntos de falla, costo cercano a cero, debugging trivial. Lo validamos con un load test de k6 simulando 1.000 usuarios concurrentes antes del evento.
UX pensada para evento corporativo real, no para una demo.
Tres decisiones de UX deliberadas: (1) Sin feedback inmediato — el participante no sabe si acertó hasta el final, evitando el abandono temprano que mata el engagement; (2) Entrada tardía permitida — quienes se conectan en la pregunta 5 pueden responder de la 1 a la 5 y sincronizarse, sin penalizar atrasos típicos de eventos corporativos; (3) Pregunta bonus para los que no llegaron a 10/10, manteniendo el juego activo hasta el final para todos.
Dos sets de preguntas, dos sesiones, mismo sistema.
El evento se hizo en dos turnos (mañana y tarde) con sets de preguntas distintos para evitar contaminación entre sesiones. El sistema soporta múltiples GameSession activas en paralelo, cada una con su questionSet (AM/PM) y su propio flujo de control, sin lógica especial.
El día del evento: lo que falló y lo que aprendí.
La sesión de la mañana no pudo partir: el firewall de la red bloqueó el acceso de los participantes a la plataforma. No había validado con anticipación que la red del cliente permitiera la conexión. Resuelto el acceso, la sesión de la tarde corrió con normalidad, con 600-700 personas conectadas y sin problemas de sincronización, y el admin manejó el evento completo desde un único panel.
El load test validó la capacidad, no la red.
La prueba con k6 confirmó que el sistema aguantaba la carga, pero se corrió desde fuera de la red de AIEP. Desde entonces, antes de cualquier evento en vivo hago una prueba de conexión desde la red real del cliente y reviso los accesos con su equipo de TI.