ANEXO 19
Señales FARO
Este anexo corresponde a la Fase 5 — Medición, etapa “Señales FARO”. Es la capa que toma los KPIs ya calculados y evaluados contra objetivos/umbrales, y detecta movimientos relevantes, desvíos, tendencias, anomalías o combinaciones iniciales que pueden transformarse luego en reglas, alertas, tensiones, recomendaciones y acciones.
1. Objetivo del anexo
El objetivo de las Señales FARO es identificar cuándo un KPI o conjunto de KPIs empieza a mostrar un comportamiento relevante.
La pregunta central es:
¿Qué movimiento del negocio merece atención antes de convertirse en alerta o tensión?
Ejemplo:
KPI:
Margen bruto = 21%
Objetivo:
28%
Umbral:
Amarillo entre 20% y 25%
Señal FARO:
Margen bruto bajo objetivo y con caída de 7 puntos respecto al mes anterior.
La señal todavía no necesariamente exige una acción inmediata. Pero sí le dice a FARO:
“Acá está pasando algo. Prestá atención.”
2. Tesis del Anexo 19
La tesis es:
FARO Connect no debe esperar a que el problema explote. Debe detectar señales tempranas.
Un dashboard tradicional muestra el resultado.
FARO debe detectar el movimiento.
Ejemplo:
Dashboard:
Stock actual: 320 unidades.
FARO:
Stock actual todavía está por encima del mínimo, pero la velocidad de venta subió 40% y los días de cobertura caen por debajo del plazo proveedor en 5 días. Señal temprana de stock crítico.
Ahí está la diferencia.
FARO no mira solamente el número. Mira:
valor actual
objetivo
umbral
variación
tendencia
velocidad del cambio
recurrencia
relación con otros KPIs
calidad del dato
impacto potencial
3. Diferencia entre KPI, señal, alerta y tensión
| Concepto | Qué es | Ejemplo |
|---|---|---|
| KPI | Indicador calculado. | Margen bruto 21%. |
| Señal | Movimiento relevante del KPI. | Margen cayó 7 puntos. |
| Regla | Condición lógica que evalúa la señal. | Si margen < 22% y descuento > 10%. |
| Alerta | Aviso formal de riesgo. | Margen crítico con descuento alto. |
| Tensión | Contradicción entre variables. | Ventas suben, margen baja y cobranza empeora. |
| Acción | Tarea concreta derivada. | Auditar descuentos mayores al 8%. |
La señal es el primer aviso. La alerta es el aviso formal. La tensión es la lectura sistémica.
4. Qué es una señal FARO
Una señal FARO es un evento analítico que indica que algo cambió, se desvió, aceleró, empeoró, mejoró o se volvió incoherente con el comportamiento esperado.
Ejemplos:
Ventas suben 18%.
Margen cae 7 puntos.
Días de cobranza aumentan 10 días.
Stock crítico sube de 4% a 13%.
Acciones vencidas superan 20%.
Proveedor baja cumplimiento de 92% a 70%.
Descuento promedio duplica el objetivo.
Cada señal debe responder:
Qué cambió.
Cuánto cambió.
Contra qué se compara.
Qué área afecta.
Qué KPI toca.
Qué tan confiable es.
Qué puede significar.
Qué regla puede activar.
Qué tensión podría anticipar.
5. Tipos de señales FARO
FARO debería manejar varios tipos de señales.
| Tipo de señal | Qué detecta | Ejemplo |
|---|---|---|
| Señal de desvío | KPI fuera de objetivo. | Margen bajo objetivo. |
| Señal de umbral | KPI cruza verde/amarillo/rojo. | Stock crítico pasa a rojo. |
| Señal de variación | Cambio fuerte entre períodos. | Gastos suben 18%. |
| Señal de tendencia | Movimiento sostenido. | Cobranza empeora 3 meses seguidos. |
| Señal de aceleración | Cambio cada vez más rápido. | Mora crece cada semana más. |
| Señal de anomalía | Valor raro frente al histórico. | Descuento de 40% en venta normal. |
| Señal de recurrencia | Problema repetido. | Tarea vencida por tercera vez. |
| Señal cruzada | Dos o más KPIs se mueven juntos. | Ventas suben y margen baja. |
| Señal de calidad de dato | Dato poco confiable. | Costos incompletos en 25% de ventas. |
| Señal predictiva | Riesgo futuro probable. | Stock cubrirá menos días que plazo proveedor. |
6. Estructura estándar de una señal FARO
Cada señal debería guardarse como un evento estructurado.
{
"signal_id": "SIG_2026_001",
"signal_code": "gross_margin_drop",
"kpi_code": "gross_margin_rate",
"area": "Comercial",
"current_value": 0.21,
"previous_value": 0.28,
"variation": -0.07,
"target": 0.28,
"status": "amarillo",
"severity": "alta",
"confidence": 0.84,
"detected_at": "2026-05-27T10:00:00",
"description": "Margen bruto cayó 7 puntos contra el período anterior.",
"possible_alerts": [
"margin_below_threshold"
],
"possible_tensions": [
"margen_deteriorado",
"crecimiento_no_rentable"
]
}
7. Biblioteca inicial de señales FARO
Una base inicial seria debería tener:
100 a 200 señales base
Escalable a:
500+ señales por industria, módulo, KPI, proceso y combinación de variables.
Distribución sugerida:
| Familia de señales | Cantidad inicial |
|---|---|
| Comerciales | 25-40 |
| Financieras | 25-40 |
| Stock / Compras | 25-40 |
| RRHH | 15-30 |
| Operaciones | 20-40 |
| Dirección / Workflow | 20-40 |
| Calidad de datos | 15-30 |
| Industria específica | 40-100 |
8. Fórmula general de variación
Variación = valor_actual - valor_anterior
def variacion(valor_actual, valor_anterior):
return valor_actual - valor_anterior
Ejemplo:
Margen anterior: 28%
Margen actual: 21%
Variación = -7 puntos
9. Fórmula de variación porcentual
Variación porcentual = (valor_actual - valor_anterior) / valor_anterior
def variacion_porcentual(valor_actual, valor_anterior):
if valor_anterior == 0:
return None
return (valor_actual - valor_anterior) / valor_anterior
Ejemplo:
Ventas anteriores: $80M
Ventas actuales: $100M
Variación = +25%
10. Fórmula de desvío contra objetivo
Desvío = valor_actual - objetivo
def desvio_vs_objetivo(valor_actual, objetivo):
return valor_actual - objetivo
Ejemplo:
Margen actual: 21%
Objetivo: 28%
Desvío: -7 puntos
11. Fórmula de severidad de señal
No todas las señales tienen la misma gravedad.
Severidad señal =
magnitud del desvío × 35%
+ impacto del KPI × 25%
+ velocidad del cambio × 15%
+ recurrencia × 15%
+ confianza del dato × 10%
def severidad_senal(magnitud, impacto_kpi, velocidad, recurrencia, confianza):
score = (
magnitud * 0.35 +
impacto_kpi * 0.25 +
velocidad * 0.15 +
recurrencia * 0.15 +
confianza * 0.10
)
if score >= 80:
return "critica"
elif score >= 60:
return "alta"
elif score >= 40:
return "media"
return "baja"
12. Señales comerciales
12.1 Señales base
| Señal | Qué detecta | Posible lectura |
|---|---|---|
| Ventas suben fuerte | Crecimiento mayor al esperado. | Puede ser positivo o riesgoso. |
| Ventas caen | Pérdida de volumen. | Problema comercial o de demanda. |
| Margen cae | Deterioro de rentabilidad. | Descuentos, costos o mix débil. |
| Descuento sube | Mayor presión comercial. | Riesgo de margen. |
| Ticket promedio baja | Menor valor por operación. | Venta fragmentada o menor calidad. |
| Vendedor vende con margen bajo | Venta de mala calidad. | Incentivo o control débil. |
| Cliente concentra ventas | Dependencia comercial. | Riesgo por concentración. |
| Canal pierde margen | Canal poco rentable. | Revisar costo y política comercial. |
12.2 Ejemplo: señal de margen deteriorado
def senal_margen_deteriorado(margen_actual, margen_anterior, caida_minima=0.05):
caida = margen_actual - margen_anterior
if caida <= -caida_minima:
return {
"senal": "margen_deteriorado",
"variacion": caida,
"severidad": "alta",
"lectura": "El margen cayó de forma relevante contra el período anterior."
}
return None
12.3 Ejemplo: señal de descuento alto
def senal_descuento_alto(descuento_promedio, umbral=0.10):
if descuento_promedio > umbral:
return {
"senal": "descuento_promedio_alto",
"valor": descuento_promedio,
"lectura": "El descuento promedio supera el umbral permitido.",
"posible_tension": "margen_deteriorado"
}
return None
13. Señales financieras
13.1 Señales base
| Señal | Qué detecta | Posible lectura |
|---|---|---|
| Días de cobranza suben | Cobranza más lenta. | Riesgo de caja. |
| Mora aumenta | Cartera deteriorada. | Cliente riesgoso. |
| Caja baja | Liquidez insuficiente. | Estrés financiero. |
| Gastos crecen más que ventas | Estructura pesada. | Rentabilidad en riesgo. |
| Cuentas por pagar vencidas | Compromisos atrasados. | Riesgo proveedor / financiero. |
| Flujo operativo negativo | Sale más caja de la que entra. | Riesgo operativo. |
| Cliente grande con mora | Volumen con riesgo. | Bloqueo o condición. |
13.2 Ejemplo: señal de cobranza lenta
def senal_cobranza_lenta(dias_actual, dias_objetivo=30):
if dias_actual > dias_objetivo:
return {
"senal": "cobranza_lenta",
"dias_actual": dias_actual,
"desvio": dias_actual - dias_objetivo,
"posible_tension": "caja_debil_con_ventas_altas"
}
return None
13.3 Ejemplo: gastos creciendo más que ventas
def senal_gasto_crece_mas_que_ventas(ventas_var, gastos_var):
if gastos_var > ventas_var:
return {
"senal": "gastos_crecen_mas_que_ventas",
"ventas_variacion": ventas_var,
"gastos_variacion": gastos_var,
"posible_tension": "estructura_sobredimensionada"
}
return None
14. Señales de stock
14.1 Señales base
| Señal | Qué detecta | Posible lectura |
|---|---|---|
| Stock bajo mínimo | Producto crítico. | Riesgo de quiebre. |
| Cobertura menor al plazo proveedor | Reposición tardía. | Stock crítico futuro. |
| Stock total sube y rotación baja | Capital parado. | Stock inmovilizado. |
| Quiebres repetidos | Faltantes frecuentes. | Mala reposición. |
| Diferencia físico-sistema | Inventario poco confiable. | Riesgo operativo. |
| Producto sin movimiento | Stock muerto. | Capital inmovilizado. |
14.2 Señal de cobertura insuficiente
def senal_cobertura_insuficiente(stock_actual, venta_promedio_diaria, plazo_proveedor):
if venta_promedio_diaria == 0:
return None
dias_cobertura = stock_actual / venta_promedio_diaria
if dias_cobertura < plazo_proveedor:
return {
"senal": "cobertura_insuficiente",
"dias_cobertura": dias_cobertura,
"plazo_proveedor": plazo_proveedor,
"posible_tension": "stock_critico_comercial"
}
return None
14.3 Señal de stock inmovilizado
def senal_stock_inmovilizado(dias_sin_movimiento, umbral_dias=90):
if dias_sin_movimiento >= umbral_dias:
return {
"senal": "stock_inmovilizado",
"dias_sin_movimiento": dias_sin_movimiento,
"lectura": "Producto sin rotación relevante.",
"posible_tension": "capital_inmovilizado"
}
return None
15. Señales de compras y proveedores
15.1 Señales base
| Señal | Qué detecta | Posible lectura |
|---|---|---|
| Proveedor demora más | Plazo de entrega sube. | Riesgo de abastecimiento. |
| Cumplimiento proveedor cae | Menor confiabilidad. | Proveedor crítico. |
| Compras urgentes aumentan | Mala planificación. | Compras reactivas. |
| Costo de compra sube | Margen futuro en riesgo. | Actualizar precios. |
| Dependencia de proveedor aumenta | Concentración de abastecimiento. | Riesgo operativo. |
| Recepciones con diferencia | Problemas de control. | Auditoría de compras. |
15.2 Señal de proveedor crítico
def senal_proveedor_critico(cumplimiento, dependencia):
if cumplimiento < 0.75 and dependencia > 0.40:
return {
"senal": "proveedor_critico",
"cumplimiento": cumplimiento,
"dependencia": dependencia,
"posible_tension": "proveedor_critico",
"accion_sugerida": "buscar_proveedor_alternativo"
}
return None
16. Señales de RRHH
16.1 Señales base
| Señal | Qué detecta | Posible lectura |
|---|---|---|
| Comisión sube más que margen | Incentivo desalineado. | Comisión mal diseñada. |
| Ausentismo sube | Menor disponibilidad. | Riesgo operativo. |
| Costo laboral sube más que ventas | Estructura pesada. | Costo laboral desalineado. |
| Productividad cae | Menor resultado por persona. | Productividad invisible. |
| Tareas vencidas por responsable | Débil ejecución. | Accountability débil. |
| Dependencia de persona clave | Riesgo de continuidad. | Proceso frágil. |
16.2 Señal de comisión desalineada
def senal_comision_desalineada(comision_var, margen_var):
if comision_var > 0 and margen_var < 0:
return {
"senal": "comision_desalineada",
"lectura": "Las comisiones crecen mientras el margen se deteriora.",
"posible_tension": "comision_comercial_desalineada"
}
return None
17. Señales de operaciones y workflow
17.1 Señales base
| Señal | Qué detecta | Posible lectura |
|---|---|---|
| Tareas vencidas suben | Ejecución débil. | Dirección sin ejecución. |
| Tiempo de cierre aumenta | Lento avance. | Cuello de botella. |
| Reclamos reincidentes | Problema no resuelto. | Causa raíz pendiente. |
| SLA cae | Promesa operativa incumplida. | Sobrecarga operativa. |
| Acciones sin responsable | Falta de accountability. | Gestión débil. |
| Acciones cerradas sin impacto medido | Cierre administrativo, no real. | Aprendizaje débil. |
17.2 Señal de dirección sin ejecución
def senal_direccion_sin_ejecucion(decisiones, acciones_creadas, acciones_vencidas):
if decisiones == 0:
return None
ratio_acciones = acciones_creadas / decisiones
ratio_vencidas = acciones_vencidas / acciones_creadas if acciones_creadas else 0
if ratio_acciones < 0.70 or ratio_vencidas > 0.20:
return {
"senal": "direccion_sin_ejecucion",
"ratio_acciones": ratio_acciones,
"ratio_vencidas": ratio_vencidas,
"posible_tension": "direccion_sin_ejecucion"
}
return None
18. Señales de calidad de datos
Las señales de calidad de datos son fundamentales porque FARO no debe actuar con falsa seguridad.
| Señal | Qué detecta | Consecuencia |
|---|---|---|
| Campo crítico incompleto | Falta costo, cliente, producto, responsable. | Bloquea KPIs avanzados. |
| Duplicados altos | Clientes, productos o proveedores repetidos. | KPIs distorsionados. |
| Dato desactualizado | Stock o costos viejos. | Decisiones débiles. |
| Baja trazabilidad | No se sabe origen. | Baja confianza. |
| Inconsistencia entre fuentes | ERP ≠ banco / stock físico ≠ sistema. | Validación necesaria. |
| Carga atrasada | Datos llegan tarde. | Score desactualizado. |
18.1 Señal de costo faltante
def senal_costo_faltante(registros_sin_costo, registros_totales):
if registros_totales == 0:
return None
ratio = registros_sin_costo / registros_totales
if ratio > 0.15:
return {
"senal": "costo_unitario_incompleto",
"ratio": ratio,
"impacto": "margen_no_confiable",
"requiere_validacion": True
}
return None
19. Señales cruzadas
Las señales cruzadas son las más valiosas, porque empiezan a anticipar tensiones.
Ejemplo 1: crecimiento no rentable
Ventas suben
+ margen baja
+ descuentos suben
= señal cruzada de crecimiento riesgoso
Código:
def senal_cruzada_crecimiento_riesgoso(ventas_var, margen_var, descuento_var):
condiciones = [
ventas_var > 0.15,
margen_var < -0.05,
descuento_var > 0.04
]
if sum(condiciones) >= 2:
return {
"senal": "crecimiento_riesgoso",
"posible_tension": "crecimiento_no_rentable",
"severidad": "alta"
}
return None
Ejemplo 2: stock mal compuesto
Stock total sube
+ rotación baja
+ quiebres aumentan
= señal cruzada de stock mal compuesto
def senal_cruzada_stock_mal_compuesto(stock_var, rotacion_var, quiebres):
if stock_var > 0.10 and rotacion_var < -0.10 and quiebres > 0:
return {
"senal": "stock_mal_compuesto",
"posible_tension": "stock_mal_compuesto",
"severidad": "alta"
}
return None
Ejemplo 3: cliente grande riesgoso
Venta por cliente alta
+ margen bajo
+ mora alta
= señal cruzada de cliente riesgoso
def senal_cliente_grande_riesgoso(concentracion_cliente, margen_cliente, dias_mora):
if concentracion_cliente > 0.15 and margen_cliente < 0.20 and dias_mora > 30:
return {
"senal": "cliente_grande_riesgoso",
"posible_tension": "cliente_grande_riesgoso",
"accion_sugerida": "revisar_credito_y_condiciones"
}
return None
20. Señales tempranas
Una señal temprana detecta riesgo antes de que el KPI esté en rojo.
Ejemplo:
Stock todavía no está bajo mínimo,
pero la velocidad de venta aumentó y el proveedor demora más que la cobertura disponible.
Código:
def senal_temprana_stock(stock_actual, stock_minimo, venta_promedio_diaria, plazo_proveedor):
if venta_promedio_diaria == 0:
return None
dias_cobertura = stock_actual / venta_promedio_diaria
if stock_actual > stock_minimo and dias_cobertura < plazo_proveedor:
return {
"senal": "stock_critico_futuro",
"dias_cobertura": dias_cobertura,
"lectura": "El stock aún no está bajo mínimo, pero no cubre el plazo de reposición.",
"accion_sugerida": "anticipar_reposicion"
}
return None
Esto es muy FARO: no mirar solo el incendio, mirar el humo.
21. Señales de mejora
FARO también debe detectar mejoras. No todo es castigo corporativo.
| Señal | Qué detecta |
|---|---|
| Margen mejora | Recuperación de rentabilidad. |
| Cobranza mejora | Mejor flujo de caja. |
| Stock crítico baja | Mejor abastecimiento. |
| Acciones vencidas bajan | Mejor ejecución. |
| Calidad de datos sube | Mayor confiabilidad. |
| Proveedor mejora cumplimiento | Menor riesgo operativo. |
Ejemplo:
def senal_mejora_margen(margen_actual, margen_anterior, mejora_minima=0.03):
if margen_actual - margen_anterior >= mejora_minima:
return {
"senal": "margen_en_recuperacion",
"lectura": "El margen muestra mejora relevante.",
"impacto_score": "positivo"
}
return None
Esto sirve para que FARO también refuerce buenas prácticas.
22. Señales y frecuencia
No todas las señales deben evaluarse con la misma frecuencia.
| Tipo de señal | Frecuencia recomendada |
|---|---|
| Ventas | diaria |
| Margen | diaria / semanal |
| Caja | diaria |
| Cobranza | diaria / semanal |
| Stock crítico | diaria / varias veces al día |
| Compras | diaria / semanal |
| Gastos | semanal / mensual |
| RRHH | semanal / mensual |
| Workflow | tiempo real / diaria |
| Calidad de datos | por carga / diaria |
| FARO Score | diaria / semanal |
23. Estados de una señal
| Estado | Significado |
|---|---|
| Detectada | FARO identificó la señal. |
| Validada | La señal tiene datos suficientes. |
| Observada | La señal existe, pero con baja confianza. |
| Convertida en alerta | Cumplió regla formal. |
| Agrupada en tensión | Se combinó con otras señales. |
| Descartada | No era relevante o era ruido. |
| Cerrada | La condición dejó de existir. |
| Recurrente | Aparece repetidamente. |
24. Tabla SQL de señales FARO
CREATE TABLE signal_events (
signal_id TEXT PRIMARY KEY,
signal_code TEXT NOT NULL,
company_id TEXT,
branch_id TEXT,
area_id TEXT,
kpi_code TEXT,
signal_type TEXT,
current_value NUMERIC,
previous_value NUMERIC,
target_value NUMERIC,
variation NUMERIC,
variation_rate NUMERIC,
status TEXT,
severity TEXT,
confidence NUMERIC,
description TEXT,
related_alerts JSONB,
related_tensions JSONB,
source_kpi_result_id TEXT,
detected_at TIMESTAMP DEFAULT now(),
closed_at TIMESTAMP
);
25. Tabla de biblioteca de señales
CREATE TABLE signal_library (
signal_code TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
signal_type TEXT,
module TEXT,
area_id TEXT,
kpi_code TEXT,
detection_logic JSONB,
default_severity TEXT,
related_alerts JSONB,
related_tensions JSONB,
suggested_actions JSONB,
industry_scope JSONB,
active BOOLEAN DEFAULT true,
created_at TIMESTAMP DEFAULT now(),
updated_at TIMESTAMP DEFAULT now()
);
26. Ejemplo de señal en biblioteca
{
"signal_code": "gross_margin_drop",
"name": "Caída de margen bruto",
"description": "Detecta una caída relevante del margen bruto frente al período anterior.",
"signal_type": "variacion",
"module": "Comercial",
"area_id": "AREA_COMERCIAL",
"kpi_code": "gross_margin_rate",
"detection_logic": {
"condition": "current_value - previous_value <= -0.05"
},
"default_severity": "alta",
"related_alerts": [
"margin_drop_alert"
],
"related_tensions": [
"margen_deteriorado",
"crecimiento_no_rentable"
],
"suggested_actions": [
"auditar_descuentos",
"revisar_costos",
"analizar_mix_productos"
],
"industry_scope": [
"construction_supplies",
"retail",
"manufacturing"
]
}
27. Motor de detección de señales
Flujo recomendado:
KPI calculado
→ comparación con objetivo
→ comparación con histórico
→ cálculo de variación
→ detección de tendencia
→ evaluación de severidad
→ cálculo de confianza
→ registro de señal
→ posible regla / alerta / tensión
Código conceptual:
def detectar_senales(kpi_result, kpi_history, target_config):
senales = []
valor_actual = kpi_result["value"]
valor_anterior = kpi_history[-1]["value"] if kpi_history else None
objetivo = target_config.get("target_value")
if objetivo is not None:
desvio = valor_actual - objetivo
if desvio < 0:
senales.append({
"senal": "desvio_bajo_objetivo",
"desvio": desvio
})
if valor_anterior is not None:
variacion = valor_actual - valor_anterior
if abs(variacion) >= target_config.get("variation_threshold", 0):
senales.append({
"senal": "variacion_relevante",
"variacion": variacion
})
return senales
28. Señales y reglas de negocio
Una señal sola puede no activar alerta. Pero puede alimentar una regla.
Ejemplo:
Señal 1:
Margen cae.
Señal 2:
Descuento sube.
Regla:
Si margen cae más de 5 puntos y descuento sube más de 4 puntos, activar alerta comercial.
Código:
def regla_alerta_margen_descuento(senales):
codigos = [s["senal"] for s in senales]
if "margen_deteriorado" in codigos and "descuento_promedio_alto" in codigos:
return {
"alerta": "margen_deteriorado_por_descuentos",
"severidad": "alta",
"responsable": "Gerente Comercial"
}
return None
29. Señales y tensiones
Una tensión se forma cuando varias señales se combinan.
Ejemplo:
Señales:
- ventas_suben
- margen_baja
- descuento_sube
- cobranza_empeora
Tensión:
crecimiento_no_rentable
Código:
def detectar_tension_desde_senales(senales):
codigos = set(s["senal"] for s in senales)
if {
"ventas_suben",
"margen_deteriorado",
"descuento_promedio_alto"
}.issubset(codigos):
return {
"tension": "crecimiento_no_rentable",
"confianza": "alta",
"acciones": [
"auditar_descuentos",
"revisar_comisiones",
"analizar_cobranza"
]
}
return None
30. Señales y FARO Score
Las señales pueden afectar FARO Score de dos formas:
1. Directamente, si son críticas.
2. Indirectamente, si se convierten en alertas o tensiones.
Ejemplo:
| Señal | Impacto posible |
|---|---|
| Margen cae fuerte | baja Score Comercial. |
| Cobranza empeora | baja Score Financiero. |
| Stock crítico futuro | baja Score Operativo preventivo. |
| Acciones vencidas suben | baja Score de Ejecución. |
| Calidad de datos mejora | sube confianza del Score. |
| Margen recupera | mejora Score Comercial. |
Código simple:
def impacto_senal_score(severidad, tipo):
if tipo == "mejora":
return 2
if severidad == "critica":
return -5
if severidad == "alta":
return -3
if severidad == "media":
return -1
return 0
31. Ejemplo completo: señal comercial
Datos
Ventas: +18%
Margen anterior: 28%
Margen actual: 21%
Descuento anterior: 6%
Descuento actual: 12%
Señales FARO
Ventas suben fuerte.
Margen cae 7 puntos.
Descuento promedio duplica el objetivo.
Lectura
El crecimiento comercial no parece sano. Aumenta la venta, pero se deteriora el margen y crece la presión por descuentos.
Posible alerta
Margen deteriorado por descuentos.
Posible tensión
Crecimiento no rentable.
Acción sugerida
Auditar ventas con descuento mayor al 8%.
Revisar margen por vendedor.
Revisar política de comisión.
32. Ejemplo completo: señal de stock
Datos
Stock actual: 180 unidades
Stock mínimo: 150 unidades
Venta promedio diaria: 45 unidades
Plazo proveedor: 7 días
Cálculo
Días de cobertura = 180 / 45 = 4 días
Señal FARO
Aunque el stock actual está por encima del mínimo, la cobertura es menor al plazo proveedor.
Lectura
Riesgo de stock crítico futuro. Si no se repone ahora, el producto puede quedar sin disponibilidad antes de recibir nueva mercadería.
Acción sugerida
Activar reposición preventiva.
Consultar proveedor alternativo.
33. Ejemplo completo: señal de dirección
Datos
Decisiones tomadas: 20
Acciones creadas: 12
Acciones vencidas: 6
Problemas reincidentes: 4
Señales FARO
Baja conversión de decisiones en acciones.
Alta proporción de acciones vencidas.
Problemas repetidos.
Lectura
La empresa decide más de lo que ejecuta. Hay riesgo de dirección sin seguimiento real.
Tensión posible
Dirección sin ejecución.
Acción sugerida
Activar workflow obligatorio con responsable, vencimiento, estado y medición posterior.
34. Señales por industria
Construcción / insumos
Descuento promedio alto.
Margen por producto clave cae.
Stock crítico en productos de alta rotación.
Cliente de obra con mora creciente.
Comisión comercial sube con margen bajo.
Canje pendiente sin evaluación financiera.
Referidos sin trazabilidad.
Retail
Promoción mueve venta pero baja margen.
Quiebre de producto estrella.
Sucursal con ticket promedio en caída.
Stock alto con rotación baja.
Merma creciente.
Salud
Ocupación alta con demora creciente.
Turnos perdidos.
Profesional saturado.
Costo por prestación sube.
Reclamos aumentan.
Logística
Costo por kilómetro sube.
SLA cae.
Combustible crece más que entregas.
Flota ociosa.
Mantenimiento reactivo aumenta.
Hotelería
Ocupación alta con tarifa baja.
Canal caro domina ventas.
Costo por habitación ocupada sube.
Reclamos aumentan.
Cancelaciones crecen.
35. Priorización de señales
No todas las señales deben escalar.
Prioridad señal =
severidad × 30%
+ impacto económico × 25%
+ recurrencia × 15%
+ relación con tensión crítica × 15%
+ confianza del dato × 10%
+ cercanía a vencimiento/impacto × 5%
Código:
def prioridad_senal(severidad, impacto, recurrencia, tension_critica, confianza, urgencia):
return round(
severidad * 0.30 +
impacto * 0.25 +
recurrencia * 0.15 +
tension_critica * 0.15 +
confianza * 0.10 +
urgencia * 0.05,
2
)
36. Riesgos si no existe capa de señales
| Riesgo | Consecuencia |
|---|---|
| FARO detecta tarde | El problema ya explotó. |
| KPIs quedan estáticos | No se entiende tendencia. |
| Alertas son demasiado bruscas | Falta etapa previa. |
| Tensiones pierden contexto | No se sabe cómo empezó el problema. |
| Dirección recibe ruido | Todo parece alerta. |
| No hay prevención | Solo reacción. |
| Score baja sin explicación | No se entiende qué movimiento lo afectó. |
37. Output final del Anexo 19
Al finalizar este anexo, FARO debe tener definido:
1. Biblioteca inicial de señales FARO.
2. Tipos de señales.
3. Señales por KPI.
4. Señales por área.
5. Señales por industria.
6. Señales de desvío.
7. Señales de variación.
8. Señales de tendencia.
9. Señales tempranas.
10. Señales cruzadas.
11. Señales de calidad de datos.
12. Fórmulas de variación y desvío.
13. Severidad de señales.
14. Confianza de señales.
15. Priorización de señales.
16. Estados de señales.
17. Tabla de eventos de señales.
18. Relación señal → regla.
19. Relación señal → alerta.
20. Relación señal → tensión.
21. Relación señal → acción.
22. Relación señal → FARO Score.
38. Conexión con otros anexos
| Próximo anexo | Qué recibe desde Anexo 19 |
|---|---|
| Anexo 17 — Biblioteca de KPIs | KPIs calculados que generan señales. |
| Anexo 18 — Objetivos y umbrales | Objetivos contra los que se detectan desvíos. |
| Anexo 20 — Reglas de negocio | Señales que alimentan condiciones lógicas. |
| Anexo 21 — Alertas FARO | Señales que se convierten en alertas. |
| Anexo 22 — Biblioteca de tensiones | Señales cruzadas que forman tensiones. |
| Anexo 23 — Diagnóstico ejecutivo | Señales interpretadas en lenguaje directivo. |
| Anexo 24 — Confianza del diagnóstico | Confianza de señales según calidad de datos. |
| Anexo 25 — Priorización ejecutiva | Señales ordenadas por impacto y urgencia. |
| Anexo 26 — Recomendaciones FARO | Señales que orientan recomendaciones. |
| Anexo 29 — Biblioteca de acciones | Acciones sugeridas según señal. |
| Anexo 35 — FARO Score | Señales que explican subas y bajas del score. |
| Anexo 36 — Aprendizaje | Historial de señales para aprender patrones. |
Las Señales FARO son el primer nivel de inteligencia sobre los KPIs. Detectan desvíos, variaciones, tendencias, anomalías, señales tempranas y movimientos cruzados entre áreas. Una señal todavía no siempre es una alerta, pero le permite a FARO anticipar qué puede convertirse en problema, tensión, acción o impacto en el FARO Score.