Innobate/Blog

Notas de la agencia

El vigilante que avisaba de todo menos de lo que importaba

4 de septiembre de 2026Jorge Almarza6 min de lectura

Hace unos días escribimos sobre automatizaciones que dicen "listo" sin haber hecho nada. Esta vez es peor, porque el control sí funcionaba.

Tenemos un flujo que revisa todas las mañanas la plata que sale: suscripciones que se cobran sin que las usemos, montos que cambian de un mes a otro, y pagos que fueron rechazados. Ese último punto es el importante. Si a la empresa le rebota una tarjeta, quiero saberlo el mismo día, porque de esa tarjeta cuelgan los servidores donde viven los sistemas de nuestros clientes.

El control lleva semanas avisando bien. Nos ha marcado pagos rechazados de dos proveedores distintos, con el monto y la tarjeta. Funciona, y hay registro de que funciona.

El 1 de septiembre le rebotó el cobro a nuestro proveedor de servidores. El 2 volvió a rebotar. El 3 otra vez. El 4 llegó un correo con el asunto "riesgo de suspensión de la cuenta". Nueve avisos en cuatro días.

El vigilante corrió los cuatro días a las nueve de la mañana. No dijo nada.

Los correos estaban ahí

Esta es la parte que me dejó pensando. No fue que el aviso no llegara, ni que se perdiera en una bandeja que nadie mira. Nosotros guardamos los correos de proveedores en nuestra propia base de datos, justamente para poder revisarlos con código. Los nueve estaban guardados, con fecha y asunto completo.

El control los tenía delante y no los vio.

Buscaba avisos de pago rechazado con dos condiciones: que el remitente contuviera la palabra "failed-payments", o que el asunto contuviera la palabra "unsuccessful".

Los correos de nuestro proveedor de servidores vienen de una dirección de soporte común y corriente, y sus asuntos dicen otras cosas: "no pudimos procesar tu pago", "falló el cobro de la tarjeta", "riesgo de suspensión". Ninguna de las dos condiciones se cumple. Ni una vez, en nueve correos.

Piénsalo así. Contratas a alguien para que revise el buzón y te avise cuando llegue una multa. Le explicas: son sobres blancos que dicen "INFRACCIÓN" arriba. Cumple perfecto durante meses. Un día la municipalidad cambia el formato y manda sobres cafés que dicen "AVISO DE COBRO". Siguen llegando al mismo buzón, la persona sigue revisando todos los días, y ninguna llega a tus manos. No se equivocó: hizo exactamente lo que le pediste.

Eso es lo que había en el código. Yo escribí ese filtro mirando los correos que tenía a la vista ese día, que eran todos del mismo intermediario de pagos y todos con la misma redacción. Sin darme cuenta, no construí un detector de pagos rechazados: construí un detector de los correos de un proveedor en particular.

El detalle que lo hacía peor

Había un segundo problema, más chico y más tonto.

La comparación de texto que estábamos usando distingue mayúsculas de minúsculas. Existe una versión que no distingue, y es un carácter más de escribir. Estábamos usando la que sí.

O sea que aunque el asunto hubiera dicho la palabra exacta que el filtro buscaba, pero con la primera letra en mayúscula, tampoco habría entrado. Y así venían: "Failed to process card payment", con F mayúscula.

Dos capas de ceguera, apiladas, en una línea de código que nadie había vuelto a leer en semanas porque el control estaba dando avisos y se veía sano.

Por qué esto es difícil de ver

Un control roto del todo se nota rápido: nunca avisa de nada, y alguien pregunta. Un control ciego a la mitad del mundo es otra cosa, porque la parte que sí ve funciona bien y te da confianza.

Cada aviso correcto que recibimos esas semanas fue evidencia, para mí, de que el vigilante estaba andando. Y era verdad. Andaba. Solo que estaba mirando por una ventana angosta y yo creía que miraba por la ventana entera.

Es la trampa de fondo con cualquier detector escrito a mano: uno lo calibra contra los ejemplos que tiene delante, y esos ejemplos nunca son todo el mundo posible. Son lo que llegó a la bandeja el día que te sentaste a escribirlo.

Cómo lo arreglamos y cómo lo probamos

Lo primero fue ampliar lo que el filtro reconoce, con las redacciones que los proveedores usan de verdad: falló el procesamiento, no pudimos procesar, pago rechazado, saldo vencido, riesgo de suspensión. Y cambiar la comparación por la que ignora mayúsculas.

Pero eso solo no basta, porque un filtro más ancho tiene el problema opuesto: empieza a avisar de cosas que no importan. Un vigilante que manda quince mensajes al día se apaga solo, porque uno deja de leerlo. Esa es una forma de falla tan real como la otra.

Así que antes de tocar el sistema, corrimos el filtro nuevo contra todo el histórico de correos que tenemos guardado, y contamos cuántos habría marcado. La respuesta fue treinta y nueve en varios meses, repartidos entre cinco proveedores, todos avisos de cobro reales. Ninguno era ruido.

Ese paso es el que se salta casi siempre. Cambiar el filtro toma dos minutos. Probar que el filtro nuevo pesca lo que se te escapó, sin ahogarte en lo que no importa, toma veinte. Y es el único que te dice si arreglaste algo o si te lo imaginaste.

También apareció un dato incómodo de regalo: revisando el histórico con el filtro nuevo, vimos que a la misma tarjeta ya le había rebotado un cobro en julio. Nadie se enteró tampoco. Se resolvió sola en el reintento del proveedor, así que no pasó nada, y por eso mismo nunca supimos que había pasado.

La pregunta para tus propios avisos

Si tienes alertas configuradas —de pagos, de errores, de stock, de lo que sea— hay una pregunta que se responde esta semana y no requiere que entiendas el código.

Anda a buscar un caso real que el aviso debería haber detectado, y fíjate si lo detectó.

No uno inventado. Uno que pasó de verdad: la vez que se cayó el servicio, el mes que no llegó el pago, el día que se acabó el stock. Si tu alerta estaba andando ese día y no dijo nada, ya sabes algo importante.

Un control que nunca falló no es un control confiable. Muchas veces es un control que no está mirando.

Nosotros descubrimos el nuestro de casualidad, revisando otra cosa. Preferimos contarlo a que suene como que acá nada se rompe. Se rompe igual que en todas partes. La diferencia está en cuánto demoras en enterarte, y eso sí se puede trabajar.

Innobate diseña, conecta y opera infraestructura de IA para empresas en Chile. Si algo de esto te sirvió y quieres verlo aplicado a tu operación, conversemos — la primera conversación es un diagnóstico, no una presentación de ventas.

INNOBATE SpA · Puente Alto, Región Metropolitana, Santiago · [email protected] · Política de privacidad