THEMIS v0.1.0
Un experimento para responder una pregunta concreta: ¿cuánta clasificación arancelaria se puede resolver sin modelo de lenguaje, con métodos simbólicos y ML clásico sobre el corpus ya declarado?
Ir al clasificador →THEMIS es un fork de MINERVA (28-JUL-2026, v0.6.6) que elimina todo componente de IA generativa. Su pipeline es 100% determinista: no llama a ninguna API externa, no usa modelos de lenguaje, no tiene fallback a un LLM cuando duda.
El archivo no sale de tu navegador: el OCR corre ahí (PDF.js + Tesseract.js vendoreados). El texto que apruebas sí viaja al servidor de THEMIS, que lo clasifica con su motor determinista. Lo que THEMIS garantiza no es que nada salga, sino que nada se entrega a terceros: no hay API externa en el camino.
Pipeline
- OCR local — la factura nunca sube al servidor; solo el texto revisado por el usuario.
- Precedentes — el corpus de ítems declarados se indexa con TF-IDF. La vara es contención (asimétrica): los tokens del precedente deben aparecer en la entrada. Marca y variedad se verifican campo por campo sin copiarse de un precedente.
- Consenso — cuando el código SA de la factura (truncado a 6 dígitos) y un precedente coinciden en la misma apertura chilena, la evidencia es independiente y vale más que cualquier umbral de parecido textual.
- Abstención — si ningún resolutor dispara, la respuesta lleva
resuelto_por: nullcon candidatos recuperados. Sin código antes que un código inventado.
Rendimiento de la cascada
Validación cruzada dejando-uno-fuera sobre los 345 ítems del corpus de evaluación. Dos escenarios, ambos legítimos:
| Nivel | Mercancía nueva (sin fuga) |
Mercancía recurrente (corpus completo) |
|---|---|---|
| Nivel 1 — precedente casi idéntico | 0,4% / — | 1,2% / 66,7% |
| Nivel 2 — consenso | 23,4% / 80,0% | 39,1% / 90,0% |
| Total | 23,8% / 78,7% | 40,2% / 89,3% |
| Se abstiene | 76,2% | 59,8% |
| Recuperación (techo) | 68,0% | 93,0% |
Cobertura / Precisión. La línea base del agente LLM de MINERVA es 93,8% de acierto sobre 256 propuestas emparejadas.
¿De dónde viene la recuperación?
Cada fuente por sí sola recupera la partida correcta en el 43,8% de los casos (256 propuestas con verdad terreno, sin fuga). Son casi complementarias:
| Fuente | Recuperación | Única en tenerla |
|---|---|---|
| Precedentes (corpus cargado por TALARIA) | 43,8% | 24,2% |
| Código SA de la factura | 43,8% | 24,2% |
| Glosa del Arancel | 0,0% | 0,0% |
| Unión | 68,0% | — |
En el 32% de los casos ninguna fuente tiene la respuesta: ese es el techo real hoy.
El código SA del proveedor
El 59% de las entradas trae un código del SA explícito (HSC 84139100). Se trunca a los 6 dígitos comunes del SA y se bajan las aperturas chilenas:
| Métrica | Valor |
|---|---|
| Entradas con código válido | 59% |
| La correcta está entre las aperturas | 73,2% |
| Aperturas ofrecidas por entrada (promedio) | 1,9 |
| Apertura chilena única, de ellas correcta | 93 casos — 71% |
No funda la sugerencia: el proveedor clasifica distinto que Chile cerca de 4 de cada 10 veces (el sesgo principal: declaran "partes" donde el arancel exige partida propia).
El hallazgo principal
La recuperación funciona incluso en facturas extranjeras (87,1%), pero el motor responde el 15%. Esos ~53 puntos de diferencia son pérdida del criterio de decisión: el mecanismo exige "casi idéntico a un precedente" y por eso casi nunca dispara. La palanca no es traducir la entrada — es decidir mejor sobre los candidatos que ya se recuperan.
Rumbo
- Aprovechar los candidatos que ya se recuperan (la palanca principal)
- Normalizar la entrada (útil pero secundario, medido: +6 puntos)
- Discriminación por reglas formales (ASP) sobre los nodos donde el recuperador se equivoca
- Calibrar la abstención con features numéricas