Aurum Finances
Plataforma de finanzas personales multi-servicio con importación automatizada desde correos bancarios, insights con IA, y análisis en tiempo real.
Arquitectura
Plataforma de tres servicios con diseño contract-first — toda la API está definida en 14 archivos Smithy IDL y generada mediante Smithy4s, asegurando que la implementación en Scala esté siempre sincronizada con el contrato:
- finance-api (Scala 3 / Http4s / Smithy4s / Doobie) — hub central: sirve endpoints autenticados con Clerk JWT a la UI, expone endpoints internos con HMAC-SHA256 para finance-ml, gestiona PostgreSQL con migraciones Flyway y rate limiting por usuario respaldado en Redis
- finance-ml (Python / FastAPI / LiteLLM) — consulta Gmail vía IMAP/SSL con parsers automáticos para Visa y Mastercard; aloja el chat con IA con 13 funciones tool-calling contra la API en vivo vía OpenRouter (claude-haiku-4-5)
- finance-ui (Next.js 15 / TanStack Query / Radix UI) — proxy server-side a la API, middleware de autenticación Clerk, theming dark/light, internacionalización
Todos los servicios corren en Docker Compose sobre una única instancia EC2 optimizada en costos (programada 4PM–1AM hora Uruguay vía EventBridge + Lambda, reduciendo el costo de cómputo ~70%), con CloudFront + S3 para assets estáticos y Route53 para DNS.
Características Principales
- Auto-ingesta bancaria: consulta Gmail vía IMAP/SSL, parsea transacciones Visa/Mastercard en formatos estándar Uruguay, crea transacciones pendientes para revisión — multi-tenant con credenciales cifradas AES-256 por organización
- Asistente financiero con IA: chat conversacional en español rioplatense con arquitectura tool-based — el LLM invoca 13 funciones de la API en vivo (cuentas, transacciones, presupuestos, tendencias, cotizaciones) con respuestas SSE streaming y sesiones en Redis
- Multi-tenencia: aislamiento de datos por org vía IOLocal a través de fibras Scala, flujo de invitaciones, pipeline de onboarding configurable, BYOK para proveedores LLM
- Gestión de cuentas de crédito: seguimiento de cuotas con generación automática de N sub-transacciones respetando el día de cierre, vinculación a resúmenes de tarjeta
- Presupuestos anuales: planificación por categoría con seguimiento real vs. planeado y consolidación cross-moneda
- Multi-moneda con FX en vivo: tasas de cambio desde Frankfurter API, conversión UYU/USD, totales por moneda en dashboard
- Producción optimizada: scheduler EC2, monitoreo CloudWatch, alertas UptimeRobot, watchdog autoheal Docker
Stack Tecnológico
Next.js 15, React 19, TypeScript, Tailwind CSS, Radix UI, TanStack Query, React Hook Form, Zod, Scala 3, Http4s, Smithy4s, Doobie, Flyway, Python, FastAPI, PostgreSQL, Redis, Docker, AWS (EC2, CloudFront, S3, Route53, EventBridge, Lambda), Clerk Auth, LiteLLM, OpenRouter (claude-haiku-4-5), UptimeRobot