B. Historia del proyecto
App web que revisa minuto a minuto las métricas y los logs de una PyME y avisa antes de que la falla llegue al cliente. Lee el calendario del negocio para no confundir la nómina, la carga masiva o el respaldo con una falla, y cada alerta dice qué revisar. Opera sin IA ni licencias de pago.
Pruébalo en 1 minuto.
- Abre http://64.177.81.155/ y deja «Empresa: gracko» y «Conjunto de datos: Conjunto principal».
- Arrastra el reloj hasta el final. Verás 3 alertas en la semana: «Capacidad de disco», «Acceso y seguridad» y «Rendimiento del servicio».
- Pulsa cada alerta. En su detalle, «Nosotros llamamos primero · Modo demostración» indica cuánto antes llegó el aviso: 2,094 min (disco), 67 min (VPN) y 785 min (servicio). Es decir, unas 35 h, 1 h y 13 h. Es una hipótesis del equipo, porque no hay etiquetas oficiales.
Ninguna alerta salta por la nómina, la carga masiva o el respaldo nocturno. Con «Subir kit» puedes probarlo con tus propios datos.
Cómo leer nuestras cifras. No abrimos las respuestas oficiales del reto. Medimos contra los incidentes que el equipo dedujo de las métricas, los logs y la ficha de cada empresa. Usamos estas definiciones:
- Impacto: el primer ERROR de la falla en los logs, según nuestra lectura.
- A tiempo: la alerta llega antes de ese impacto.
- Falsa alarma: una alerta que no corresponde a ninguno de esos incidentes.
Cada cifra dice si es medida (y contra qué) o si es una hipótesis.
Inspiración
Una PyME suele enterarse de que falla su sistema cuando un cliente llama enojado. El reto ZIKIT pide acortar el tiempo entre la primera señal de falla y una acción efectiva, y demostrar la mejora. La trampa es que, si alertas por todo, nadie te cree.
Como sugirió el mentor, elegimos pulir una sola empresa: gracko, un despacho contable y fiscal de 12 personas. Su propia ficha ya anunciaba el riesgo: «/data sin alerta de capacidad desde hace 3 meses». En su semana también hay cosas que parecen fallas y no lo son: el respaldo de cada noche, una carga masiva de declaraciones y el cierre de nómina.
Queríamos que el dueño recibiera nuestro aviso, con algo concreto que hacer, antes de que sonara su teléfono. Hoy el aviso aparece en pantalla. Enviarlo por un canal real es el siguiente paso.
Qué hace
Es una app web que revisa minuto a minuto las métricas de una empresa (CPU, RAM, disco, tiempo de respuesta y errores) y sus logs. Cuando algo va camino de fallar, muestra una alerta en pantalla. Hoy no envía mensajes ni hace llamadas.
- Reproduce la semana con un reloj. Las alertas aparecen en el minuto en que el detector las habría emitido, y el detector solo usa datos hasta ese minuto.
- Cada alerta dice qué pasa y qué hacer. Trae su tipo, un resumen con cifras y la sección «Qué puedes revisar», en verde. Las guías de acción las escribió el equipo sin IA, y la app no las ejecuta. Por ejemplo, la alerta de disco del 10 oct a las 12:06 dice:
- Resumen: «Disco promedió 64.4 % en los últimos 15 min. Referencia habitual: 58.4 %».
- Qué revisar: «Liberar espacio en el volumen afectado (archivos temporales y exportaciones) · Averiguar qué proceso lo está llenando · Confirmar que el próximo respaldo tendrá lugar».
- «Cómo se detectó» muestra la evidencia, la confianza y los logs que pesaron en la decisión.
- Entiende el calendario del negocio. Lee la ficha de la empresa (
contexto.md) y arma sola la agenda que se ve en «Actividad programada». Así no confunde la nómina o una carga masiva con una falla.- Tampoco esconde fallas reales. La alerta de la VPN dice: «Ocurre durante «respaldo nocturno», un evento diario cuyo efecto habitual ya está incluido en lo normal de esa hora; esta desviación lo supera».
- Se adapta a datos nuevos. Aprende qué es «lo normal» a cada hora a partir del pasado de la misma semana, junto con el ruido y la rutina de los logs. Cuando hay ficha, no usa fechas fijas.
- Acepta empresas que no conoce. Con «Subir kit» se carga un .zip de hasta 80 MB y se puede elegir cualquier empresa del kit.
- «Descargar alertas (CSV)» baja las alertas de la empresa elegida, y «Entrega · todas las empresas (CSV)» las de todas. El formato es
tenant,timestamp,confianza,tipo. - La app solo lee
metricas.csv,logs.mdycontexto.md. Las carpetas de soluciones se saltan sin abrirse.
- «Descargar alertas (CSV)» baja las alertas de la empresa elegida, y «Entrega · todas las empresas (CSV)» las de todas. El formato es
- «Nosotros llamamos primero · Modo demostración». Indica cuántos minutos antes del impacto estimado por el equipo llegó el aviso. El dato se ve con el panel cerrado y siempre lleva el rótulo «hipótesis del equipo».
- Solo existe para gracko en el kit oficial, y aparece cuando el reloj ya pasó ese impacto.
- Con un kit subido, la app dice «Sin referencia de impacto para este kit. No se calcula anticipación». No inventamos la anticipación.
- La confianza va de 0 a 1. Es un índice provisional, no una probabilidad. Las 3 alertas de gracko tienen entre 0.50 y 0.58.
Por qué es costeable
- Avisa con tiempo para actuar. En las 55 corridas de gracko, la anticipación mediana fue de unas 35 h para el disco (2105 min), unas 13 h para el servicio (785 min) y 93 min para la VPN. Medida contra los impactos hipotéticos del equipo.
- No satura. Da 3 avisos por semana en gracko y ninguno por la nómina, la carga masiva o el respaldo. Medida contra hipótesis del equipo, en las mismas 55 corridas.
- Es barato de operar. No usa licencias ni IA de pago.
- Analiza una semana de gracko en unos 0.2–0.3 s. Medida en una laptop.
- La guía de despliegue pide 1 vCPU y 2 GB de RAM. La caché llena ocupa unos 610 MB. Medida en la laptop.
Cómo lo construimos
Somos tres personas y cada una trabajó con su propia IA de desarrollo:
- Rodrigo, con Claude Code: detector, API, despliegue e integración.
- América, con Codex: diseño e interfaz.
- Arturo, con Antigravity CLI: pruebas, medición y evidencia.
Las IA nos ayudaron a construir, pero la app no usa IA para detectar ni para sugerir acciones. Todo se hizo durante el hackatón: el primer commit del repositorio de trabajo es del 9 oct 2026 a las 11:05 (hora de Saltillo). El repositorio público es una copia limpia, sin ese historial.
- Primero miramos los datos, sin abrir las respuestas.
- El kit trae 4 empresas, con 54 corridas más la principal, de 9,200 minutos cada una. Medida en el kit.
- Nadie abrió las carpetas
_solucion, los archivosetiquetas.csvni el generador. - Descubrimos que las 54 corridas repiten la misma semana con distinto ruido. Por eso no servían para probar que la solución funciona con datos nuevos.
- Comparamos tres prototipos: reglas con calendario, uno estadístico (EWMA/CUSUM) y uno de aprendizaje automático (IsolationForest).
- El de reglas con calendario detectó a tiempo el 100 % (132/132), frente al 90.9 % y el 98.5 % de los otros, y sin alertas duplicadas. Medida contra 12 incidentes hipotéticos del equipo, en 11 corridas.
- Elegimos el camino entre todos. Las tres IA votaron como consejo técnico (C = 5, A = 4, B = 0) y las personas tenían veto. Sumamos condiciones como aprender solo del pasado y rotular el impacto como hipótesis.
- Revisión cruzada. Desde el 10 oct, todos los PR de código unidos a la rama principal tuvieron revisión cruzada de otra IA.
- Codex encontró fallos reales en el detector: una falla grave repetida se aprendía como «rutina». También los encontró en la subida, que aceptaba una CPU negativa.
- Claude Code revisó la pantalla y encontró 0 casos de datos posteriores al reloj. Medida con el kit oficial, una semana alterada y un kit con una empresa nueva.
- Pruebas automáticas. Son pruebas del software, no de la precisión del detector.
- El backend pasa 139 de 139 pruebas en cada modo: el adaptable y el detector anterior. Medida por Codex en su revisión y repetida por Claude Code sobre la versión integrada.
- La interfaz pasa 100 de 100 pruebas unitarias y 37 de 37 recorridos en el navegador. Medida por Claude Code sobre la versión integrada.
Retos que enfrentamos
- Señuelos que parecen fallas. El cierre de nómina multiplica por 3.3 el tiempo de respuesta, produce unos 2 errores/min y escribe ERROR en los logs. Medida en el kit. La solución fue el calendario de negocio:
- En el prototipo, al quitar el calendario, los señuelos con alerta subían de 0/57 a 38/57. Medida contra hipótesis del equipo.
- Que el calendario no esconda fallas reales. Inyectamos una falla de disco a las 11:00, en plena nómina, y la alerta llegó a las 11:01. Medida con una prueba sintética del equipo.
- No memorizar fechas. Una agenda escrita a mano con fechas fijas dio una falsa alarma en una semana desplazada. La agenda leída de la ficha dio las mismas 3 alertas, en sus nuevas fechas. Medida en semanas desplazadas por el equipo.
- No mirar el futuro. Si se corta la entrada en el minuto t, las alertas anteriores no cambian. Pasó 27 de 27 combinaciones de corrida y escenario. Medida con pruebas del equipo; no es una garantía matemática.
- Subidas peligrosas. Probamos zips maliciosos de verdad, y uno agotaba la memoria. Ahora:
- se revisa el índice del zip antes de abrirlo;
- se rechazan las rutas con «..» y se ignoran los enlaces simbólicos;
- cada corrida puede durar 31 días como máximo;
- cada kit lleva un identificador secreto de 128 bits.
Logros de los que estamos orgullosos
- 3 de 3 incidentes a tiempo en las 55 versiones de la semana pública de gracko (165/165), sin ninguna otra alerta. Medida contra hipótesis del equipo. Los umbrales se calibraron con 44 de esas 55 corridas, así que esto prueba que aguanta el ruido, no que funcione con datos nuevos.
- Avisa durante el ataque a la VPN. La alerta llegó 1 h 44 min después del primer intento fallido y 67 min antes del bloqueo de cuentas. Medida contra hipótesis del equipo, en el conjunto principal.
- Funciona en semanas alteradas. En 35 escenarios sintéticos (fechas desplazadas, niveles más altos, más ruido, una semana tranquila y otros), el detector actual avisó a tiempo en 979 de 979 casos, con 0 tardías y 0 falsas. El anterior: 613 de 979, con 75 tardías y 499 falsas. Medida contra resultados esperados que el equipo fijó antes de medir. Con este banco elegimos el diseño, así que no es una prueba independiente.
- Somos honestos con lo nuevo. En 10 escenarios sintéticos nuevos, que no se usaron para elegir el diseño, avisó a tiempo en 264 de 264, pero con 58 falsas alarmas. El anterior: 141 de 264, con 234 falsas. Misma medida. No prometemos cero falsas alarmas.
- Acepta empresas desconocidas. Tratamos cada empresa del kit como si fuera nueva, y sus alertas coincidieron con las de su calibración real en 43 de 44 corridas. Medida como coincidencia con nuestra propia calibración, no como acierto oficial.
- El jurado puede usar sus propios datos. Subimos una semana alterada (+7 días y disco +5). Gracko dio sus 3 alertas en las nuevas fechas (17 oct 13:06, 19 oct 23:24 y 20 oct 20:15), y la entrega trajo 14 alertas de las 4 empresas. Medida en ensayos del equipo, en Vultr y en local, contra las hipótesis desplazadas.
- El costo de IA en operación es 0. La detección y las acciones son reglas escritas por el equipo.
Log in or sign up for Devpost to join the conversation.