Sección obligatoria
Para el jurado
Transparencia técnica de 18:59 — PWA de planes de resiliencia familiar desde Portoviejo. Producción: 18-59.grisbope.com.
Guion demo (≈3 minutos)
- Abre /auth → Entrar como demo (jurado).
- En /plan: tablero → plantilla o dirección → fotos → crear plan. También prueba /portoparques (eventos en parques).
- Con plantilla verás el perfil de riesgo; con dirección solo la ubicación (sin gemelo inventado).
- Perfil del hogar → fotos exterior + interior → Generar plan de acción.
- Compartir con comunidad → el % del sector sube en el tablero.
- DevTools Offline → plan cacheado (razón de ser PWA).
Auth: Admin API auto-confirm · login · demo@18-59.grisbope.com
Tecnologías OpenAI usadas
GPT (texto)
Genera el plan de resiliencia familiar en lenguaje simple, citando fuentes del corpus RAG (informes post-16A y SNGR).
GPT-4o Vision
Analiza fotos exterior/interior (+ entorno opcional) y explica señales visibles de vulnerabilidad vs patrones post-16A.
Text-to-Speech (OpenAI)
Lee el plan en voz alta (accesibilidad / barreras digitales).
Embeddings + RAG
Recupera fragmentos de informes de Portoviejo y lineamientos oficiales antes de escribir el plan.
Agents SDK (orquestación)
Encadena: ubicación (plantilla o dirección) + perfil + fotos → Vision → RAG → plan → documento → Supabase → tablero.
Codex
Scaffolding de la PWA, APIs, componentes y despliegue en VPS durante el desarrollo.
Infraestructura / arquitectura
┌─────────────────────────────────────────────────────────┐
│ PWA Next.js 15 + Workbox · https://18-59.grisbope.com │
│ Comunidad · Ubicación (plantilla | dirección) · Fotos │
│ Vision → Plan → TTS → Tablero │
└───────────────┬──────────────────────────┬──────────────┘
│ │
▼ ▼
┌──────────────────────────┐ ┌──────────────────────────┐
│ Agente OpenAI │ │ Supabase │
│ Vision · GPT · TTS · RAG │ │ Auth · Storage agregados │
└───────────────┬──────────┘ └──────────────────────────┘
▼
┌──────────────────────────┐
│ Corpus Portoviejo + SNGR │
└──────────────────────────┘
Hosting: VPS DigitalOcean (159.65.234.56)
EasyPanel + Docker Swarm + Traefik + Let's Encrypt
Deploy: push a main → auto-pull cada 2 min (deploy/auto-pull.sh)
NO usamos Vercel en producción
Offline: Service Worker + Cache API + localStorage del plan- Producción: https://18-59.grisbope.com
- Health: /api/health
- Repo: github.com/grisbope/18-59
Flujo de usuario
- Landing / instalar PWA → CTA o Auth demo.
- Tablero comunitario arriba (métrica en vivo).
- Ubicación: plantilla (carga perfil de riesgo) o mi dirección (sin gemelo digital).
- Perfil del hogar + fotos (exterior/interior obligatorias).
- Un botón: Vision → plan RAG+GPT con citas limpias.
- Descargar / offline / compartir → % comunitario sube.
Demo: /plan · /auth · /api/health
Checklist de rúbrica
- ODS principal declarado: ODS 11 (con ODS 13)
- Problema validado con datos reales del 16A / informes de vulnerabilidad
- Prototipo funcional E2E en producción (VPS): ubicación → fotos → plan → comunidad → offline
- Código en repositorio accesible (GitHub)
- Uso obligatorio de herramientas OpenAI documentado
- Privacidad: solo agregados por sector; fotos/ubicación no individuales en tablero
- Citación de fuentes en decisiones de seguridad (texto limpio, sin markdown crudo)
- Auth Supabase: registro + login + cuenta demo jurado
- Hosting en VPS propio (EasyPanel + Traefik + Docker Swarm), no Vercel
Objetivos / métricas
- Principal: % hogares con plan documentado (tablero — /comunidad).
- Secundaria: tiempo hasta instrucciones adaptadas (agente + TTS).
Escalabilidad — plantilla territorial
Las capas de riesgo (`src/data/buildings.json`) y el corpus (`src/data/corpus/`) se reemplazan para otra ciudad sin reescribir la app. Roadmap: más fuentes municipales y API pública de perfiles de riesgo.
README: github.com/grisbope/18-59