Ver más allá de tus finanzas
Proyecto desarrollado para el Hackathon Oracle Next Education (ONE) y No Country
Equipo TwentyNine Devs · G9 LATAM Team 29
Muchas personas registran sus ingresos y gastos, pero les resulta difícil transformar esos datos en información útil para comprender su situación financiera y mejorar su planificación económica.
FinSightAI convierte esos datos en información clara, explicable y accionable mediante modelos de Machine Learning, un Financial Score propio y un agente de IA capaz de responder preguntas concretas sobre las finanzas del usuario.
| Capa | Tecnologías |
|---|---|
| Frontend | React 19, TypeScript, Vite, TailwindCSS 4, React Router, Supabase JS, ApexCharts, jsPDF / ExcelJS |
| Backend | Java 21, Spring Boot 3.4, Spring Data JPA, Flyway, OAuth2 Resource Server, SpringDoc OpenAPI (Swagger) |
| AI-Service | Python, FastAPI, scikit-learn, Pandas, NumPy, FAISS (RAG), Joblib, Groq y Gemini (LLM) |
| Datos y autenticación | Supabase (PostgreSQL + Auth) |
| Cloud y despliegue | Vercel (frontend + Edge Functions), Render (Backend y AI-Service vía Docker) |
| DevOps | Git, GitHub, GitHub Actions, Docker |
flowchart TB
Browser(["🧑💻 Usuario"])
subgraph Vercel["▲ Vercel — Frontend"]
SPA["React + Vite + TypeScript"]
Edge["Edge Functions Node/TS<br/>registro · recuperar clave · push · calendario"]
end
subgraph Render["🔺 Render — Docker"]
Backend["Backend<br/>Spring Boot 3 · Java 21"]
AIService["AI-Service<br/>FastAPI · agente Finsi"]
Models[("Modelos .joblib<br/>+ índice FAISS")]
end
subgraph Supabase["⚡ Supabase"]
Auth["Auth · GoTrue (JWT)"]
DB[("PostgreSQL")]
end
LLM["Groq · Gemini"]
Resend["Resend — Email"]
Browser --> SPA
SPA -- "REST /api" --> Backend
SPA -- "/agent/chat" --> AIService
SPA -- "login / signup" --> Auth
SPA --> Edge
Edge --> Auth
Edge --> Resend
Backend -- "JPA / Flyway" --> DB
Backend -. "valida JWT" .-> Auth
AIService -- "datos del usuario (X-Service-Token)" --> Backend
AIService --> Models
AIService --> LLM
flowchart LR
A[Inicio de sesión] --> B[Registro de datos /<br/>importación CSV]
B --> C[Clasificación automática<br/>de gastos]
C --> D[Análisis del perfil<br/>financiero]
D --> E[Score y<br/>recomendaciones]
E --> F[Dashboard, metas<br/>y asistente Finsi]
Backend/Backend/ # API REST — Spring Boot (Java 21)
AI-Service/ # Microservicio de IA — FastAPI, agente Finsi, modelos ML
Data-Science/ # Notebook, datasets y pipeline de Machine Learning
frontend/ # SPA — React + Vite + Edge Functions (Vercel)
docs/ # Casos de uso, documentación técnica y auditorías
scripts/database/ # Scripts de carga de datos a Supabase
Backend — Spring Boot
cd Backend/Backend
mvn spring-boot:runAI-Service — FastAPI
cd AI-Service
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000Frontend — React + Vite
cd frontend
npm install
npm run devVariables de entorno y guía completa de despliegue en producción (Vercel + Render + Supabase): ver
DEPLOY.md.
| Documento | Contenido |
|---|---|
docs/casos_uso.md |
18 casos de uso (patrón Boundary–Control–Entity) con diagramas de secuencia |
docs/ai-service/ |
Documentación técnica del microservicio de IA |
docs/data-science/ |
Documentación del pipeline de Ciencia de Datos |
Data-Science/README.md |
Notebook, modelos e integración con el AI-Service |
DEPLOY.md |
Infraestructura y guía de despliegue |
owasp-audit-report.md |
Informe interno de revisión de seguridad (OWASP) |
| API Backend | Swagger / OpenAPI en /swagger-ui.html al levantar el servicio |
🚧 La documentación técnica del Frontend está en preparación — próxima actualización.
El AI-Service se apoya en dos modelos propios, entrenados sobre datos sintéticos y serializados con Joblib al final de un pipeline de 28 pasos: generación de datos → EDA → limpieza → ingeniería de atributos → entrenamiento → validación cruzada → calibración → interpretabilidad → exportación.
| Modelo | Técnica | Accuracy | F1 macro |
|---|---|---|---|
| Clasificador de gastos (16 categorías) | TF-IDF + SGDClassifier calibrado |
99.7 % (CV agrupada por descripción) | 97.7 % |
| Clasificador de perfil financiero (3 clases) | Regresión logística | 89.6 % (CV estratificada, 5 folds) | 90.1 % |
- Validación agrupada por descripción (
StratifiedGroupKFold): las transacciones se agrupan por texto para que la misma descripción nunca aparezca en train y test a la vez, evitando fuga de datos y una accuracy inflada artificialmente. - Calibración de probabilidades (
CalibratedClassifierCV, método sigmoide) antes de exponer el modelo en producción, para que los scores de confianza sean interpretables. - Gate de calidad automático que el clasificador de gastos debe aprobar antes de serializarse: accuracy ≥ 0.90, F1 macro ≥ 0.88, brecha train/test ≤ 0.05 y F1 mínimo por clase ≥ 0.80.
- Artefactos exportados:
clasificador_gastos.joblib,clasificador_perfil.joblib,metadata_modelos.json,metricas_modelos.csv,ejemplos_respuesta_backend.json— el mismo pipeline serializado se carga tal cual en el AI-Service, sin reescribir el preprocesamiento.
⚠️ Entrenado con datos sintéticos. El Financial Score y el perfil no constituyen una calificación crediticia ni un diagnóstico profesional; antes de un uso productivo real haría falta reentrenar con datos reales, sumar monitoreo de deriva y revisión por especialistas del dominio — ver limitaciones completas enData-Science/README.md.
Notebook completo, ejecutable en Google Colab: Data-Science/FinSightAI_DataScience_1.0.ipynb ·
Equipo multidisciplinario participante del Hackathon Oracle Next Education (ONE) y No Country.
Desarrollo de Frontend, Backend, Ciencia de Datos, Machine Learning, UX/UI y Gestión Ágil.

