8.7 KiB
Guion de presentación — 5 a 7 minutos
Script para el pitch del hackathon. Cubre los puntos clave que los jueces evalúan.
⏱️ Distribución del tiempo
| Sección | Duración | Objetivo |
|---|---|---|
| 1. Problema | 30s | Sembrar el dolor del usuario |
| 2. Solución | 30s | Decir qué construimos |
| 3. Demo ciudadano | 2 min | Mostrar el flujo principal |
| 4. Demo empleado | 1 min | RBAC + motivación |
| 5. Demo admin | 1 min | Gestión y métricas |
| 6. Arquitectura técnica | 1 min | Convencer en lo técnico |
| 7. Privacy by Design | 30s | Punto innegociable del reto |
| 8. Cierre | 30s | Llamado a la acción |
🎬 Guion completo
1. Problema (30 segundos)
"En Celaya, todos hemos sacado la basura demasiado temprano… o demasiado tarde. La basura termina en la calle, atrae fauna nociva, y los vecinos se molestan. La solución obvia sería ponerle un GPS al camión, pero eso es peligroso: la gente lo persigue, expone información operativa, y rompe la privacidad."
Mostrar imagen o slide con el problema.
2. Solución (30 segundos)
"Mi Ruta Limpia: una app que te dice cuándo viene el camión a tu casa, sin nunca mostrarte dónde está. Privacy by Design, multiplataforma, con folio oficial en cada reporte, y tres vistas: ciudadano, empleado operativo y administrador."
Mostrar la pantalla principal en el simulador.
3. Demo CIUDADANO (2 minutos)
Login:
- "Entro como
demo@celaya.gob.mx."
Inicio:
- "Esta es mi pantalla principal. Veo mi domicilio asignado a la RUTA-01 (Zona Centro), y el camión llegará entre las 7:20 y 7:35. Si me faltan menos de 30 minutos, me muestra los minutos exactos."
- "Atrás de esta sencilla pantalla hay un cálculo geo-espacial: cuando registro mi domicilio, el backend usa distancia Haversine para asignarme automáticamente la ruta más cercana."
- "Importante: NO veo dónde está el camión. Solo veo MI ventana horaria. Esto es privacy by design real."
Confirmar ya pasó:
- "Cuando el camión pasa, confirmo con esta calificación. La tarjeta se pone verde. Si me equivoqué, tengo un botón de deshacer."
Educación:
- "Toco la hojita y entro a la sección educativa: 4 categorías de residuos, datos de impacto, puntos de acopio reales en Celaya y un FAQ extenso. Cada categoría tiene un modal con qué SÍ y qué NO va, y un dato de impacto."
Reportes:
- "Si el camión no pasó, levanto un reporte. Recibo un folio oficial tipo
MRL-20260523-A4B5C6y puedo compartirlo por WhatsApp, correo, o lo que sea — porque es mi comprobante."
4. Demo EMPLEADO (1 minuto)
Logout y login como empleado:
- "Cierro sesión y entro como empleado:
empleado@celaya.gob.mx. El navegador cambia: ahora solo tengo 3 pestañas."
Dashboard del empleado:
- "Esta es la vista del operador del camión. Aquí está el corazón motivacional: mi racha de puntualidad — 19 días seguidos. Mi bono acumulado — $950 MXN. Me faltan 11 días para desbloquear el siguiente bono de $500."
- "También veo mi horario con descansos preestablecidos: 5 min de estiramiento a las 8 AM. Esto es bienestar laboral integrado."
- "Y arriba hay una frase motivacional que rota cada día: 'Tu puntualidad permite que miles de familias planifiquen su día.'"
Reportes operativos:
- "Si algo pasa en mi turno — falla mecánica, accidente, tráfico — lo reporto. Tengo 8 categorías con iconos. Esto le permite al equipo central reaccionar inmediatamente."
RBAC en acción:
- "Y muy importante: el empleado NO puede ver los reportes ciudadanos. Está en su pantalla de Cuenta: hay permisos en gris bloqueados. Si intento llamar a
/admin/reportsdesde mi token de empleado, el backend responde 403 Forbidden."
5. Demo ADMIN (1 minuto)
Login admin:
- "Cierro sesión, entro como admin:
admin@celaya.gob.mx. Ahora tengo 4 pestañas."
Dashboard:
- "KPIs en vivo de toda la ciudad: 185 ciudadanos activos, 302 domicilios, 280 reportes totales, 8 en las últimas 24h, calificación promedio 4.07/5."
- "Gráficas por estado y por tipo de reporte. Veo de un vistazo que hay 84 pendientes."
Gestión de reportes:
- "Aquí veo TODOS los reportes ciudadanos de la ciudad. Filtro por estado. Puedo cambiar el estado con un botón: PENDIENTE → EN_PROCESO → RESUELTO. Esto cierra el loop con el ciudadano, que ve la actualización en su app."
Gestión de usuarios:
- "Y solo el admin puede ver esta pestaña: 202 usuarios, filtrables por rol. Puedo promover a alguien a empleado o demovrer si es necesario."
6. Arquitectura técnica (1 minuto)
"Backend en FastAPI con SQLAlchemy. JWT con RBAC de 3 niveles. SQLite para el hackathon, pero migración a PostgreSQL es trivial."
"Frontend en React Native con Expo, multiplataforma — corre en iOS, Android y Web con un solo código."
"La simulación de eventos es elegante: no usamos cron jobs ni websockets. Los timestamps del JSON son templates que se reinterpretan cada día, y el ETA se calcula on-demand con interpolación temporal. Cero infraestructura, máxima escalabilidad."
"Tenemos 28 endpoints REST documentados en OpenAPI."
(Opcional: mostrar localhost:8000/docs con Swagger)
7. Privacy by Design (30 segundos)
"El reto fue tajante: PROHIBIDO el seguidor activo, PROHIBIDO el snooping. Lo cumplimos así:"
"Primero, el endpoint
/eta/address/:idnunca devuelve coordenadas del camión. Solo: status, mensaje, ventana, progreso porcentual."
"Segundo, el backend valida en cada petición que el
address_idpertenezca al usuario autenticado. Si intento consultar el domicilio de otro, 404."
"Tercero, la interfaz tiene mensajes preventivos: 'Por tu seguridad, no persigas al camión'."
"Privacy by Design no es un slogan, es nuestra arquitectura."
8. Cierre (30 segundos)
"Mi Ruta Limpia es: una app que resuelve el problema real del ciudadano sin romper la privacidad."
"Tiene arquitectura productiva lista para escalar."
"Da dignidad al trabajador con motivación y bonos, no solo control."
"Y le da al gobierno datos accionables para gestionar la ciudad."
"Es lo que Celaya necesita. Gracias."
🎯 Posibles preguntas de los jueces
"¿Cómo escalan a 50,000 usuarios?"
- Cambiar SQLite por PostgreSQL (solo cambia
DATABASE_URL) - Containerizar con Docker, desplegar en AWS ECS / Cloud Run
- Cache con Redis para
/eta/*(ya está stateless) - Notificaciones via Firebase Cloud Messaging (esquema
push_tokenya en User) - CDN para el bundle de Expo Web
"¿Cómo manejan días festivos?"
- El simulador permite ajustar las rutas por fecha
- Endpoint admin podría exponer
/admin/holidayspara excluir días - La notificación push avisaría al ciudadano
"¿Cómo validan que la ruta es la correcta para mi casa?"
- El algoritmo
assign_routeusa Haversine con O(120) waypoints; en producción se usaría PostGIS con polígonos reales de zonas de cobertura
"¿Y si tengo Android?"
- React Native + Expo compila a iOS, Android y Web con un solo código
- La demo es en iOS pero funciona idéntico en Android
"¿OAuth real?"
- El endpoint
/auth/oauthya recibe datos del provider; falta integrar el SDK del cliente. Es 1-2 horas de trabajo.
"¿Por qué SQLite y no Postgres?"
- Hackathon: zero-config, portable. Para producción, cambio trivial.
"¿La simulación es real?"
- Es un mock realista que cumple el requisito del reto. En producción se reemplaza el
eta_service.get_eta()para leer de una tabla de telemetría real, sin cambiar nada del cliente.
"¿Mostraron el código?"
- Todo el código está en estructura limpia: 27 archivos backend, 22 archivos frontend src, todo en GitHub (o donde lo tengas).
📝 Notas para el presentador
Antes de iniciar:
- Verifica que backend y frontend estén corriendo
- Cierra cualquier app que muestre notificaciones en pantalla
- Limpia las pestañas de Safari/Chrome (que no se vea historial sensible)
- Pon el simulador en modo de "Demo" si quieres ocultar status bar
Durante la demo:
- No tartamudees: si no sabes algo, di "buena pregunta, eso lo cubrimos en la documentación técnica"
- Mira a los jueces, no al simulador
- Habla en futuro presente: "esta app permite", no "esta app permitirá"
- Energía: convierte el problema en algo emocional ("todos hemos sacado la basura")
Si algo falla:
- "El simulador se está reiniciando, mientras tanto les muestro el código..."
- Ten capturas de pantalla en backup por si el simulador muere
- Ten el OpenAPI docs (
/docs) abierto en una pestaña como respaldo