Volver a proyectos
|
Caso de estudio · Fintech B2B · HackSpain 2026

X-Ray

Salud financiera de 1.286 empresas leída en su rastro bancario, con alerta temprana y simulación de escenarios.

Rol
Front y producto · equipo de 5
Estado
Archivado
Fintech B2BNext.jsTypeScriptPythonFastAPIDuckDBRemotion
Tesis

Una empresa no quiebra por balance. Quiebra por caja.

36 horas, cinco personas y 24 meses de movimientos bancarios para responder a una sola pregunta: ¿puede el dinero decir cómo está una empresa?

01
El problema

Los modelos de solvencia clásicos se apoyan en balances anuales y ratios contables que llegan con meses de retraso. Para entonces la decisión ya está tomada, o ya es tarde.

El reto lo resumía una paradoja: en el mes 24, dos empresas del dataset puntúan casi igual —65 y 68—, pero una viene subiendo desde 45 y la otra cayendo desde 82. Una foto fija no las distingue; una es la mejor apuesta del año y la otra un riesgo inminente.

Hacía falta leer la trayectoria, no el retrato: separar el bache puntual del deterioro estructural y poder explicar cada punto del score sin recurrir a una caja negra.

02
Stack técnico

App Router y TypeScript estricto. Dos audiencias sobre el mismo motor: Embat ve su cartera de clientes, la empresa se ve solo a sí misma.

El contrato entre motor y pantalla. Si el back cambia un factor del score, el front no compila hasta enterarse.

El motor de scoring: transformaciones continuas calibradas sobre la física del circulante, no un clasificador sin etiquetas.

Una capa REST fina con Pydantic v2 sobre el motor: ficha, histórico, benchmark sectorial, grupos y simulación contrafactual.

Base columnar embebida de 400 MB. 30.000 cortes mensuales consultados en menos de 10 ms, sin infraestructura externa.

El vídeo de producto no es una maqueta: son los componentes reales del front ejecutándose dentro de la composición.

Toca o pasa el cursor por cualquier tecnología.01 / 06
03
Características clave
01

Score continuo de 0 a 100 con descomposición aditiva exacta: la suma de las barras cuadra con el cambio del número, sin residuo.

02

Alerta temprana: detecta a la empresa que se tuerce mientras su score todavía parece sano, con una mediana de ocho meses de antelación.

03

Seis estados analíticos que separan el bache puntual del deterioro estructural en vez de disparar por cada mes malo.

04

Simulador contrafactual: ocho palancas operativas ordenadas por impacto en puntos y en euros de caja liberada.

05

Mapa de flujos intragrupo inferido de un dataset que no dice quién paga a quién, emparejando importes, días y sociedades.

06

Consolidación de holdings con penalización por contagio cuando una filial cae a zona crítica.

07

Monitor proactivo que avisa por correo y por Telegram con el desglose causal del cambio.

08

Agente conversacional con MCP interno, acotado a la empresa y a su grupo.

04
Capturas

Pulsa para ampliar.

05
Arquitectura

Los CSV del reto se ingieren a un DuckDB embebido que actúa de fuente única de verdad. Encima, un motor de scoring en Python procesa paneles mensuales de forma causal —point-in-time, sin sesgo de anticipación— y deja precomputados estados, palancas y escenarios. FastAPI los expone como REST y el front de Next.js pinta dos productos distintos sobre la misma API: la cartera para Embat y la ficha para la propia empresa. El módulo de previsión queda aparte, como banco de pruebas de modelos a 1, 3 y 6 meses.

06
Aprendizajes
La decisión que más me enseñó fue la de no entrenar un modelo: el dataset no traía etiqueta de impago, así que un clasificador habría sido inventarse el target y vestirlo de ciencia. Renunciar al ML donde no tocaba y reservarlo para la previsión, que sí tenía serie temporal medible, valió más que cualquier arquitectura.

Enlaces

Otros proyectos