Tramo
Asistente de código abierto que compara el programa analítico de una materia aprobada con el de la materia que se quiere reconocer y redacta un borrador del informe de equivalencia para el docente. Gemma 4, un modelo de pesos abiertos que corre en la misma computadora a través de Ollama, extrae los temas de ambos programas, evalúa cada tema de destino con evidencia y justifica cada decisión, mientras el código calcula la cobertura y aplica la regla del 50 por ciento del reglamento. El docente puede corregir cualquier tema antes de firmar y ningún documento sale del equipo. Presentado en el Hacktoberfest Open Source AI Challenge de DEV, donde está contada la historia completa del proyecto.

Métricas
- Modelo
- Gemma 4
- Documentos enviados a internet
- 0
- Tiempo por análisis
- ~1,5 min
- Pruebas automatizadas
- 119
- Regla de equivalencia
- 50% art. 87
- Desafío
- Hacktoberfest DEV 2026
El problema
Cuando un estudiante cambia de carrera o de universidad, el reconocimiento de las materias que ya aprobó puede tardar meses. Un docente tiene que leer dos programas analíticos extensos a la par, decidir tema por tema qué contenido ya está cubierto, contrastar el resultado con el porcentaje que exige el reglamento y escribir qué temas faltan rendir. Es un trabajo repetitivo, difícil de auditar después y que demora a estudiantes que ya estudiaron esos contenidos.
La solución
Tramo recibe los dos programas como texto, PDF o Word y los analiza en cuatro etapas. Gemma 4 extrae los temas de cada programa con salidas estructuradas validadas por un esquema, evalúa cada tema de destino contra el programa de origen completo citando hasta cinco temas como evidencia, y redacta una recomendación a partir de datos que el código ya calculó. La cobertura y la regla del 50 por ciento se resuelven en Python con pruebas, de modo que ningún texto puede alterar el veredicto. El progreso se transmite en vivo al navegador, el docente puede corregir cualquier estado y los números se recalculan al instante. Todo corre en local, sin claves ni servicios externos.
Stack técnico
- Frontend
- HTML · CSS · JavaScript · ES Modules
- Backend
- Python · FastAPI · Pydantic · Ollama · Gemma 4
Desafíos
Detectar que con el modo de razonamiento activado el modelo ignoraba el esquema JSON y devolvía texto libre, y desactivarlo para recuperar las salidas estructuradas, lo que además bajó el análisis de cinco minutos y medio a uno y medio
Reemplazar una primera versión basada en reglas que llegó a proponer como temas a rendir los nombres de los profesores y la carga horaria, por una extracción con el modelo y un respaldo visible cuando la respuesta no valida
Aceptar que el mismo par de programas daba coberturas entre 24 y 32 por ciento en distintas corridas, y diseñar el informe para que cada tema muestre su razonamiento y el docente pueda corregirlo
Tratar cada archivo como hostil, rechazando PDF con scripts o adjuntos y documentos Word con macros, rutas manipuladas o tamaño expandido anormal, y advertir en el informe cuando un texto intenta dar instrucciones al modelo
Transmitir el progreso real del análisis al navegador con eventos JSON delimitados por línea, para que el porcentaje en pantalla refleje trabajo completado y no un temporizador
Aprendizajes
Que el modelo proponga y el código decida es la regla que vuelve confiable a una herramienta que asiste decisiones administrativas
Una salida estructurada solo es útil si se valida, cada tema debe evaluarse una vez y cada fuente citada tiene que existir
Correr un modelo de pesos abiertos en local convierte la privacidad en una propiedad de la arquitectura y no en una promesa
Medir antes de optimizar ahorra días, un benchmark simple mostró que el problema de velocidad venía de una sola opción del modelo
En herramientas que afectan a personas, explicar los límites y quién decide forma parte del producto tanto como las funciones