Llegó un pago por exactamente la mitad del valor de una factura. El correo del remitente coincidía con el cliente registrado. La referencia generada por Paystack —el equivalente de Stripe en África— no coincidía con nada.
Qwen lo analizó y regresó con un 30% de confianza y sin identificar ninguna factura.
Construí Recona para el Global AI Hackathon Series con Qwen Cloud, con fecha límite el 20 de julio de 2026 —un agente que reconcilia pagos de Paystack contra facturas abiertas y persigue las vencidas, sin intervención humana en los casos sencillos. Esa transacción no debía ser la parte interesante del demo. Se convirtió en el centro de todo.
“No construyas tu capa de seguridad para atrapar al modelo cuando se equivoca. Constrúyela para tratar la incertidumbre del modelo como un resultado primario.”
Qué hace Recona
Si trabajas como freelancer o diriges un negocio pequeño que recibe pagos en Nigeria, el dinero llega con referencias como PMT final tunde, y terminas la noche averiguando qué factura cierra —y a qué cliente olvidaste cobrarle. Recona automatiza ambas partes. Empareja los pagos entrantes con las facturas abiertas usando Qwen, y ejecuta una limpieza diaria de cobranzas que redacta y envía recordatorios cada vez más firmes a medida que las facturas envejecen.
Cloudflare Workers y D1 manejan la ingesta y orquestación —webhooks de Paystack con verificación de firma, idempotentes contra entregas duplicadas. Alibaba Cloud SAS ejecuta un servicio Node en Docker que contiene toda la lógica de razonamiento de Qwen, desplegado separadamente de la capa de ingesta. El reconciliador expone su motor de emparejamiento tanto como REST como herramientas MCP —match_transaction_to_invoice, draft_payment_reminder— sobre HTTP streaming. Telegram es la interfaz humana en el ciclo, porque el trabajo real aquí es un flujo de trabajo que se cierra solo, no otro dashboard al que tener que entrar.
La regla que diseñé: el modelo propone, el código determinista dispone. El cierre automático de una factura requiere monto exacto, moneda coincidente y confianza por encima de un umbral —verificado en código después de que Qwen responde, nunca confiado desde el prompt. El LLM lee la letra ilegible. La calculadora autoriza el depósito.
Lo que esperaba mostrar
Tenía una historia limpia planeada. Un cliente paga la mitad de una factura. Qwen identifica correctamente cuál es. Mi bloqueo determinista impide el cierre automático de todas formas, porque el monto es incorrecto. El modelo tiene razón, el código lo anula por seguridad. Buen momento de demo.
Eso no fue lo que pasó.
Ejecuté la transacción real contra el sistema real —el Cloudflare Worker real en recon-ingest.fpl-test.workers.dev, el reconciliador real desplegado, la API real de Qwen. Lo ejecuté dos veces: una contra la factura original, y otra después de sembrar una nueva factura por exactamente el doble del monto del pago, para descartar una casualidad.
Ambas veces, dado un pago que coincidía con el correo del cliente de una factura pero era exactamente la mitad del monto, con una referencia que no tenía conexión con ningún número de factura, Qwen devolvió 30% de confianza y sin ID de factura comprometido —aunque su propio texto de razonamiento nombraba la factura correcta por ID. No estaba equivocado. Simplemente no se comprometió con una respuesta para la que no tenía suficiente señal.
Tuve una opción: forzar el video del demo para que coincidiera con el guión que ya había escrito, o dejar que mostrara lo que el modelo realmente hizo. Reescribí la narración para que reflejara la realidad.
Por qué la versión honesta es el mejor demo
Diseñé contra el modo de fallo que me preocupaba —una respuesta equivocada con alta confianza que se deslizara por mis guardas. No diseñé con tanto cuidado contra el opuesto: un sistema tan envuelto en precaución que la propia certeza del modelo nunca se convierte en una señal utilizable, y un humano termina revisándolo todo independientemente de si el modelo realmente sabía la respuesta.
Lo que vi está en el medio. Qwen razonó en voz alta sobre la factura correcta, se negó a afirmarla, y entregó un número legible a la capa de orquestación —30%, he aquí por qué. Eso es exactamente el tipo de cosa sobre la que puedes construir políticas. Mi puerta de cierre automático no tiene que calificar si la suposición del modelo es correcta. Solo tiene que confiar en el número de confianza que Qwen ya computó sobre sí mismo, y derivar a un humano cada vez que ese número sea bajo.
No construyas tu capa de seguridad para atrapar al modelo cuando se equivoca. Constrúyela para tratar la incertidumbre del modelo como un resultado primario, y pon tus barreras de seguridad sobre eso. La alternativa requiere que seas más inteligente que el modelo para juzgar sus propias respuestas. Esta solo requiere que el modelo sea honesto sobre lo que no sabe —y Qwen, en mis pruebas, lo fue.
Una persona junior que siempre está segura es costosa de tener. Una que dice “estoy 30% segura, y he aquí por qué” es con la que realmente puedes construir un proceso.
“Una persona junior que siempre está segura es costosa de tener. Una que dice ‘estoy 30% segura, y he aquí por qué’ es con la que realmente puedes construir un proceso.”
Lecciones para desarrolladores LATAM
Si estás construyendo agentes de IA para startups o negocios en la región, esta lección es clave. En Latinoamérica, donde los sistemas de pago son fragmentados y las facturas rara vez llegan limpias, un agente que sabe decir “no sé” con precisión vale más que uno que siempre inventa una respuesta. La honestidad computacional —medir y comunicar la incertidumbre— es una característica de diseño, no un bug.
Repo: github.com/dannwaneri/recona — licencia MIT. Construido para el Global AI Hackathon Series con Qwen Cloud, Track 4: Autopilot Agent.
Sigue explorando estos temas en el blog de DojoFullStack. La combinación de agentes de IA con sistemas deterministas es el futuro del software empresarial, y entender cómo diseñar estas arquitecturas te pondrá adelante en el mercado LATAM.