Skip to content

Latest commit

 

History

9 Commits

Folders and files

Repository files navigation

Copiloto SINEACE

App web (Next.js) que ayuda a entender y aplicar el nuevo Modelo de Acreditacion SINEACE 2025 para institutos y escuelas de educacion superior tecnologica (IEEST). Hackathon AIdea, problema (1): comprension y aplicacion del modelo.

Tres modos sobre un mismo motor de datos (Dimension -> Factor -> Estandar -> Aspectos -> Nivel):

  • Explicar — selecciona un estandar y pregunta en lenguaje natural. Claude responde llano y cita el modelo textualmente ("segun el modelo").
  • Estimar nivel — pega la evidencia real de tu programa. Claude estima No Logrado / Nivel 1 / 2 / 3 contra el patron HACER -> MEDIR -> MEJORAR y dice que falta para subir.
  • Scorecard — los 18 estandares por nivel, con el veredicto global min >= Nivel 1 y el cuello de botella resaltado.

Correr en local

npm install
npm run dev   # http://localhost:3002 (usa 3000 si esta libre)

No necesitas API key: la IA usa tu suscripcion de Claude via el CLI headless (claude -p), costo $0. Solo requiere haber hecho claude login una vez. Si prefieres respaldo por API, copia .env.example a .env y descomenta ANTHROPIC_API_KEY.

Arquitectura

  • Datos canonicos: data/modelo.json (18 estandares, enunciados verbatim, aspectos, rubrica de 4 niveles, regla de otorgamiento). Verificado contra research/modelo-acreditacion-2025.txt. Sin base de datos.
  • RAG por seleccion explicita, no embeddings: el usuario elige el estandar en el arbol; eso determina de forma determinista que chunk (enunciado + aspectos + rubrica) se inyecta en el prompt. Sin vector DB, sin ambiguedad de retrieval.
  • Cadena de proveedores de IA (lib/ai.ts, configurable via AI_PROVIDER_ORDER, por defecto cli,api,demo):
    1. cli — ejecuta claude -p (Claude Code headless) como proceso aparte, borrando ANTHROPIC_API_KEY/ANTHROPIC_AUTH_TOKEN del entorno del hijo para que use el login de tu suscripcion ($0). El contenido del usuario va por stdin (a prueba de inyeccion), el system prompt por --system-prompt, salida --output-format json. Modelo via CLAUDE_CLI_MODEL (sonnet por defecto).
    2. api — Anthropic API por token via salida estructurada (output_config.format + JSON Schema, lib/anthropic.ts), solo si hay ANTHROPIC_API_KEY.
    3. demo — texto fijo marcado como "demo". Cada respuesta incluye _provider y la UI muestra un badge (suscripcion · $0 / API / DEMO). Nota: el modo cli solo funciona donde existe el binario claude + tu login (local); en un deploy serverless caen los respaldos api/demo.
  • Anti-alucinacion: el system prompt (lib/prompts.ts) prohibe responder fuera del texto provisto y exige una cita verbatim, renderizada como blockquote "segun el modelo". Auditable en vivo ante los expertos SINEACE.
  • Scorecard: funcion pura lib/scorecard.ts (min(niveles) >= Nivel 1), sin LLM.
  • Estado: localStorage entre estimaciones (narrativa anti-rotacion de personal).
  • Fixtures de demo: data/demo-fixtures.json. La ruta /api/estimate detecta inputs de demo y devuelve salida determinista (el momento wow funciona aun sin wifi); todo lo demas usa la API en vivo.

Mapa de archivos

data/modelo.json          datos canonicos (18 estandares + rubrica)
data/glosario.json        definiciones de jerga (EFSRT, SGI, ...)
data/demo-fixtures.json   evidencias de demo -> salidas fijas
lib/modelo.ts             tipos + helpers (getEstandares, nivelIndex)
lib/scorecard.ts          veredicto puro (min >= Nivel 1 + cuello de botella)
lib/anthropic.ts          cliente Claude + helper de salida estructurada
lib/prompts.ts            system prompts (grounding + cita verbatim, sin em-dashes)
app/api/explain/route.ts  Explicar (Claude opus, estructurado)
app/api/estimate/route.ts Estimar nivel (Claude opus, estructurado + fixtures)
app/api/glossary/route.ts Glosario (lookup estatico)
components/                Tree, Workbench, Scorecard, ResultCard, Citation, LevelLadder, GoldenRuleBar
app/page.tsx              orquesta arbol + workbench + scorecard

Demo (3 minutos)

Programa: "Desarrollo de Sistemas de Informacion". Estandar estrella: 1.2 (mejora via SGI).

  1. Comprension — click en 1.2, Explicar: "que me pide el 1.2 y que documento subo?". Claude responde y resalta la cita del modelo.
  2. Aplicacion (wow) — Estimar nivel, pegar: "Tenemos un sistema que recopila tasas de aprobacion y permanencia cada ciclo y sacamos reportes." Devuelve Nivel 1 (no Nivel 2), confianza media, cita verbatim, y que falta para subir. (Fixture determinista.)
  3. Golpe estrategico — Scorecard: 17 celdas pintadas, 1 gris -> NO ACREDITABLE. "Sube ESTO, no pulas aquello."
  4. Cierre — mismo motor: semilla de evidencias (problema 3), monitoreo (problema 4) y lenguaje comun entre actores (problema 2).

Pendientes / nice-to-have

  • Wirear el glosario (hover sobre terminos subrayados) usando /api/glossary.
  • Deep-link por estandar en la URL (/?std=3.3) para compartir.
  • Upload de archivos (.pdf/.docx) en vez de solo pegar texto.
  • Validacion de los aspectos verbatim por los 3 expertos SINEACE (hora 1).
  • Confirmar la regla 7.1.a (innovacion) vs 7.1.b (investigacion) segun tipo de programa.

Plan completo: research/SOLUTION-PLAYBOOK.md. Modelo decodificado: research/01-model-brief.md. Analisis del dolor: research/02-pain-map.md.

Releases

Packages

Contributors

Languages