Finsi — mascota (y sexto miembro honorario) del equipo 🐦
| Modo Claro ☀️ | Modo Oscuro 🌙 |
|---|---|
![]() |
![]() |
| Modo Claro ☀️ | Modo Oscuro 🌙 |
|---|---|
![]() |
![]() |
| Asistente IA (Modo Claro) ☀️ | Asistente IA (Modo Oscuro) 🌙 |
|---|---|
![]() |
![]() |
| Recomendaciones (Modo Claro) ☀️ | Recomendaciones (Modo Oscuro) 🌙 |
|---|---|
![]() |
![]() |
| Gestor de Transacciones | Metas de Ahorro |
|---|---|
![]() |
![]() |
| Modo Matrix (Easter Egg 🕶️) | Juegos y Logros |
|---|---|
![]() |
![]() |
| Calendario Financiero | Centro de Soporte |
|---|---|
![]() |
![]() |
| Swagger REST API (Java Spring Boot) | AI Service API Docs (Python FastAPI) |
|---|---|
![]() |
![]() |
Proyecto desarrollado con fines educativos para el Hackathon Oracle Next Education (ONE), organizado por Alura Latam, Oracle y No Country.
Su propósito es demostrar la integración de tecnologías de desarrollo web, Ciencia de Datos, Machine Learning e Inteligencia Artificial para resolver un problema real relacionado con la educación financiera.




























