SaveMyMoneyNow
Importa extractos sin atar el producto a una plantilla
En una frase
SaveMyMoneyNow convierte extractos en un panel de gastos. Detecta la fila de cabecera, propone el mapeo de columnas y espera la confirmación del usuario antes de importar.

El problema
SaveMyMoneyNow recibe hojas donde la cabecera puede aparecer después de varias filas informativas. Los nombres de las columnas, las fechas y los decimales también cambian entre archivos.
Un lector dedicado a cada formato obligaría a mantener la misma lógica varias veces. El asistente busca la estructura del archivo y deja que el usuario corrija su propuesta.
Cómo funciona
La cabecera se detecta por su contenido
Un asistente puntúa las primeras filas, se queda con la que parece la cabecera y propone qué columna es Fecha, cuál Concepto y cuál Importe, mirando tanto el nombre como lo que hay debajo. El usuario confirma o corrige.
La huella del duplicado no lleva el importe
La huella usa fecha y concepto. Así, una compra corregida tras una devolución parcial no entra como un movimiento nuevo al reimportar el mes. El importe se guarda aparte para poder auditarlo.
Los lotes de importación caducan solos
Lo que produce el asistente vive dos días y Mongo lo borra; los movimientos definitivos no caducan. Retomar el asistente tarde devuelve un 410 con su explicación, en vez de trabajar sobre datos a medias.
El PDF tiene tope y el Excel no
El PDF admite hasta cinco mil filas porque la librería construye el documento entero en memoria. La exportación a Excel escribe a medida que avanza y puede procesar históricos mayores.
Los tests fabrican los extractos que van a leer
Levantan Mongo en memoria y construyen extractos con formatos distintos durante el test. Cada caso declara la estructura que espera leer.
Dónde está el listón
- 21 endpoints
- 113 casos de test
- 9 pasos del asistente
React, Node, Express y MongoDB. Tests con Vitest y Mongo en memoria.