invoice-extractor
Convierte fotos y PDFs de facturas en filas listas para contabilidad: Claude las lee, reglas contables revisan cada número y lo que no cuadra pasa por una persona.
Lectura de facturas y recibos en .NET 10 con Claude Haiku 5.5: validación determinística después del modelo, una cola en PostgreSQL, revisión humana con el original al lado y exportación a Excel y CSV.
- Rol:
- Diseño y desarrollo
- Año:
- 2026
- aprobaciones automáticas falsas en las evaluaciones
- 0/42
- errores sembrados enviados a revisión, ninguno aprobado
- 7/7
- de acierto en total, fecha, ID fiscal y número, con el reintento
- 100 %
- de costo del modelo por documento
- USD 0,00065
Demo
Capturas
El problema
Muchas pequeñas empresas todavía pasan sus facturas a la contabilidad a mano. Un modelo de lenguaje puede leerlas, pero a veces se equivoca con total seguridad, y una factura mal leída que entra a los libros es peor que una que no entra. El objetivo era un lector en el que se pueda confiar: que apruebe solo lo que puede comprobar y que mande el resto a una persona con lo necesario para decidir rápido.
Restricciones
- Nada se aprueba solo por lo que diga el modelo: cada lectura se comprueba con reglas
- Fotos torcidas, escaneos de baja calidad, recibos térmicos y PDFs, en español y en inglés
- Reglas fiscales por país: RUC e IVA de Nicaragua, RFC e IVA de México y un perfil genérico
- Montos exactos de punta a punta: decimales, nunca números de punto flotante
- Un costo por documento visible y un tope de gasto diario
Cómo funciona
- Cada archivo se valida por separado (formato real, tamaño, páginas) y se reconoce por su hash: subir dos veces el mismo no cuesta dos veces.
- Una cola en PostgreSQL con FOR UPDATE SKIP LOCKED y un lease reparte los documentos entre los workers: cada uno se lee exactamente una vez, aunque un worker se caiga.
- Claude Haiku 5.5 lee el texto de un PDF digital o la imagen de un escaneo o una foto, con salida estructurada contra un JSON Schema. Los montos viajan como texto y se convierten a decimal sin pasar por un double.
- Reglas determinísticas deciden: las líneas suman el subtotal, subtotal más impuesto da el total, la tasa existe en ese país y el ID fiscal tiene su formato. Lo que falla se lee una vez más con los errores como pista; si sigue fallando, va a revisión humana.
- Una web en Next.js, en español e inglés, muestra el estado de cada documento en vivo, la revisión con el original al lado y un panel de costos, y exporta a Excel y CSV.
Decisiones clave
El modelo propone, las reglas deciden
La aritmética y los formatos se pueden comprobar sin IA. Una lectura que no cuadra nunca se aprueba sola, por segura que parezca, y el modelo también puede decir que no está seguro de un campo.
Costo de la decisión: Las reglas detectan inconsistencias, no cualquier error: un valor mal leído que igual cuadra pasaría. Las evaluaciones cuentan esos casos, y hasta ahora son cero.
Un reintento con los errores como pista
La mayoría de las malas lecturas son un dígito o una letra. Si el modelo sabe qué regla falló, la corrige: en el set difícil, el acierto en el ID fiscal sube de 91,7 % a 100 %.
Costo de la decisión: Cerca de un 50 % más de costo en los documentos difíciles, y los que están mal de verdad se pagan dos veces antes de llegar a una persona.
Una cola en PostgreSQL, no un broker
SKIP LOCKED y un lease dan procesamiento exactamente una vez con la base de datos que la aplicación ya tiene. Un test con cuatro workers y cien documentos lo comprueba.
Costo de la decisión: Trabaja consultando la base cada pocos segundos y tiene un techo de volumen, muy por encima de lo que sube una oficina contable.
Resultados
- En 42 documentos sintéticos de evaluación, con Claude Haiku 5.5 y el reintento: 100 % de acierto en total, fecha, ID fiscal y número, y ninguna aprobación automática falsa.
- Los 7 documentos con errores sembrados a propósito terminan en revisión humana en todas las corridas.
- Sin el reintento, el set difícil no pasa el umbral del ID fiscal (91,7 % frente a 95 %). Esa falla está publicada junto a los aciertos.
- USD 0,00065 por documento en el set estándar y USD 0,00097 en el difícil, reintentos incluidos.
- Un test de punta a punta con Playwright recorre la app real (subida, revisión, aprobación y Excel) en cada push, con respuestas grabadas del modelo: sin API key y sin costo.
Tecnologías
- .NET 10
- C#
- PostgreSQL
- Aspire
- Claude Haiku 5.5
- Next.js
- TypeScript
- Playwright


