FacturIA 2.0
Sistema Inteligente de Gestión Financiera
Sistema automatizado completo de procesamiento, clasificación y análisis de transacciones financieras mediante Inteligencia Artificial. Automatiza todo el ciclo: desde la recepción de comprobantes por email hasta la generación de reportes ejecutivos con visualizaciones interactivas en tiempo real.

🎯 Descripción del Proyecto
FacturIA 2.0 es un sistema end-to-end que revoluciona la gestión contable empresarial mediante la automatización completa del proceso de análisis financiero. A diferencia de su versión anterior que solo procesaba PDFs manualmente, esta segunda versión implementa un ecosistema completo con monitor de email 24/7, clasificación automática con IA, base de datos robusta y dashboard web interactivo.
Evolución desde FacturIA 1.0:
- Monitor automático de email con Gmail IMAP que revisa constantemente tu casilla
- Detección automática de personas a partir del remitente del email
- Google Gemini 2.0 Flash (última versión) con optimización para free tier (15 RPM)
- Dashboard web interactivo con Streamlit (multi-página con 4 secciones especializadas)
- Base de datos SQLAlchemy con soporte SQLite/PostgreSQL
- Sistema de notificaciones por email con resúmenes HTML profesionales
- Exportaciones avanzadas a Excel y PDF con formato profesional
- Rate limiting inteligente y circuit breaker para evitar costos en APIs
- Manejo robusto de UTF-8 para caracteres especiales del español
🚀 Problema que Resuelve
Las pequeñas empresas y freelancers enfrentan un desafío crítico: gestionar manualmente decenas de comprobantes que llegan por email cada mes. Este proceso consume horas valiosas, es propenso a errores humanos y dificulta la toma de decisiones financieras oportunas.
| Proceso Manual (Antes) | Con FacturIA 2.0 (Ahora) |
|---|---|
| Revisar emails manualmente buscando facturas | Monitor automático revisa cada 5 minutos |
| Descargar adjuntos uno por uno | Descarga automática de PDFs, PNGs y JPGs |
| Abrir cada PDF y copiar datos a Excel | Gemini AI extrae monto, fecha, categoría automáticamente |
| Clasificar manualmente: ingreso o egreso | IA clasifica con 95%+ de precisión |
| Crear gráficos y reportes en Excel/PowerPoint | Dashboard interactivo con visualizaciones en tiempo real |
| Tiempo invertido: 3-5 horas por semana | Tiempo invertido: 5 minutos (solo revisión de excepciones) |
⚙️ Arquitectura del Sistema
FacturIA 2.0 implementa una arquitectura modular con 5 componentes principales que trabajan de manera coordinada:
1. Monitor de Email (email_monitor/)
- Conexión IMAP persistente con Gmail
- Busca emails con adjuntos cada 5 minutos (configurable)
- Filtra por palabras clave: "factura", "comprobante", "recibo"
- Descarga PDFs, PNGs y JPGs automáticamente
- Evita duplicados mediante tracking de Message-ID
- Extracción inteligente de personas: detecta el remitente desde el email
2. Procesador con IA (ai_processor/)
- Google Gemini 2.0 Flash (modelo multimodal más reciente)
- Analiza PDFs e imágenes de comprobantes
- Extrae: tipo (ingreso/egreso), categoría, monto, fecha, emisor, número de comprobante
- Rate limiting inteligente: respeta límite de 15 RPM del free tier
- Circuit breaker: pausa procesamiento si detecta múltiples fallos consecutivos
- Error recovery: corrige JSON malformado automáticamente
- Confianza ajustable: marca transacciones que requieren revisión manual
3. Base de Datos (database/)
- SQLAlchemy ORM para abstracción completa de SQL
- Soporte multi-DB: SQLite (desarrollo) y PostgreSQL (producción)
- Modelo de datos robusto con 20+ campos:
- Información financiera: tipo, categoría, monto, fecha
- Metadata: persona, emisor/receptor, descripción
- Auditoría: fecha de creación, edición manual, última modificación
- Flags: requiere_revision, editado_manualmente, confianza_ia
- CRUD operations completas con validaciones
- Script de limpieza incluido (limpiar_db.py)
4. Dashboard Interactivo (dashboard/)
- Streamlit Framework con 4 páginas especializadas:
- Principal: KPIs, gráficos de evolución temporal, distribución por categorías
- Revisar Transacciones: edición manual con interfaz intuitiva, búsqueda y filtros avanzados
- Cargar CSV: importación masiva con mapeo de columnas y validación
- Configuración: estadísticas del sistema y mantenimiento
- Visualizaciones con Plotly: gráficos interactivos 100% responsivos
- Filtros avanzados: por fecha, categoría, persona, tipo y origen
- Exportaciones profesionales: Excel con formato y PDF con gráficos
5. Sistema de Notificaciones (notifications/)
- Envía emails automáticos cuando se procesan nuevas transacciones
- HTML estilizado con formato profesional
- Incluye resumen estadístico y lista detallada de transacciones
- Soporte multi-destinatario
🛠️ Stack Tecnológico
Backend & IA
- Python 3.10+ - Lenguaje principal
- Google Gemini 2.0 Flash - IA multimodal
- SQLAlchemy 2.0 - ORM
- Pydantic - Validación de datos
- PyPDF2 + Pillow - Procesamiento de documentos
- Schedule + Loguru - Automatización y logging
Frontend & Visualización
- Streamlit 1.29 - Framework de dashboard
- Plotly - Gráficos interactivos
- Pandas + NumPy - Análisis de datos
- openpyxl + ReportLab - Exportaciones
Email & Comunicación
- Gmail IMAP - Monitor de emails
- smtplib - Envío de notificaciones
📊 Funcionalidades Destacadas
1. Rate Limiting Inteligente
Optimizado para el free tier de Google Gemini (15 requests por minuto):
- Espera de 15 segundos entre archivos
- Exponential backoff en reintentos: 10s → 20s → 30s
- Circuit breaker: si fallan 10 archivos consecutivos, pausa 5 minutos
- Logging detallado de cada request para debugging
2. Detección Automática de Personas
Extrae nombres automáticamente desde el email del remitente:
silva.puccini@gmail.com→ Silva Puccinimaria_rodriguez_123@hotmail.com→ Maria Rodriguezinfo@empresa.com→ Empresa (usa dominio)
3. Manejo Robusto de UTF-8
Procesa correctamente caracteres especiales del español:
- Acentos: á, é, í, ó, ú
- Ñ mayúscula y minúscula
- Símbolos: ¿, ¡, €, $
- Función
safe_str()en todas las exportaciones
4. Exportaciones Profesionales
Excel (.xlsx):
- Encabezados en negrita con fondo azul
- Formato de moneda con símbolo $
- Columnas auto-ajustadas
- Filtros automáticos
PDF:
- Header profesional con título
- Tabla con bordes y colores alternados
- Pie de página con número de página y fecha
- Resumen estadístico al final
📈 Resultados y Métricas
| Métrica | Resultado |
|---|---|
| Líneas de código | ~5,000 líneas |
| Archivos Python | 15 módulos organizados |
| Tiempo de procesamiento | ~25 segundos por archivo (incluye delays de API) |
| Precisión de clasificación | 95%+ con Gemini 2.0 Flash |
| Reducción de tiempo manual | 90%+ vs. proceso tradicional |
| Costo de operación | $0 (100% free tier de Gemini) |
| Formatos soportados | PDF (texto e imagen), PNG, JPG, CSV |
💡 Desafíos Técnicos Resueltos
- Rate Limiting de APIs Gratuitas: Implementé un rate limiter inteligente con exponential backoff y circuit breaker para respetar el límite de 15 RPM de Gemini sin perder procesamiento.
- JSON Parsing con Errores: Gemini 2.0 a veces devuelve JSON con doble llaves
{{ }}. Creé un sistema de detección y corrección automática que normaliza la respuesta antes de parsear. - UTF-8 Encoding en Español: Los caracteres especiales (á, é, í, ó, ú, ñ) causaban errores en exportaciones. Implementé la función
safe_str()y declaraciones de encoding en todos los módulos. - Persistencia de Cambios en Streamlit: Los botones "Guardar" no persistían cambios porque
st.rerun()terminaba el script antes del auto-commit. Solución: agregarsession.commit()explícito antes de rerun. - Detección de Usuarios Duplicados: El sistema creaba múltiples usuarios para la misma persona por variaciones en el campo From del email. Implementé regex para extraer solo el email limpio desde "Nombre <email>".
- Cambio de Modelo de Gemini: El modelo original (gemini-1.5-flash-8b) se deprecó. Migré a gemini-2.0-flash-exp ajustando delays y prompts para mantener precisión.
🎓 Aprendizajes Clave
- Arquitectura Modular: Diseñar sistemas con separación de responsabilidades (SoC) facilita el mantenimiento y escalabilidad.
- IA en Producción: Implementar rate limiting, error recovery y circuit breakers es esencial para sistemas que dependen de APIs externas.
- Full Stack Development: Integrar backend (Python), IA (Gemini), base de datos (SQLAlchemy) y frontend (Streamlit) en un flujo end-to-end.
- Ingeniería de Prompts: Diseñar prompts efectivos para extraer datos estructurados de manera consistente de documentos no estructurados.
- Testing en Producción: Los usuarios reales encuentran edge cases que los tests unitarios no cubren. Implementar logging exhaustivo es crucial.
- Optimización de Costos: Aprovechar free tiers de APIs (Gemini) con estrategias inteligentes de rate limiting puede resultar en sistemas $0 costo de operación.