Caso de estudio · Fintech
LedgerFlow: plataforma de finanzas personales
Plataforma multi-tenant de presupuestos y previsiones con ingesta de extractos bancarios y categorización de transacciones con IA.
- Sector
- Finanzas personales
- Duración
- 5 semanas hasta producción
- Año
- 2026
- Servicios
- Ingeniería de producto, Integración de IA, DevOps
El problema
Las apps de presupuestos se dividen en dos bandos: servicios en la nube que quieren tus credenciales bancarias y venden tus patrones, u hojas de cálculo que mueren a la tercera semana de entrada manual. El dueño no quería ninguno de los dos: propiedad total de los datos, previsiones de verdad, e importaciones desde un banco cuyos exports CSV usan codificación Windows-1250, catorce columnas apenas documentadas y ningún ID de transacción estable.
Qué construimos
Una plataforma self-hosted de finanzas personales: transacciones, presupuestos, detección de pagos recurrentes, reglas de categorías y previsión de flujo de caja, multi-tenant desde la primera migración para servir a una familia o a un equipo pequeño sin reescrituras.
Los problemas interesantes estaban en el pipeline:
- Ingesta de CSV bancarios que sobrevive a la realidad. El export del banco no tiene ID único de transacción, así que la deduplicación usa un hash de contenido que incluye el campo de referencia bancaria. La detección de codificación maneja exports CP1250 que mienten sobre su charset.
- Categorización con IA y circuito de feedback. Las transacciones nuevas pasan por un gateway LLM para categorizarse. Cada corrección manual se convierte en una regla persistente, así que el trabajo del modelo se reduce con el tiempo en vez de repetir los mismos errores.
- Previsiones. Las transacciones recurrentes se detectan a partir del historial y se proyectan hacia adelante, dando una curva continua de flujo de caja en vez de una tabla de presupuesto estática.
Arquitectura
Backend FastAPI con row-level security de PostgreSQL para el aislamiento de tenants, Redis y Celery para los trabajos de importación y categorización, frontend React SPA. Todo se entrega como contenedores Docker detrás de un reverse proxy Traefik con TLS automático, y se despliega con un pull del repo y un solo comando de compose.
Las llamadas LLM se enrutan por un gateway self-hosted con failover entre proveedores, así que la categorización sigue funcionando cuando un proveedor limita el tráfico, y los costos se quedan cerca de cero sobre free tiers.
Notas de seguridad
Row-level security aplicada en la base de datos, no solo en la capa de API. Los secretos viven en archivos env fuera del repositorio. Las sesiones son server-side. La superficie pública es un único endpoint TLS detrás de un reverse proxy con rate limiting y security headers.
Resultado
Un cierre mensual que antes era una tarde entera de hoja de cálculo ahora es una subida de CSV. La precisión de categorización superó el 95 por ciento en semanas gracias al circuito de corrección a regla. La plataforma corre en un mini PC y ha sobrevivido a cada rareza de los exports bancarios desde el lanzamiento.