Detecta la fatiga creativa
3 días antes de que queme presupuesto
Fatigue Radar puntúa cada anuncio de Meta Ads con un Fatigue Score 0–1, prioriza las alertas que importan y las traduce a euros. Validado sobre datos reales de campañas de la vertical Energía.
- Precisión en el top‑10 de alertas
- 80%
- Impacto neto en 3 meses de test
- +8.579 €
- Proyección anual vs regla manual
- ≈80.000 €
- Vida útil mediana de una creatividad
- 7 días
Cada creatividad tiene fecha de caducidad. Nadie la ve venir.
En Meta Ads toda creatividad se quema: el público la ve demasiadas veces, el CTR cae, el CPM sube y el coste por lead se dispara. Cuando el media buyer lo detecta, ya lleva días pagando por un anuncio agotado.
La alternativa habitual —una regla manual tipo «si el CTR cae un 15 %, alerta»— tampoco funciona: sobre‑reacciona. Pausa creatividades sanas, satura al equipo de avisos y convierte el ahorro en pérdida.
Y el margen de maniobra es corto: la mitad de las creatividades se fatiga en solo 7 días.
Detección tardía
La señal llega cuando la degradación ya es severa y el presupuesto está gastado.
Falsas alarmas en cadena
La regla manual emite 357 alertas en 3 meses con solo un 31 % de acierto.
Coste real: −32.808 €
Es el impacto neto de la regla manual en el periodo de test. Cada falsa alarma pausa un anuncio que funcionaba.
Un Fatigue Score predictivo, explicable y accionable
El modelo no persigue el CTR absoluto: aprende la degradación futura de cada anuncio y la convierte en un score de 0 a 1 que cualquier media buyer puede leer de un vistazo.
Predice el CTR futuro
Con 33 señales por anuncio y día —tendencias de CTR, frecuencia, CPM, gasto acumulado— estima el rendimiento de los próximos 2‑3 días. R² de 0,78 en test.
Mide la degradación
Compara la predicción con la media de los últimos 7 días del propio anuncio: cuánto va a caer respecto a su baseline, no respecto a la cuenta.
Emite la alerta
La degradación se normaliza a un Fatigue Score 0–1. Por encima del umbral —elegido por euros netos, no por métricas abstractas— salta una alerta explicada con SHAP.
Validado en 3 meses de datos que nunca vio
Split temporal estricto: el test son los últimos 3 meses, posteriores a todo el entrenamiento. Intervalos de confianza por bootstrap.
El modelo gana dinero. La regla manual lo destruye.
Impacto neto = gasto evitado en anuncios fatigados − gasto de las falsas alarmas. Mismo periodo de test, misma vertical, horizonte de 3 días por alerta.
Extrapolando la simulación (62 días de test) a un año: ≈ 80.000 € de diferencia anual frente a la regla manual, en una sola vertical. Es una proyección, no una promesa — pero la dirección es inequívoca.
El recomendador ya está integrado en la web
No hace falta Streamlit ni instalar nada: abre el recomendador, elige un día del test set, ajusta el umbral y obtén ranking de alertas, detalle por anuncio con SHAP y acciones recomendadas. Usa las predicciones reales exportadas del pipeline LGBM Residual.
67 anuncios · 62 días de test · explicaciones SHAP · sin conexión live a Meta Ads
- 🔴 Rotar ya Video_Testimonio_A · FS 0,78 · −38 % CTR prev. · 123 € en riesgo
- 🟠 Preparar sustituta Estatico_Precio_B · FS 0,62 · −24 % · 105 €
- 🟡 Monitorizar Video_UGC_D · FS 0,38 · −9 % · 156 €
Pulsa para abrir el recomendador completo →
Ranking accionable
Semáforo sano / vigilar / riesgo / crítico. Lo urgente, arriba; lo sano, fuera de la vista.
Umbral en euros
La sensibilidad se calibra por impacto neto, y el equipo puede ajustarla según su capacidad de rotación.
Alertas explicadas
Cada alerta dice por qué: frecuencia, tendencia, antigüedad. SHAP traducido a lenguaje de negocio.
Impacto visible
Presupuesto protegido por alerta y ahorro acumulado frente a la regla manual.
Un modelo diseñado para desconfiar de sí mismo
Antes de fiarnos de una métrica puntual, la sometimos a validación temporal, remuestreo y análisis de supervivencia.
¿Quieres verlo por dentro?
Código, notebooks y dashboard completo, con cada decisión metodológica documentada.
Tras re-ejecutar el pipeline, actualiza los datos con python scripts/build_radar_data.py