Soluciones · Servicios financieros
Un agente que clasifica movimientos de dinero eligiendo de una lista cerrada, no escribiendo una frase que luego alguien interpreta.
En una organización financiera, un agente útil no da consejos y no aprueba nada: lee documentos y transacciones, los encuadra en una categoría de un conjunto fijo, dice cuán seguro está y puede responder «no sé». Lo demás — la decisión, la aprobación, la política — queda en manos de las personas.
Oferta, con condicionesNo escribimos «entregado», porque no tenemos un agente de ese tipo puesto en producción en un cliente del sector financiero. Lo que tenemos, y mostramos exactamente como es, es una canalización propia de ingesta que corre sobre nuestros datos: cinco módulos Python, 1.526 líneas, que leen notificaciones bancarias del correo y extractos en PDF, clasifican cada transacción mediante herramientas y la escriben en PostgreSQL con deduplicación, además de cuatro flujos de automatización para webhooks de tres procesadores de pagos. El estado real, dicho en la misma frase: el repositorio no está bajo git, los directorios `tests/` y `webhook-server/` están vacíos, y la coincidencia aproximada de nombres de contrapartida usa una heurística de n-gramas marcada en el código como «a sustituir por un servicio de embeddings antes de producción». La parte de plataforma financiera en producción — flujo de solicitud, contrato, gráfico de pagos, auditoría — es una obra separada, con sus pruebas, y ahí escribimos «entregado».
Las solicitudes de agentes AI en servicios financieros casi siempre vienen en la forma «que respondan a los clientes a preguntas sobre nuestros productos». Es una solicitud legítima, pero no es ahí donde se gana tiempo. El tiempo se pierde en otra parte: alguien abre cada día decenas de notificaciones bancarias y extractos, mira una descripción del tipo una cadena de mayúsculas con un código y decide si es un cobro de un cliente, un salario, un impuesto, una cuota hacia un acreedor o un gasto de explotación. Ese trabajo es repetitivo, aburrido y, precisamente por eso, lleno de errores.
Un modelo lingüístico es bueno para eso, con una condición: no pedirle que escriba una respuesta en texto libre. Si le pides una frase, la vas a parsear tú, y el parseo lo vas a hacer mal. En nuestra tubería, el modelo no escribe: recibe siete herramientas y debe llamar exactamente a una —cobro de un cliente, salario, impuesto, pago a un acreedor, gasto de explotación, comisión bancaria o desconocido. Cada herramienta exige, además del nombre de la contrapartida o la categoría, un score de confianza entre 0 y 1. «Desconocido» pide un motivo escrito. La salida es una estructura, no una opinión.
La segunda regla es que nada entra dos veces. Cada transacción extraída de una notificación o de un extracto recibe un identificador externo calculado como prefijo de 16 caracteres de una huella SHA-256 sobre sus campos, la columna es única en la tabla, y la inserción se hace con `ON CONFLICT (external_id) DO NOTHING`. La consecuencia práctica: el buzón puede releerse tantas veces como quieras, y el saldo no se duplica. Sin esa regla, cualquier tubería de ingesta financiera acaba, en la tercera semana, produciendo duplicados que alguien limpia manualmente.
Lo que no hace un agente así, y por qué es importante escribirlo en la página: no aprueba un pago, no toma una decisión de crédito, no da recomendaciones de inversión y no responde al cliente en nombre de la institución. El score de confianza que devuelve es la evaluación del modelo sobre sí mismo, no una medida de la precisión hecha por nosotros —esa distinción es la diferencia entre una herramienta y una ilusión de control.