Volver al portafolio
Invoice Agent — Facturas con IA
IA Generativa / Agentes

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

PythonFastAPILangGraphMCPPresidioPostgreSQLReactTypeScriptDockerRailway

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

0%