{"id":28755,"date":"2026-10-20T10:34:58","date_gmt":"2026-10-20T08:34:58","guid":{"rendered":"https:\/\/www.powens.com\/?p=28755"},"modified":"2026-10-20T10:34:59","modified_gmt":"2026-10-20T08:34:59","slug":"reparar-conectores-mantenimiento-agentico","status":"publish","type":"post","link":"https:\/\/www.powens.com\/es\/blog\/reparar-conectores-mantenimiento-agentico\/","title":{"rendered":"Reparar conectores en 15 minutos en lugar de 2 d\u00edas"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Este art\u00edculo es la segunda entrega de una serie sobre la calidad en Powens. En esta ocasi\u00f3n, explicamos c\u00f3mo hemos empezado a experimentar con agentes de IA para acelerar el mantenimiento de los conectores. Aviso: todav\u00eda estamos en una fase temprana y todo puede cambiar r\u00e1pidamente.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Mantenimiento de la conectividad: no es una correcci\u00f3n de errores cualquiera<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Como explicamos en nuestro <a href=\"https:\/\/www.powens.com\/es\/blog\/sistema-tiering-conectores\/\">primer art\u00edculo<\/a>, los servicios de conectividad como Powens (piensa en Zapier, pero para conectar cuentas bancarias) tienen unas limitaciones de mantenimiento muy particulares.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imagina que tu software es, por definici\u00f3n, un conjunto de integraciones con sistemas externos que no controlas: eso significa que, literalmente, <em>importas<\/em> cientos de incidencias, de forma aleatoria. Los bancos actualizan sus webs. Las API cambian sin previo aviso. Cada vez que eso ocurre, un conector se rompe y alguien tiene que repararlo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el art\u00edculo anterior describimos c\u00f3mo priorizamos qu\u00e9 anomal\u00edas corregir primero. Es un proceso humano tradicional, apoyado en herramientas de monitorizaci\u00f3n inteligentes. El sistema funciona bien: garantiza que las incidencias adecuadas reciban atenci\u00f3n.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero no resuelve un problema m\u00e1s de fondo: la capacidad. Nuestro equipo de mantenimiento de conectores, X-Connectors, solo puede resolver una parte del n\u00famero medio de anomal\u00edas \u00fanicas que detectamos cada mes.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Al centrarnos en las incidencias que afectan a m\u00e1s usuarios, podemos garantizar un servicio estable al 99 % de ellos.<\/strong> Pero eso significa que muchas anomal\u00edas siguen sin corregirse, aunque solo afecten a un pu\u00f1ado de usuarios de bancos m\u00e1s peque\u00f1os. Y eso, por supuesto, resulta muy frustrante para nosotros y para nuestros clientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s, como algunos ya sabr\u00e9is, cuando se trata de hacer <a href=\"https:\/\/es.wikipedia.org\/wiki\/Web_scraping\" target=\"_blank\" rel=\"noopener\">scraping<\/a> de datos financieros, las correcciones pueden llevar mucho tiempo. Reproducir el error suele ser <em>ligeramente<\/em> m\u00e1s complicado que con un bug de software t\u00edpico. <strong>Nuestros protocolos de seguridad proh\u00edben a los desarrolladores usar las credenciales de los usuarios finales para facilitar la depuraci\u00f3n.<\/strong>&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En su lugar, nos basamos en los registros de las sesiones de navegaci\u00f3n y en una serie de herramientas internas que nos ayudan a localizar el problema. Pero no es perfecto y, a menudo, depurar es un proceso de prueba y error.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As\u00ed que aqu\u00ed est\u00e1 la pregunta del mill\u00f3n: \u00bfpuede un LLM hacer ese trabajo? \u00bfPuede ayudarnos a corregir las incidencias de menor prioridad que nuestros desarrolladores no tienen capacidad de atender y, con el tiempo, acelerar tambi\u00e9n la resoluci\u00f3n de las de mayor prioridad?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Dos formas de abordar un Scraper<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando piensas trabajar con LLM para el web scraping, te vienen a la cabeza dos enfoques radicalmente distintos. Y elegir entre ellos dice mucho de tus prioridades.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El primer enfoque consiste en meter el LLM en el circuito en tiempo de ejecuci\u00f3n. Cada vez que haces scraping de un banco, el modelo interpreta el HTML en bruto y extrae los datos sobre la marcha. B\u00e1sicamente, el LLM se convierte en el scraper.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No hay c\u00f3digo r\u00edgido que mantener: el modelo se adapta din\u00e1micamente a cada web bancaria y a cada sesi\u00f3n de navegaci\u00f3n. Si el banco redise\u00f1a su web de la noche a la ma\u00f1ana, el modelo simplemente descifra el nuevo dise\u00f1o. Cero interrupciones. Es elegante, y podr\u00eda ser el futuro a largo plazo de la extracci\u00f3n de datos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero, hoy por hoy, tiene dos obst\u00e1culos insalvables:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Primero, el coste: una sola sesi\u00f3n de navegaci\u00f3n con un LLM cuesta entre 10 y 20 c\u00e9ntimos. Actualizamos los datos de las cuentas de un usuario (lo que llamamos una \u201cconexi\u00f3n\u201d) unas 30 veces al mes. Eso supone unos 3 \u20ac por conexi\u00f3n, m\u00e1s de lo que cobramos por ella. Las cuentas, sencillamente, no salen.<\/li>\n\n\n\n<li>Segundo, el determinismo: el modelo podr\u00eda extraer datos ligeramente distintos cada vez, lo cual es un problema real cuando tus clientes dependen de informaci\u00f3n financiera precisa para hacer funcionar sus propios productos, o cuando un regulador conf\u00eda en que proporciones los datos <em>tal cual<\/em>.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:23px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><\/th><th>El LLM como scraper<\/th><th>El LLM corrige el c\u00f3digo (en desarrollo)<\/th><\/tr><\/thead><tbody><tr><td><strong>Coste<\/strong><\/td><td>0,10\u20130,20 \u20ac por sesi\u00f3n, es decir, unos 3 \u20ac por conexi\u00f3n al mes<\/td><td>5\u201315 \u20ac una sola vez por correcci\u00f3n<\/td><\/tr><tr><td><strong>Determinismo<\/strong><\/td><td>Variable<\/td><td>Determinista<\/td><\/tr><tr><td><strong>Control humano<\/strong><\/td><td>Ninguno<\/td><td>Revisi\u00f3n de la PR en cada cambio<\/td><\/tr><tr><td><strong>Adaptaci\u00f3n a redise\u00f1os<\/strong><\/td><td>Inmediata<\/td><td>Requiere una correcci\u00f3n<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:23px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>El segundo enfoque consiste en mantener conectores programados a mano, pero hacer que el LLM escriba las correcciones como lo har\u00eda un desarrollador.<\/strong> El modelo analiza el problema, genera el c\u00f3digo y abre una <a href=\"https:\/\/joserzapata.github.io\/courses\/ciencia-datos-en-produccion\/control-versiones\/pull-request\/\" target=\"_blank\" rel=\"noopener\">pull request<\/a>.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un desarrollador humano la revisa y la integra. Con este m\u00e9todo, el coste baja a entre 5 y 15 \u20ac por correcci\u00f3n, un gasto \u00fanico. El c\u00f3digo es determinista una vez desplegado. Y cada cambio pasa por una revisi\u00f3n humana antes de llegar a producci\u00f3n, as\u00ed que tenemos m\u00e1s control.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es menos vistoso, desde luego. Pero somos una empresa que gestiona millones de conexiones bancarias y opera bajo regulaci\u00f3n financiera: el control no es un extra. As\u00ed que tomamos la decisi\u00f3n obvia y optamos por \u201cel LLM corrige los conectores\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y aqu\u00ed viene el giro: estos dos enfoques no son excluyentes. Ya podemos imaginar un modelo h\u00edbrido en el que la extracci\u00f3n en tiempo de ejecuci\u00f3n sirva de respaldo para los casos l\u00edmite (el 5 % de usuarios que se topan con un dise\u00f1o de p\u00e1gina poco habitual), mientras el enfoque basado en c\u00f3digo se encarga del funcionamiento habitual. Pero eso lo dejamos para otro art\u00edculo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u00a1Por fin! Un buen argumento a favor de Woob<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La infraestructura de conectores de Powens se basa en <a href=\"https:\/\/woob.tech\/\" target=\"_blank\" rel=\"noopener\">Woob<\/a>, un framework de c\u00f3digo abierto que llevamos a\u00f1os desarrollando, pero del que a menudo se burlan los desarrolladores que se incorporan a Powens. Les parece arcano, r\u00edgido y, a veces, demasiado pesado para tareas sencillas.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>As\u00ed que, cuando nos planteamos por primera vez que una IA escribiera c\u00f3digo Woob, hubo escepticismo interno.<\/strong> Woob no es precisamente mainstream. \u00bfPodr\u00eda un modelo de lenguaje entender un framework de nicho lo bastante bien como para producir conectores fiables?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una primera prueba de concepto, ejecutada en directo sobre una cuenta bancaria real, zanj\u00f3 el debate bastante r\u00e1pido.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Resulta que un framework estructurado es una ventaja, no un obst\u00e1culo. El n\u00facleo de Woob se encarga de todo el c\u00f3digo repetitivo: sesiones HTTP, gesti\u00f3n de cookies, paginaci\u00f3n, gesti\u00f3n de errores. Un conector solo contiene la l\u00f3gica propia de la web del banco: qu\u00e9 p\u00e1gina visitar, qu\u00e9 campos extraer, c\u00f3mo navegar entre secciones.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eso significa que el LLM trabaja con archivos peque\u00f1os y bien acotados, en lugar de scripts monol\u00edticos. Y como todos los conectores siguen los mismos patrones, el modelo puede aprender las convenciones de uno y trasladarlas a otro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sin un framework, el modelo tiende a producir c\u00f3digo improvisado: llamadas HTTP encadenadas, gesti\u00f3n de errores en l\u00ednea, navegaci\u00f3n tipo espagueti. Con Woob, produce c\u00f3digo estructurado y mantenible que un desarrollador acostumbrado al framework puede revisar en un tiempo razonable.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si est\u00e1s valorando un enfoque similar para tu propio c\u00f3digo, probablemente esta sea la lecci\u00f3n m\u00e1s importante: ponle barreras al modelo y la calidad del resultado mejora de forma espectacular.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Mismo gui\u00f3n, otro actor<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Al final, tardamos un par de meses en tener el primer prototipo de nuestro reparador de conectores con IA. Lo llamamos <em>woob-autofix<\/em> (qu\u00e9 originales, \u00bfeh?). Su principio de dise\u00f1o es sencillo: el agente sigue exactamente el mismo flujo de trabajo que un desarrollador humano.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Woob-autofix lee un ticket de JIRA.<\/li>\n\n\n\n<li>Obtiene contexto sobre el conector a trav\u00e9s de nuestras herramientas internas.<\/li>\n\n\n\n<li>Reproduce el error ejecutando el mismo comando de diagn\u00f3stico que usan nuestros desarrolladores.<\/li>\n\n\n\n<li>El agente captura los logs y las respuestas HTML, analiza el fallo y escribe una correcci\u00f3n.<\/li>\n\n\n\n<li>Vuelve a ejecutar la prueba para validarla.<\/li>\n\n\n\n<li>Un agente revisor independiente e imparcial inspecciona el diff para comprobar la calidad y la seguridad. Si la revisi\u00f3n detecta problemas, el ciclo se repite.<\/li>\n\n\n\n<li>Cuando todo est\u00e1 correcto, se crea una pull request en GitHub.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Y ah\u00ed se detiene. El agente nunca integra su propio c\u00f3digo. El equipo X-Connectors revisa cada pull request exactamente igual que cualquier contribuci\u00f3n escrita por una persona. Una vez m\u00e1s, nos pareci\u00f3 obvio tomar esta decisi\u00f3n de dise\u00f1o tan estricta por ahora. No descartamos pasar a un enfoque m\u00e1s flexible en el futuro. Pero eso exigir\u00e1 bastante aprendizaje y evaluaci\u00f3n y, por supuesto, pruebas s\u00f3lidas de que woob-autofix puede mantener un rendimiento de nivel humano de forma constante en el tiempo.<\/p>\n\n\n\n<div style=\"height:23px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ad7950abbc08&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ad7950abbc08\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"325\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_1_es_1_5x-1200x325.webp\" alt=\"Etiqueta zona 1: AGENTE IA \u00b7 WOOB-AUTOFIX\nPaso 1: Leer ticket \u2014 Recoge el ticket de JIRA\nPaso 2: Contexto \u2014 Obtiene el contexto del conector en las herramientas internas\nPaso 3: Reproducir \u2014 Ejecuta el mismo comando de diagn\u00f3stico que nuestros desarrolladores\nPaso 4: Corregir \u2014 Analiza logs y HTML, y escribe la correcci\u00f3n\nPaso 5: Validar \u2014 Vuelve a ejecutar la prueba para validar\nPaso 6: Agente revisor \u2014 Otro agente revisa calidad y seguridad\nPaso 7: Abrir PR \u2014 Crea una pull request en GitHub\nEtiqueta del bucle (flecha discontinua del paso 6 al 4): \u00bfProblemas? Se repite el ciclo\nEtiqueta del separador: EL AGENTE SE DETIENE AQU\u00cd\nEtiqueta zona 2: HUMANO \u00b7 EQUIPO X-CONNECTORS\nTarjeta humana: Revisi\u00f3n e integraci\u00f3n \u2014 Cada pull request se revisa igual que una contribuci\u00f3n humana. Solo el equipo puede integrar en producci\u00f3n.\" class=\"wp-image-28759\" title=\"\" srcset=\"https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_1_es_1_5x-1200x325.webp 1200w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_1_es_1_5x-350x95.webp 350w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_1_es_1_5x-790x214.webp 790w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_1_es_1_5x-765x207.webp 765w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_1_es_1_5x-1536x416.webp 1536w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_1_es_1_5x-2048x554.webp 2048w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">El agente nunca integra su propio c\u00f3digo. Agente: 10\u201315 min por correcci\u00f3n \u00b7 Desarrollador: 1\u20132 d\u00edas.<\/figcaption><\/figure>\n\n\n\n<div style=\"height:23px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Por dentro, el agente funciona con Claude a trav\u00e9s del SDK de Claude Code. Al principio ejecutamos en paralelo Claude Code y Kiro (el agente de programaci\u00f3n de AWS). Pero Kiro no ten\u00eda un SDK nativo, lo que obligaba a lanzar el ejecutable, analizar su salida y perder contexto entre pasos. El SDK de Claude Code permiti\u00f3 una integraci\u00f3n fluida en nuestro pipeline de orquestaci\u00f3n, con continuidad total del contexto. Tomamos la decisi\u00f3n pragm\u00e1tica de consolidar, y los resultados mejoraron.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando escribimos el primer borrador de este art\u00edculo, trabaj\u00e1bamos con Opus 4.6, pero el salto desde 4.5 no fue tan bueno como esper\u00e1bamos. Nuestros prompts de 4.5 eran algo demasiado directivos para 4.6, que necesita un poco m\u00e1s de margen para dar buenos resultados. Tras un tedioso trabajo de reingenier\u00eda de prompts, la cosa mejor\u00f3. Desde entonces, gestionamos mejor estas actualizaciones. En el momento de publicar este art\u00edculo, ya trabajamos con Opus 5.5.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Lo m\u00e1s dif\u00edcil no es lo que piensas<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pregunta a cualquiera que est\u00e9 creando herramientas de desarrollo asistidas por IA cu\u00e1l es el mayor reto, y es probable que oigas mucho \u201cprompt engineering\u201d. Es cierto que supone mucho trabajo, probablemente la mayor parte en t\u00e9rminos cuantitativos. Pero no es lo m\u00e1s dif\u00edcil.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>El problema realmente dif\u00edcil es saber si de verdad est\u00e1s mejorando.<\/strong> En la mayor\u00eda de los proyectos de software, la calidad del c\u00f3digo generado por IA se mide con tests unitarios o escenarios fijos. Pero nosotros no podemos hacerlo, ni aunque resolvi\u00e9ramos todos los retos de seguridad posibles.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las webs de los bancos evolucionan constantemente. Un caso de prueba de hace tres meses puede apuntar a un dise\u00f1o de p\u00e1gina que ya no existe, con la sesi\u00f3n de un usuario que desde entonces ha cerrado su cuenta. Nuestra verdad de referencia tiene fecha de caducidad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As\u00ed que tomamos prestada una idea de las finanzas cuantitativas: el backtesting. Volvemos atr\u00e1s en el tiempo, tomamos un ticket de JIRA de hace dos meses, recuperamos el c\u00f3digo tal como estaba y dejamos que el agente intente la correcci\u00f3n. Despu\u00e9s comparamos su pull request con la que el desarrollador humano public\u00f3 realmente. Un juez LLM independiente eval\u00faa ambas soluciones frente al enunciado original del problema.<\/p>\n\n\n\n<div style=\"height:23px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ad7950abc011&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ad7950abc011\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"643\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_2_esp_1_5x-1200x643.webp\" alt=\"Visual 2: backtesting\nPaso 1: VOLVER ATR\u00c1S EN EL TIEMPO \u2014 Un ticket antiguo \u2014 Tomamos un ticket de JIRA de hace unos dos meses y recuperamos el c\u00f3digo tal como estaba entonces.\nMini l\u00ednea de tiempo: \u22122 meses \u2014 Hoy\nRama superior (color humano): REFERENCIA HUMANA \u2014 La correcci\u00f3n del desarrollador \u2014 La pull request que nuestro desarrollador public\u00f3 en su d\u00eda\nEntre las ramas: vs.\nRama inferior (color agente): AGENTE IA \u00b7 WOOB-AUTOFIX \u2014 La correcci\u00f3n del agente \u2014 woob-autofix intenta resolver el mismo ticket con el mismo c\u00f3digo\nPaso 3: JUEZ LLM INDEPENDIENTE \u2014 Compara las dos correcciones \u2014 Ambas soluciones se eval\u00faan frente al enunciado original del problema.\nEtiqueta de resultados: VEREDICTO SOBRE EL AGENTE\nResultado A (check): Correcci\u00f3n real \u2014 Causa ra\u00edz resuelta. Al menos tan buena como la del desarrollador.\nResultado B (cruz): Parche \u2014 S\u00edntoma oculto, el problema sigue ah\u00ed.\" class=\"wp-image-28761\" title=\"\" srcset=\"https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_2_esp_1_5x-1200x643.webp 1200w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_2_esp_1_5x-350x188.webp 350w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_2_esp_1_5x-790x423.webp 790w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_2_esp_1_5x-767x411.webp 767w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_2_esp_1_5x-1536x823.webp 1536w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_2_esp_1_5x.webp 1683w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Al principio, el agente \u00abresolv\u00eda\u00bb los errores capturando las excepciones en lugar de corregir la causa ra\u00edz. Se acabaron los fallos, pero tambi\u00e9n los datos.<\/figcaption><\/figure>\n\n\n\n<div style=\"height:23px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Este enfoque detect\u00f3 algo que los tests por s\u00ed solos nunca habr\u00edan detectado. Al principio, el agente ten\u00eda un truco favorito: \u201cresolv\u00eda\u201d los errores capturando las excepciones en lugar de atacar la causa ra\u00edz. Se acabaron los fallos, t\u00e9cnicamente. Pero tambi\u00e9n se acabaron los datos. Al compararlo con una referencia humana, el juez puede distinguir entre una correcci\u00f3n real y un parche.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfEn qu\u00e9 punto estamos hoy? El agente produce una correcci\u00f3n al menos tan buena como la del desarrollador en el 25-30 % de los casos, al primer intento y sin comentarios de revisi\u00f3n. Cuando empezamos, era alrededor del 10 %. Y tenemos motivos para pensar que nos quedamos cortos: las primeras revisiones humanas sugieren que el juez LLM es demasiado estricto en algunos casos. Ahora mismo estamos haciendo rondas de calibraci\u00f3n con el equipo X-Connectors.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Incluso cuando la correcci\u00f3n no es perfecta, el ahorro de tiempo es real. El agente tarda entre 10 y 15 minutos. Un desarrollador, uno o dos d\u00edas. Incluso una correcci\u00f3n que necesita ajustes le da al revisor una ventaja enorme. Y recordad: probablemente esas correcciones nunca se habr\u00edan hecho. As\u00ed que mejor hecho que perfecto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Es m\u00e1s listo de lo que pens\u00e1bamos<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pero cuando la correcci\u00f3n es buena, puede ser <em>realmente<\/em> buena.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En un caso, un ticket indicaba que varias cuentas de un gran banco franc\u00e9s estaban mal clasificadas (es decir, confund\u00edamos cuentas corrientes, cuentas de ahorro u otros tipos). <strong>El agente confirm\u00f3 el problema y, sin que nadie se lo pidiera, hizo una b\u00fasqueda web del nombre comercial de cada cuenta para determinar su tipo correcto.<\/strong>&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Identific\u00f3 un PEA (un plan de ahorro en acciones franc\u00e9s), una cuenta de valores y otras, y actualiz\u00f3 el conector en consecuencia. Un razonamiento puramente de negocio que ninguno de nosotros hab\u00eda dise\u00f1ado de forma expl\u00edcita.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En otro caso, un conector no consegu\u00eda recuperar los movimientos de una cuenta concreta. El agente se dio cuenta de que el patr\u00f3n de la URL no coincid\u00eda con el de las dem\u00e1s p\u00e1ginas. As\u00ed que empez\u00f3 a experimentar: reconstruy\u00f3 la URL combinando el nombre de la cuenta y el tipo de producto, prob\u00f3 varias variantes, encontr\u00f3 una que devolv\u00eda datos v\u00e1lidos e implement\u00f3 la l\u00f3gica de an\u00e1lisis.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un enfoque de ingenier\u00eda por prueba y error, justo lo que har\u00eda un desarrollador con las herramientas de desarrollo del navegador abiertas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ninguno de estos comportamientos estaba programado. El agente los dedujo del contexto. Y eso es precisamente lo que hace prometedor este enfoque: no es un script con mil reglas. Es un modelo que razona sobre los problemas.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>Todos los clientes de agregaci\u00f3n se benefician de este desarrollo. En el \u00faltimo sprint dedicamos un 40 % menos de tiempo al mantenimiento y m\u00e1s que duplicamos la calidad de los conectores del nivel m\u00e1s bajo (su tasa de \u00e9xito pas\u00f3 del 27 % a m\u00e1s del 60 %). De cara a los pr\u00f3ximos seis meses, los clientes pueden esperar tiempos de resoluci\u00f3n mucho m\u00e1s cortos para las incidencias de los conectores y una mejor calidad del servicio en el d\u00eda a d\u00eda.<\/em> <em>\u2014 <a href=\"https:\/\/www.linkedin.com\/in\/vincent-paredes-29559675\/\" target=\"_blank\" rel=\"noopener\">Vincent Paredes<\/a>, VP AI &amp; Technology<\/em><\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>El camino por delante<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hoy, woob-autofix se ocupa de los conectores de scraping de la vertical Wealth (cuentas de ahorro e inversi\u00f3n, no cubiertas por las API PSD2). Hemos empezado a ampliarlo a los conectores PSD2, empezando por los problemas de tipolog\u00eda de cuentas. La recuperaci\u00f3n de documentos deber\u00eda llegar pronto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El gran salto que tenemos por delante es la navegaci\u00f3n. Actualmente, el agente solo puede trabajar con las p\u00e1ginas que el conector ya conoce, al menos en la mayor\u00eda de los casos. Por eso estamos desarrollando un acceso controlado al navegador para que el agente pueda descubrir nuevas p\u00e1ginas de forma aut\u00f3noma, con restricciones estrictas.<\/p>\n\n\n\n<div style=\"height:23px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ad7950abca82&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ad7950abca82\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"514\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_3_es_1_5x-1200x514.webp\" alt=\"Visual 3: hoja de ruta\nFase AHORA: En producci\u00f3n \u2014 Conectores Wealth \u2014 Conectores de scraping para cuentas de ahorro e inversi\u00f3n (no cubiertas por las API PSD2) \u00b7 Iniciado \u2014 Conectores PSD2 \u2014 Empezando por los problemas de tipolog\u00eda de cuentas\nFase DESPU\u00c9S: Siguiente \u2014 Recuperaci\u00f3n de documentos \u2014 Deber\u00eda llegar pronto a los conectores PSD2 \u00b7 En desarrollo \u2014 Acceso al navegador \u2014 Navegaci\u00f3n controlada para que el agente descubra nuevas p\u00e1ginas, con restricciones estrictas\nFase M\u00c1S ADELANTE: Visi\u00f3n \u2014 Cerrar el c\u00edrculo \u2014 Detectar fallos en tiempo real desde la monitorizaci\u00f3n, sin necesidad de ticket \u00b7 Experimentando \u2014 Crear conectores \u2014 Integrar un nuevo banco o plataforma en una hora aproximadamente\nEscenario: HACIA D\u00d3NDE VAMOS \u00b7 CERRAR EL C\u00cdRCULO \u2014 00:00: Un banco publica un cambio que rompe el conector \u00b7 Durante la noche (color agente): El agente detecta el error, propone una correcci\u00f3n y abre una PR \u00b7 09:00 (color humano): Un desarrollador la revisa y la integra \u00b7 10:00 (color humano): El conector vuelve a funcionar.\" class=\"wp-image-28762\" title=\"\" srcset=\"https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_3_es_1_5x-1200x514.webp 1200w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_3_es_1_5x-790x339.webp 790w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_3_es_1_5x-350x150.webp 350w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_3_es_1_5x-768x329.webp 768w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_3_es_1_5x-1536x658.webp 1536w, https:\/\/www.powens.com\/wp-content\/uploads\/2026\/10\/261013_agentic_ai_at_powens_3_es_1_5x-2048x878.webp 2048w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Escenario ilustrativo. El equipo X-Connectors sigue revisando e integrando cada correcci\u00f3n.<\/figcaption><\/figure>\n\n\n\n<div style=\"height:23px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00e1s adelante, queremos cerrar el c\u00edrculo por completo. Hoy, el agente recoge tickets de JIRA: incidencias que ya han sido detectadas, clasificadas y notificadas por personas. Pero nuestra monitorizaci\u00f3n ya captura los fallos en tiempo real. Imagina: un banco publica un cambio que rompe el conector a medianoche. El agente detecta el error, propone una correcci\u00f3n y abre una PR. Un desarrollador la revisa a las 9 de la ma\u00f1ana. A las 10, el conector vuelve a funcionar. Hacia ah\u00ed vamos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por \u00faltimo, ya estamos experimentando con la otra cara de reparar conectores: crearlos. Imagina que cualquier petici\u00f3n de un cliente (o de un usuario final) para conectar un banco o una plataforma muy concretos, todav\u00eda no disponibles, pudiera atenderse en una hora. Puede que no sea <em>tan<\/em> descabellado, pero eso lo dejamos para otro art\u00edculo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusi\u00f3n: mantener la IA bajo control es un buen punto de partida<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Como veis, no estamos sustituyendo a los desarrolladores por IA. Les estamos dando palanca. <strong>El equipo X-Connectors sigue revisando cada correcci\u00f3n, sigue siendo el responsable del c\u00f3digo y sigue tomando las decisiones.<\/strong> Pero, en lugar de dedicar dos d\u00edas a un cambio de parsing, pueden dedicar quince minutos a revisar una pull request bien estructurada y reorientar su experiencia hacia trabajo m\u00e1s complejo y de mayor valor. Y les alegra saber que, por fin, algunas incidencias de menor prioridad se van a resolver.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En nuestro sector, la confianza lo es todo. Nuestros clientes dependen de nosotros para obtener datos financieros cr\u00edticos. Por eso elegimos el enfoque que mantiene a las personas al mando y usa la IA donde mejor rinde: velocidad, reconocimiento de patrones e iteraci\u00f3n incansable. Es la misma filosof\u00eda que gu\u00eda nuestro sistema de clasificaci\u00f3n por niveles, nuestra monitorizaci\u00f3n y todo lo que construimos. Hacer el trabajo dif\u00edcil. Ser transparentes al respecto. Y no ceder nunca en los controles.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este art\u00edculo es la segunda entrega de una serie sobre la calidad en Powens. En esta ocasi\u00f3n, explicamos c\u00f3mo hemos empezado a experimentar con agentes de IA para acelerar el mantenimiento de los conectores. Aviso: todav\u00eda estamos en una fase temprana y todo puede cambiar r\u00e1pidamente. Mantenimiento de la conectividad: no es una correcci\u00f3n de [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":28766,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","bs_cache_bypass_cache":0},"categories":[232],"tags":[],"class_list":["post-28755","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-acerca-powens"],"acf":[],"permalink_manager":null,"_links":{"self":[{"href":"https:\/\/www.powens.com\/es\/wp-json\/wp\/v2\/posts\/28755","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.powens.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.powens.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.powens.com\/es\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.powens.com\/es\/wp-json\/wp\/v2\/comments?post=28755"}],"version-history":[{"count":4,"href":"https:\/\/www.powens.com\/es\/wp-json\/wp\/v2\/posts\/28755\/revisions"}],"predecessor-version":[{"id":28777,"href":"https:\/\/www.powens.com\/es\/wp-json\/wp\/v2\/posts\/28755\/revisions\/28777"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.powens.com\/es\/wp-json\/wp\/v2\/media\/28766"}],"wp:attachment":[{"href":"https:\/\/www.powens.com\/es\/wp-json\/wp\/v2\/media?parent=28755"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.powens.com\/es\/wp-json\/wp\/v2\/categories?post=28755"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.powens.com\/es\/wp-json\/wp\/v2\/tags?post=28755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}