
Invoice Agent — Facturas con IA
Agente conversacional que registra datos fiscales y genera facturas, con un pipeline de enmascarado que impide que PII y datos de tarjeta lleguen sin protección a un LLM.
Resumen del proyecto
Invoice Agent (Facturas IA) es un agente conversacional que registra el perfil fiscal de una persona física (nombre, RFC, dirección y correo) y genera facturas a partir del identificador de una compra.
Su requisito central no es la facturación en sí, sino el cuidado de datos personales (PII) y de tarjeta (PCI): cada mensaje pasa primero por un pipeline de enmascarado de dos etapas —escaneo determinístico con Presidio y regex/Luhn, más un modelo económico de Together.ai— y solo entonces llega al modelo de razonamiento, que nunca ve texto sin enmascarar.
Es un monorepo de 3 apps independientes desplegadas en Railway: un chat en React/TypeScript, un agente en FastAPI + LangGraph con grafo ReAct armado a mano, y una API de facturas en FastAPI que expone sus tools mediante un servidor MCP.
Características principales
- Alta de perfil fiscal (nombre, RFC, dirección, correo) y generación de facturas desde una compra, en lenguaje natural
- Pipeline de enmascarado PII/PCI en dos etapas: Presidio + regex/Luhn y un modelo de Together.ai
- Grafo ReAct de LangGraph con tools servidas por MCP sobre una API de facturas
- Cifrado en base de datos de RFC, correo y dirección, con blind index para búsquedas
- Suite de evals de promptfoo como gate de privacidad, además de mutation testing y análisis con SonarQube
- Chat con panel de perfil, costo por conversación en tokens y MXN, y modo dev que muestra la actividad del agente
Stack
Problema
Un agente de facturación necesariamente maneja datos personales y de tarjeta; mandarlos tal cual a un LLM externo es un riesgo de privacidad y de cumplimiento.
Enfoque
Se diseñó un pipeline de enmascarado en dos etapas (escaneo determinístico + modelo de enmascarado) que sustituye cada dato sensible por un token antes del razonamiento y lo restaura solo al ejecutar tools o responder al usuario. El grafo de LangGraph se arma a mano para intercalar el enmascarado dentro del loop de tool-calling, y las tools se sirven por MCP sobre una API de facturas con campos cifrados en base de datos.
Resultados
- 3 apps desplegadas en Railway con demo público: chat, agente e API de facturas
- Más de 480 tests automatizados entre las 3 apps, con tests basados en propiedades (Hypothesis) sobre fixtures adversariales de PII
- Evals de promptfoo que fallan si cualquier PII llega sin enmascarar al modelo de razonamiento
Cliente
Proyecto personal
Cronología
Septiembre 2026
Rol
AI Engineer & Desarrollador Full-Stack
© 2026 Cuauhtémoc Bautista

