Proyecto de grado · UDABOL · 2026 · Código privado
AdvAI
Auditoría legal de contratos con IA y citas verificables.
Mi rol
Diseño, arquitectura y desarrollo fullstack (individual).
Stack
- Next.js 16
- React 19
- TypeScript
- Python
- FastAPI
- SQLite FTS5
- Ollama
- RAG
- SSE
- pytest
El problema
Revisar un contrato frente al Código Civil, el Código de Comercio y la jurisprudencia boliviana toma horas, y los LLMs "inventan" artículos. AdvAI separa el contrato en cláusulas y, para cada una, devuelve riesgo, análisis y citas literales verificables.
Lo destacado
- 01Búsqueda híbrida BM25 (SQLite FTS5) + embeddings bge-m3 fusionados por RRF sobre 3.267 artículos y 971 autos supremos: el acierto de recuperación (acierto@8) subió de 42,9 % a 80 %.
- 02El modelo solo elige claves de las fuentes mostradas y el texto citado lo inserta el sistema: 82,9 % de citas correctas y 94,6 % de cláusulas sin error grave en la evaluación interna.
- 03Anonimización de datos personales antes de enviar texto a la nube; LLM local (Ollama, qwen3.5 9B) y proveedores gratuitos con respaldo automático.
- 04Trabajador en segundo plano reanudable, progreso en vivo por SSE, comparación entre versiones e informe DOCX/PDF.
- 05Backend con 69 tests y cobertura ≥ 90 % exigida en CI; frontend en Next.js 16 + React 19 con visor PDF y cláusulas resaltadas por riesgo.
Lo que aprendí
- → 01Medir antes de optimizar: sin un set de evaluación habría seguido "ajustando prompts" a ciegas. Con métricas, cada cambio se volvió una decisión.
- → 02Un LLM no es una base de datos: la solución a las citas inventadas no fue un mejor prompt, fue una arquitectura donde el modelo no puede escribir la cita.
- → 03Privacidad por diseño: anonimizar antes de enviar texto a la nube cambió desde el esquema de datos hasta los prompts.
- → 04Diseñar para que falle bien: proveedores con respaldo y un trabajador que se reanuda tras un reinicio.
Artículos sobre este proyecto
- 24 de septiembre de 2026 · 5 min de lecturaProcesos largos con LLMs: varios proveedores, una cola que se reanuda y progreso en vivoAnalizar un contrato cláusula por cláusula puede tomar minutos. En AdvAI lo resolví con un pool de modelos que respeta los límites de cada proveedor, un trabajador que sobrevive a reinicios y Server-Sent Events para mostrar el avance.↗
- 22 de septiembre de 2026 · 5 min de lecturaAnonimizar un contrato antes de mandarlo a un LLM (sin otro LLM)En AdvAI ningún nombre, carnet ni NIT sale de la máquina: un anonimizador por reglas los cambia por marcadores estables y el sistema los restaura en la respuesta. Cómo funciona y por qué no usé IA para esto.↗
- 15 de septiembre de 2026 · 4 min de lecturaCómo evité que un LLM invente artículos del Código CivilEn AdvAI, mi proyecto de grado, el modelo no escribe las citas legales: solo elige entre fuentes reales y el sistema pone el texto literal. Así pasé de "suena bien" a citas verificables.↗
Siguiente proyecto
CarX →