Mi algoritmo reconciliaba el 95% de las transacciones. La contable seguía usando la regla.

Cinco capas de algoritmos reconcilian el 95% de las transacciones cada mañana. A la contable le queda un puzle de seis parejas, no un montón de papeles.

Contable usando algoritmo para reconciliar transacciones

Una regla. Un lápiz. Un montón de papeles. El informe diario del TPV, extractos de tres bancos, siete restaurantes. La contable recorre cada línea con el dedo, la marca, pasa a la siguiente. Pierde el hilo — vuelta a empezar. Este importe no cuadra con ningún recibo, y al final resulta que son tres recibos más la propina. Aquel otro — una devolución procesada por otro terminal.

Trabajo rutinario. Todos los santos días.

Ahora juega a un puzle en su ordenador.


Cuando los datos del TPV se cargan en el sistema automáticamente — extraídos de la base de datos en tiempo real de Agora cada cinco minutos — lo único que tiene que hacer la contable es subir los extractos bancarios. Las matemáticas se encargan del resto.

Primera capa: coincidencia exacta. El importe cuadra, las marcas de tiempo están a menos de media hora — listo, pareja encontrada. La capa más simple y la más gratificante: ella sola liquida el grueso de las transacciones.

Lo que queda pasa al algoritmo húngaro. Optimización combinatoria, circa 1955. El sistema construye una matriz — cada recibo × cada transacción bancaria — puntúa cada pareja por similitud y encuentra la asignación óptima global. No "la mejor pareja para este recibo", sino "la mejor asignación de todas las parejas a la vez." Un algoritmo voraz podría robarle la pareja perfecta a su vecino. El húngaro no.

Siguiente paso — agrupaciones. Suma de subconjuntos: tres recibos del TPV de 12 €, 8 € y 15 € — ¿podría ser un solo cargo bancario de 35 €? El sistema prueba combinaciones y encuentra coincidencias exactas. También funciona al revés — un solo pago en el TPV, tres cargos bancarios separados.

Y por último — trabajo de detective. Seis tipos de búsqueda para todo lo que siga sin emparejar: ventana temporal ampliada hasta 24 horas, detección de propinas de hasta el 30 %, coincidencia aproximada con tolerancia de ±2 €, grupos de hasta cuatro transacciones, grupos inversos, cruces entre días distintos.

Cada pareja potencial recibe una puntuación de 0 a 1. Por encima de 0,90 — el sistema la confirma automáticamente. Entre 0,45 y 0,90 — se la sugiere a la contable. Por debajo — se queda oculta, para que la interfaz no se convierta en ruido.

Cinco capas, de simple a complejo — cada una recoge lo que se le escapó a la anterior. La contable no ve nada de esta maquinaria. Para ella es una barra de progreso que dice cada mañana: 94 % hecho, seis parejas pendientes.


Cuando los algoritmos terminan su ronda, a la contable le queda un puñado pequeño. El sistema muestra una barra de progreso — normalmente el 90–95 % ya está conciliado automáticamente. El resto vive en una pestaña llamada "Resolver", y ahí es donde empieza el puzle.

Tarjetas en la pantalla. Transacciones bancarias sin emparejar a la izquierda, recibos del TPV a la derecha. El sistema le da pistas: estos tres recibos — 12 €, 8 € y 15 € — parece que corresponden a este pago con tarjeta de 35 €. O: el cargo de la tarjeta es de 47,50 €, pero el recibo dice 41,30 € — la diferencia pinta a propina. ¿Aceptar? ¿Rechazar?

Es como un juego de puzles en el móvil. Descifrar qué encaja con qué y por qué. Ah, ya está — estos tres recibos suman ese total, y la diferencia se quedó como propina. Le das a "aceptar", la barra de progreso avanza hasta el 100 %, día cerrado.

Papel y regla frente a un puzle con botones. El mismo resultado. El proceso — de universos distintos.


Al principio, desconfiaba una barbaridad. (Si estás leyendo esto — no te lo tomes a mal, es por darle vidilla al texto.) Lógicamente — no todo funcionó a la primera. Fuimos por iteraciones: yo se lo enseñaba, ella lo probaba, encontraba los fallos, yo los corregía. Cuatro versiones en total. Cada una más simple que la anterior. En la versión final borré 770 líneas de código porque resultó que no hacían falta.

Pero a lo bueno uno se acostumbra rápido — es como el ascensor de tu edificio. La primera semana estás encantado de la vida. Al mes te cabreas porque tarda mucho. Ahora me pide cosas que antes ni se le habrían pasado por la cabeza. Y las pide como si fuesen obvias.

Señala fallos — con razón, con criterio. Pero detrás de esas quejas hay algo muy sencillo: no concibe volver atrás. El mejor piropo que puede recibir un producto no es "gracias." Es "¿por qué este botón es de ese color?"


Yo sabía que el sistema funcionaba. Los algoritmos convergían, el matching cerraba al 95 %, el código era cada vez más limpio. Técnicamente — todo cuadraba.

Pero el verdadero subidón no vino del código. Vino cuando ella mostró entusiasmo genuino por primera vez. No un "sí, está bien" por compromiso. Entusiasmo de verdad.

Puedo decirme a mí mismo que soy bueno en lo que hago. Pero construyo cosas para personas, para hacerles la vida mejor. Si no lo necesitan o no lo quieren — aunque objetivamente sea diez veces mejor — no hay nada que pueda hacer. El subidón llega cuando a otros les flipa lo que he creado.

Cinco algoritmos, cuatro versiones, 770 líneas borradas. Y la medida de todo — la cara de una contable que ya no echa mano de la regla.