← Volver al índice de anexos
Macrobloque 4·Inteligencia·Anexo 22 / 40

Anexo 22 · Biblioteca de tensiones

Etapa: Fase 6.3
NDA OBLIGATORIO ACTIVO PROPIO PENDIENTE

ANEXO 22

Biblioteca de Tensiones FARO

Este anexo corresponde a la Fase 6 — Inteligencia, etapa “Tensiones FARO”. Es una de las capas más diferenciales de FARO Connect, porque acá el sistema deja de mirar alertas aisladas y empieza a detectar contradicciones reales del negocio.


1. Objetivo del anexo

El objetivo de la Biblioteca de Tensiones FARO es definir los patrones de conflicto, contradicción o desalineación que pueden aparecer entre áreas, KPIs, procesos, responsables y decisiones.

La pregunta central es:

¿Qué problema real está mostrando la combinación de datos, KPIs, señales y alertas?

Ejemplo simple:

Ventas suben
+ margen baja
+ descuentos suben
+ cobranza empeora
= tensión: crecimiento no rentable

Una alerta dice:

Margen bajo.

Una tensión dice:

La empresa está vendiendo más, pero ese crecimiento está deteriorando rentabilidad, caja e incentivos comerciales.

Ahí está la diferencia. La tensión no mira un número. Mira el sistema.


2. Tesis del Anexo 22

La tesis es:

FARO Connect no debe limitarse a mostrar alertas. Debe detectar tensiones estructurales entre áreas.

Una empresa puede tener muchos indicadores en verde y, aun así, estar acumulando un problema serio.

Ejemplo:

Ventas: verde
Stock: amarillo
Cobranza: amarillo
Margen: rojo
Comisiones: verde para vendedores

Un dashboard común diría:

Ventas bien, margen mal.

FARO debe decir:

Hay una tensión comercial-financiera: el equipo comercial está generando volumen con descuentos altos, margen deteriorado y cobranza más lenta. Además, la comisión puede estar premiando ventas que no son sanas.

Eso es dirección. Lo otro es decoración con gráficos.


3. Qué es una tensión FARO

Una tensión FARO es una contradicción relevante entre variables del negocio que puede afectar rentabilidad, caja, operación, ejecución, clientes, personas, stock, proveedores o estrategia.

Una tensión suele aparecer cuando:

Un KPI mejora, pero otro empeora.
Un área cumple su objetivo, pero perjudica a otra.
Una decisión genera un efecto secundario negativo.
Una acción resuelve un síntoma, pero no la causa.
Un incentivo premia una conducta equivocada.
Un proceso parece funcionar, pero deja riesgo oculto.

Ejemplo:

Comercial vende más.
Finanzas cobra peor.
Stock queda crítico.
RRHH paga más comisión.
Dirección ve crecimiento, pero no rentabilidad.

Tensión:

Crecimiento no rentable con incentivo comercial desalineado.

4. Diferencia entre alerta y tensión

Concepto Qué mira Ejemplo
Alerta Un evento o desvío puntual. Margen bruto bajo.
Tensión Una combinación de eventos con conflicto sistémico. Ventas suben, margen baja y cobranza empeora.
Alerta Suele tener un responsable directo. Responsable Comercial.
Tensión Suele involucrar varias áreas. Comercial, Finanzas, Stock, RRHH.
Alerta Puede resolverse con una tarea puntual. Auditar descuentos.
Tensión Puede requerir rediseñar política, proceso o incentivo. Cambiar política comercial y comisión.

La alerta es el síntoma. La tensión es el patrón de fondo.


5. Volumen recomendado de tensiones FARO

Para una biblioteca inicial seria:

300 a 500 tensiones iniciales

Para una versión avanzada:

1.000+ tensiones

Distribución sugerida:

Familia de tensiones Cantidad inicial
Comercial 40-70
Finanzas 40-70
Stock 40-70
Compras / proveedores 30-60
RRHH / incentivos 30-60
Operaciones 40-70
Dirección / ejecución 40-70
Clientes 30-50
Calidad de datos 20-40
Industria específica 100-250

Para MVP no hace falta activar 500. Conviene arrancar con:

20 a 50 tensiones críticas

Bien diseñadas, explicables y accionables.


6. Estructura estándar de una tensión FARO

Cada tensión debe tener una ficha formal.

{
  "tension_code": "TENSION_COMMERCIAL_001",
  "name": "Crecimiento no rentable",
  "description": "La empresa aumenta ventas, pero el crecimiento deteriora margen, cobranza o caja.",
  "main_area": "Comercial",
  "related_areas": ["Finanzas", "Stock", "RRHH"],
  "related_kpis": [
    "ventas_netas",
    "margen_bruto",
    "descuento_promedio",
    "dias_cobranza",
    "comision_sobre_margen"
  ],
  "related_alerts": [
    "margin_critical",
    "discount_high",
    "collection_slow"
  ],
  "conditions": {
    "ventas_var": "> 0.15",
    "margen_var": "< -0.05",
    "descuento_promedio": "> 0.10"
  },
  "severity_base": "alta",
  "responsible_role": "Gerente Comercial",
  "consulted_roles": ["Finanzas", "Stock", "RRHH"],
  "suggested_actions": [
    "auditar_descuentos_altos",
    "revisar_politica_comercial",
    "revisar_formula_comision",
    "priorizar_cobranza"
  ],
  "score_impact": -8,
  "confidence_min": 0.75,
  "industry_scope": ["construction_supplies", "retail", "manufacturing"]
}

7. Campos obligatorios de una tensión

Campo Para qué sirve
tension_code Identificador único.
name Nombre claro de la tensión.
description Qué problema expresa.
main_area Área principal responsable.
related_areas Áreas afectadas o consultadas.
related_kpis KPIs que la componen.
related_alerts Alertas que pueden alimentarla.
conditions Condiciones de activación.
severity_base Severidad inicial.
responsible_role Responsable sugerido.
consulted_roles Áreas que deben participar.
suggested_actions Acciones recomendadas.
score_impact Impacto en FARO Score.
confidence_min Confianza mínima para activarla.
industry_scope Industrias donde aplica.

8. Familias de tensiones FARO

8.1 Tensiones comerciales

Detectan problemas en ventas, margen, descuentos, canales, vendedores, clientes y mix comercial.

Ejemplos:

Crecimiento no rentable.
Margen deteriorado por descuentos.
Vendedor de alto volumen y bajo margen.
Cliente grande poco rentable.
Mix comercial débil.
Canal de venta no rentable.
Venta con alta comisión y bajo margen.
Promoción destructiva.

8.2 Tensiones financieras

Detectan conflictos entre ventas, caja, gastos, deuda, mora y rentabilidad.

Ejemplos:

Caja débil con ventas altas.
Cobranza lenta.
Gasto creciendo más que ventas.
Mora concentrada en clientes clave.
Rentabilidad operativa deteriorada.
Estructura sobredimensionada.
Deuda tensionando flujo operativo.

8.3 Tensiones de stock

Detectan problemas de inventario, rotación, quiebres, cobertura y capital inmovilizado.

Ejemplos:

Stock crítico comercial.
Stock inmovilizado.
Stock mal compuesto.
Capital atrapado en inventario.
Quiebres repetidos en productos clave.
Diferencia físico-sistema relevante.
Stock alto con baja venta.

8.4 Tensiones de compras y proveedores

Detectan conflictos de abastecimiento, costos, plazos, dependencia y cumplimiento.

Ejemplos:

Proveedor crítico.
Compras reactivas.
Costo de reposición creciente.
Alta dependencia de proveedor.
Órdenes críticas pendientes.
Compra urgente por mala planificación.
Recepciones con diferencias recurrentes.

8.5 Tensiones de RRHH e incentivos

Detectan problemas de personas, productividad, comisiones, ausentismo y accountability.

Ejemplos:

Comisión desalineada.
Costo laboral desalineado.
Productividad invisible.
Dependencia de persona clave.
Ausentismo operativo.
Estructura comercial cara y poco rentable.
Responsables con baja ejecución.

8.6 Tensiones operativas

Detectan problemas de entregas, tareas, reclamos, demoras, capacidad y procesos.

Ejemplos:

Operación no sostiene promesa comercial.
Reclamos reincidentes.
Cuello de botella operativo.
Reproceso elevado.
SLA incumplido.
Demoras crecientes.
Capacidad saturada.

8.7 Tensiones de dirección y ejecución

Detectan problemas entre decisiones, acciones, responsables, seguimiento y aprendizaje.

Ejemplos:

Dirección sin ejecución.
Decisiones sin responsable.
Acciones vencidas recurrentes.
Problemas que se repiten.
Cierre sin medición.
Prioridad confusa.
Accountability débil.
Comité que decide pero no tracciona.

8.8 Tensiones de calidad de datos

Detectan problemas que impiden confiar en el diagnóstico.

Ejemplos:

Margen no confiable por costos incompletos.
Stock no confiable por datos desactualizados.
Clientes duplicados distorsionan mora.
Ventas sin trazabilidad suficiente.
Acciones sin estado real.
KPI crítico con baja calidad de dato.

9. Fórmula general de severidad de tensión

Severidad tensión =
impacto económico × 30%
+ cantidad de áreas afectadas × 20%
+ desviación de KPIs críticos × 20%
+ recurrencia × 15%
+ urgencia × 10%
+ confianza del diagnóstico × 5%

Código ejemplo:

def severidad_tension(
    impacto_economico,
    areas_afectadas,
    desvio_kpis,
    recurrencia,
    urgencia,
    confianza
):
    score = (
        impacto_economico * 0.30 +
        areas_afectadas * 0.20 +
        desvio_kpis * 0.20 +
        recurrencia * 0.15 +
        urgencia * 0.10 +
        confianza * 0.05
    )

    if score >= 85:
        return "critica"
    elif score >= 65:
        return "alta"
    elif score >= 45:
        return "media"
    return "baja"

10. Fórmula de confianza de una tensión

Confianza tensión =
calidad de datos × 35%
+ cantidad de señales coincidentes × 25%
+ consistencia histórica × 20%
+ validación de reglas × 10%
+ coherencia sectorial × 10%

Código:

def confianza_tension(
    calidad_datos,
    senales_coincidentes,
    consistencia_historica,
    validacion_reglas,
    coherencia_sectorial
):
    return round(
        calidad_datos * 0.35 +
        senales_coincidentes * 0.25 +
        consistencia_historica * 0.20 +
        validacion_reglas * 0.10 +
        coherencia_sectorial * 0.10,
        2
    )

Lectura:

Confianza Uso recomendado
0.85 - 1.00 Activar tensión fuerte y acción.
0.70 - 0.84 Activar tensión con observación.
0.50 - 0.69 Diagnóstico preliminar.
< 0.50 No usar para decisión crítica.

11. Tensión 1: Crecimiento no rentable

Definición

La empresa vende más, pero ese crecimiento deteriora rentabilidad, caja, stock o incentivos.

KPIs involucrados

Ventas netas
Margen bruto
Descuento promedio
Días de cobranza
Comisión sobre margen
Stock crítico

Condición típica

Ventas suben
+ margen baja
+ descuento sube
+ cobranza empeora

Código ejemplo

def tension_crecimiento_no_rentable(ctx):
    condiciones = [
        ctx["ventas_var"] > 0.15,
        ctx["margen_var"] < -0.05,
        ctx["descuento_var"] > 0.04,
        ctx["dias_cobranza_var"] > 7,
        ctx["comision_var"] > 0
    ]

    if sum(condiciones) >= 3:
        return {
            "tension": "crecimiento_no_rentable",
            "severidad": "alta",
            "responsable": "Gerente Comercial",
            "consultados": ["Finanzas", "Stock", "RRHH"],
            "acciones": [
                "auditar_descuentos_altos",
                "revisar_formula_comision",
                "priorizar_cobranza_clientes_grandes",
                "analizar_mix_de_productos"
            ],
            "score_impact": -8
        }

    return None

Lectura ejecutiva

La empresa está comprando crecimiento a costa de rentabilidad, caja o calidad comercial.

12. Tensión 2: Margen deteriorado por descuentos

Definición

La rentabilidad cae porque la política comercial está usando descuentos por encima del nivel sano.

KPIs involucrados

Margen bruto
Descuento promedio
Venta por vendedor
Venta por producto
Precio lista
Precio final

Código

def tension_margen_deteriorado_descuentos(margen_actual, margen_objetivo, descuento_promedio):
    if margen_actual < margen_objetivo and descuento_promedio > 0.10:
        return {
            "tension": "margen_deteriorado_por_descuentos",
            "responsable": "Gerente Comercial",
            "accion": "auditar_descuentos_y_revisar_aprobaciones",
            "severidad": "alta"
        }

    return None

Acción recomendada

Auditar operaciones con descuento mayor al 8%.
Revisar vendedores con bajo margen.
Crear autorización obligatoria para descuentos altos.

13. Tensión 3: Comisión desalineada

Definición

La fórmula de comisión incentiva volumen, pero no rentabilidad, cobranza ni margen sano.

KPIs involucrados

Comisión pagada
Margen bruto
Ventas netas
Días de cobranza
Descuento promedio
Venta por vendedor

Código

def tension_comision_desalineada(comision_var, margen_var, cobranza_var):
    condiciones = [
        comision_var > 0,
        margen_var < 0,
        cobranza_var > 0
    ]

    if sum(condiciones) >= 2:
        return {
            "tension": "comision_desalineada",
            "responsable": "Comercial / RRHH",
            "consultados": ["Finanzas", "Dirección"],
            "accion": "redisenar_comision_por_margen_y_cobranza",
            "severidad": "alta"
        }

    return None

Lectura ejecutiva

El sistema podría estar premiando ventas que no generan rentabilidad real.

14. Tensión 4: Caja débil con ventas altas

Definición

La empresa vende, pero no convierte esas ventas en caja con suficiente velocidad.

KPIs involucrados

Ventas netas
Caja disponible
Días de cobranza
Mora
Cuentas por cobrar
Flujo operativo

Código

def tension_caja_debil_ventas_altas(ventas_var, caja_var, dias_cobranza_var):
    if ventas_var > 0.10 and caja_var < 0 and dias_cobranza_var > 7:
        return {
            "tension": "caja_debil_con_ventas_altas",
            "responsable": "Finanzas",
            "consultados": ["Comercial", "Dirección"],
            "accion": "priorizar_cobranza_y_revisar_condiciones_de_credito",
            "severidad": "alta",
            "score_impact": -7
        }

    return None

Lectura ejecutiva

La empresa está facturando, pero el dinero no está entrando al ritmo necesario.

15. Tensión 5: Cliente grande riesgoso

Definición

Un cliente representa alto volumen, pero con bajo margen, mora o dependencia comercial excesiva.

KPIs involucrados

Concentración de ventas por cliente
Margen por cliente
Días de mora
Deuda vencida
Rentabilidad ajustada por cobranza
Reclamos

Código

def tension_cliente_grande_riesgoso(concentracion, margen_cliente, dias_mora):
    if concentracion > 0.15 and margen_cliente < 0.20 and dias_mora > 30:
        return {
            "tension": "cliente_grande_riesgoso",
            "responsable": "Finanzas",
            "consultados": ["Comercial"],
            "accion": "revisar_limite_credito_condiciones_y_margen",
            "severidad": "alta"
        }

    return None

Lectura ejecutiva

El cliente parece importante por volumen, pero puede estar destruyendo caja o rentabilidad.

16. Tensión 6: Stock crítico comercial

Definición

Productos clave para la venta están en riesgo de quiebre o con cobertura insuficiente.

KPIs involucrados

Stock actual
Stock mínimo
Venta promedio diaria
Días de cobertura
Plazo proveedor
Producto crítico
Ventas perdidas

Código

def tension_stock_critico(stock_actual, venta_promedio_diaria, plazo_proveedor, producto_critico):
    if venta_promedio_diaria == 0:
        return None

    dias_cobertura = stock_actual / venta_promedio_diaria

    if producto_critico and dias_cobertura < plazo_proveedor:
        return {
            "tension": "stock_critico_comercial",
            "responsable": "Stock / Compras",
            "consultados": ["Comercial"],
            "accion": "activar_reposicion_urgente_o_proveedor_alternativo",
            "severidad": "alta"
        }

    return None

Lectura ejecutiva

La empresa puede perder ventas por no tener productos clave disponibles a tiempo.

17. Tensión 7: Stock inmovilizado

Definición

Capital de trabajo atrapado en productos de baja rotación o sin movimiento.

KPIs involucrados

Stock valorizado
Días sin movimiento
Rotación de stock
Stock promedio
Ventas por producto
Costo financiero

Código

def tension_stock_inmovilizado(stock_inmovilizado_ratio, rotacion_var):
    if stock_inmovilizado_ratio > 0.20 and rotacion_var < 0:
        return {
            "tension": "stock_inmovilizado",
            "responsable": "Stock",
            "consultados": ["Finanzas", "Comercial"],
            "accion": "liquidar_redistribuir_o_bloquear_compra_de_lentos",
            "severidad": "media_alta"
        }

    return None

Lectura ejecutiva

La empresa tiene plata parada en mercadería que no rota.

18. Tensión 8: Stock mal compuesto

Definición

La empresa tiene stock total alto, pero faltan productos clave y sobran productos lentos.

KPIs involucrados

Stock total
Rotación
Quiebres
Stock inmovilizado
Stock crítico
Ventas perdidas

Código

def tension_stock_mal_compuesto(stock_total_var, rotacion_var, quiebres, stock_inmovilizado_var):
    condiciones = [
        stock_total_var > 0.10,
        rotacion_var < -0.10,
        quiebres > 0,
        stock_inmovilizado_var > 0.15
    ]

    if sum(condiciones) >= 3:
        return {
            "tension": "stock_mal_compuesto",
            "responsable": "Stock",
            "consultados": ["Compras", "Comercial", "Finanzas"],
            "accion": "redefinir_mix_stock_por_rotacion_y_criticidad",
            "severidad": "alta"
        }

    return None

Lectura ejecutiva

No falta stock en general. Falta el stock correcto.

19. Tensión 9: Compras reactivas

Definición

La empresa compra tarde, urgente, caro o sin planificación suficiente.

KPIs involucrados

Compras urgentes
Precio promedio compra
Variación costo
Stock crítico
Órdenes pendientes
Plazo proveedor

Código

def tension_compras_reactivas(compras_urgentes_ratio, variacion_costo):
    if compras_urgentes_ratio > 0.20 and variacion_costo > 0.10:
        return {
            "tension": "compras_reactivas",
            "responsable": "Compras",
            "consultados": ["Stock", "Finanzas"],
            "accion": "crear_plan_de_reposicion_por_rotacion_y_minimos",
            "severidad": "media_alta"
        }

    return None

Lectura ejecutiva

La empresa no compra por planificación; compra por incendio.

20. Tensión 10: Proveedor crítico

Definición

La empresa depende demasiado de un proveedor que no cumple, demora o concentra productos esenciales.

KPIs involucrados

Cumplimiento proveedor
Dependencia proveedor
Plazo promedio entrega
Productos críticos asociados
Órdenes vencidas
Alternativas disponibles

Código

def tension_proveedor_critico(cumplimiento, dependencia, alternativa_disponible):
    if cumplimiento < 0.75 and dependencia > 0.40 and not alternativa_disponible:
        return {
            "tension": "proveedor_critico",
            "responsable": "Compras",
            "consultados": ["Stock", "Dirección"],
            "accion": "buscar_proveedor_alternativo_y_revisar_dependencia",
            "severidad": "alta"
        }

    return None

Lectura ejecutiva

Un proveedor está condicionando la capacidad operativa o comercial de la empresa.

21. Tensión 11: Dirección sin ejecución

Definición

La empresa toma decisiones, pero no las transforma en acciones con responsable, vencimiento y cierre medible.

KPIs involucrados

Decisiones tomadas
Acciones creadas
Acciones vencidas
Acciones sin responsable
Acciones cerradas sin medición
Reincidencia de problemas

Código

def tension_direccion_sin_ejecucion(decisiones, acciones_creadas, acciones_vencidas, reincidencias):
    if decisiones == 0:
        return None

    ratio_acciones = acciones_creadas / decisiones
    ratio_vencidas = acciones_vencidas / acciones_creadas if acciones_creadas else 0

    condiciones = [
        ratio_acciones < 0.70,
        ratio_vencidas > 0.20,
        reincidencias > 2
    ]

    if sum(condiciones) >= 2:
        return {
            "tension": "direccion_sin_ejecucion",
            "responsable": "Gerencia General",
            "accion": "activar_workflow_obligatorio_con_responsable_y_vencimiento",
            "severidad": "alta",
            "score_impact": -7
        }

    return None

Lectura ejecutiva

La empresa decide más de lo que ejecuta.

22. Tensión 12: Accountability débil

Definición

Las acciones existen, pero no tienen dueño real, seguimiento o consecuencias por vencimiento.

KPIs involucrados

Acciones sin responsable
Acciones vencidas
Acciones reasignadas
Escalamientos
Tiempo de cierre
Responsables recurrentes

Código

def tension_accountability_debil(acciones_sin_responsable, acciones_totales, tasa_vencidas):
    if acciones_totales == 0:
        return None

    ratio_sin_responsable = acciones_sin_responsable / acciones_totales

    if ratio_sin_responsable > 0.10 or tasa_vencidas > 0.20:
        return {
            "tension": "accountability_debil",
            "responsable": "Gerencia General",
            "accion": "definir_raci_y_escalamiento_automatico",
            "severidad": "media_alta"
        }

    return None

23. Tensión 13: Calidad de datos insuficiente para decidir

Definición

El sistema detecta que una salida parece relevante, pero los datos no tienen calidad suficiente para tomar decisiones fuertes.

KPIs involucrados

Score calidad datos
Completitud
Trazabilidad
Duplicados
Actualización
Consistencia entre fuentes

Código

def tension_datos_insuficientes(score_calidad, kpi_critico):
    if kpi_critico and score_calidad < 0.70:
        return {
            "tension": "datos_insuficientes_para_decidir",
            "responsable": "Data Owner",
            "consultados": ["Área dueña del dato", "Sistemas"],
            "accion": "validar_datos_antes_de_activar_decision",
            "severidad": "alta"
        }

    return None

Lectura ejecutiva

El problema puede existir, pero FARO no tiene datos suficientemente confiables para afirmarlo con fuerza.

24. Tensión 14: Canje mal evaluado

Especialmente relevante para construcción, desarrolladoras, real estate e insumos.

Definición

La empresa acepta un canje como forma de pago sin evaluar correctamente liquidez, valor real, plazo, margen, riesgo legal o costo de oportunidad.

KPIs involucrados

Valor materiales entregados
Valor activo recibido
Liquidez del activo
Plazo de realización
Margen estimado
Costo financiero
Riesgo legal

Código

def tension_canje_mal_evaluado(valor_materiales, valor_activo, liquidez, margen_estimado):
    condiciones = [
        valor_activo < valor_materiales,
        liquidez < 0.50,
        margen_estimado < 0.20
    ]

    if sum(condiciones) >= 2:
        return {
            "tension": "canje_mal_evaluado",
            "responsable": "Dirección / Finanzas",
            "consultados": ["Comercial", "Legal"],
            "accion": "evaluar_canje_con_modelo_financiero_y_riesgo",
            "severidad": "alta"
        }

    return None

Lectura ejecutiva

La operación puede parecer venta, pero no necesariamente genera caja ni rentabilidad real.

25. Tensión 15: Referidos sin control

Definición

Pagos o comisiones a referidos, arquitectos, maestros, gestores u otros intermediarios sin trazabilidad, regla clara o impacto medido en margen.

KPIs involucrados

Comisión referido
Margen operación
Cliente referido
Origen de venta
Trazabilidad del referido
Rentabilidad neta

Código

def tension_referidos_sin_control(comision_referido, margen_operacion, referido_identificado):
    if margen_operacion == 0:
        return None

    ratio = comision_referido / margen_operacion

    if not referido_identificado or ratio > 0.25:
        return {
            "tension": "referidos_sin_control",
            "responsable": "Comercial",
            "consultados": ["Finanzas", "Dirección"],
            "accion": "crear_politica_de_referidos_y_trazabilidad",
            "severidad": "media_alta"
        }

    return None

Lectura ejecutiva

El referido puede traer venta, pero si no se controla puede comerse el margen.

26. Tensiones por industria

26.1 Construcción / insumos

Crecimiento no rentable.
Margen deteriorado por descuentos.
Comisión desalineada.
Cliente de obra riesgoso.
Stock crítico comercial.
Stock inmovilizado.
Compras reactivas.
Proveedor crítico.
Canje mal evaluado.
Referidos sin control.
Flete que erosiona margen.
Obra grande con cobranza lenta.
Sucursal nueva con stock mal compuesto.

26.2 Retail

Promoción destructiva.
Sucursal con venta alta y margen bajo.
Stock alto con baja rotación.
Quiebre de producto estrella.
Merma creciente.
Ticket promedio deteriorado.
Canal online con alta devolución.
Marketing mueve tráfico pero no conversión.

26.3 Salud

Alta ocupación con baja rentabilidad.
Profesional crítico saturado.
Turnos perdidos.
Costo por prestación desalineado.
Demora creciente.
Reclamos repetidos.
Insumos críticos sin disponibilidad.
Capacidad instalada mal utilizada.

26.4 Logística

Ruta no rentable.
Costo por kilómetro desalineado.
SLA incumplido.
Flota subutilizada.
Mantenimiento reactivo.
Combustible creciendo más que operación.
Cliente exige servicio no rentable.
Reclamos por entrega recurrentes.

26.5 Hotelería

Ocupación alta con tarifa baja.
Canal caro dominante.
Costo por habitación ocupada elevado.
RevPAR deteriorado.
Reclamos crecientes.
Mantenimiento diferido.
Alta ocupación con experiencia débil.

26.6 Shopping / real estate comercial

Locatario clave moroso.
Alta ocupación con baja caja.
Vacancia crítica por zona.
Mix comercial débil.
Tráfico alto con baja conversión.
Costos comunes desalineados.
Renta por m² deteriorada.

26.7 Agro

Campaña atrasada.
Costo por hectárea desalineado.
Margen agrícola comprimido.
Maquinaria crítica indisponible.
Logística insuficiente en cosecha.
Insumos caros con rinde esperado bajo.
Riesgo climático no incorporado.

26.8 Minería

Producción afectada por mantenimiento reactivo.
Seguridad tensionada por presión productiva.
Contratista crítico incumplidor.
Costo por tonelada creciente.
Equipo crítico con baja disponibilidad.
Cumplimiento regulatorio en riesgo.

27. Activación de tensiones desde alertas

Ejemplo:

Alerta 1: margen bajo.
Alerta 2: descuento alto.
Alerta 3: cobranza lenta.
Alerta 4: comisión elevada.

Activación:

Tensión: crecimiento no rentable + comisión desalineada.

Código conceptual:

def detectar_tensiones_desde_alertas(alertas):
    codigos = set(a["alert_code"] for a in alertas)
    tensiones = []

    if {"margin_critical", "discount_high", "collection_slow"}.issubset(codigos):
        tensiones.append("crecimiento_no_rentable")

    if {"commission_high", "margin_critical"}.issubset(codigos):
        tensiones.append("comision_desalineada")

    if {"stock_critical", "supplier_delay"}.issubset(codigos):
        tensiones.append("riesgo_abastecimiento")

    return tensiones

28. Priorización de tensiones

No todas las tensiones pueden atenderse al mismo tiempo.

Prioridad tensión =
impacto económico × 30%
+ urgencia × 20%
+ cantidad de áreas afectadas × 15%
+ recurrencia × 15%
+ impacto en caja × 10%
+ confianza × 10%

Código:

def prioridad_tension(impacto, urgencia, areas, recurrencia, caja, confianza):
    return round(
        impacto * 0.30 +
        urgencia * 0.20 +
        areas * 0.15 +
        recurrencia * 0.15 +
        caja * 0.10 +
        confianza * 0.10,
        2
    )

Lectura:

Score Prioridad
85 - 100 Crítica
65 - 84 Alta
45 - 64 Media
< 45 Baja

29. Estados de una tensión

Estado Significado
Detected Tensión detectada.
Observed Tensión con baja confianza o en observación.
Validated Validada por datos o responsable.
Action required Requiere acción.
In progress Tiene acciones en curso.
Escalated Fue escalada a Dirección.
Resolved La tensión se resolvió.
Recurring Reaparece.
Dismissed Fue descartada.
Closed Cerrada con evidencia.

30. Tensión y acción sugerida

Cada tensión debe derivar en una o más acciones.

Tensión Acción sugerida
Crecimiento no rentable Auditar descuentos, revisar comisión, priorizar cobranza.
Stock crítico comercial Activar reposición, buscar proveedor alternativo.
Stock inmovilizado Liquidar, redistribuir, bloquear compras lentas.
Compras reactivas Crear plan de reposición por rotación.
Proveedor crítico Homologar proveedor alternativo.
Dirección sin ejecución Activar workflow obligatorio.
Cliente grande riesgoso Revisar crédito, margen y condiciones.
Comisión desalineada Rediseñar fórmula variable.
Canje mal evaluado Evaluar con modelo financiero y legal.
Referidos sin control Crear política y trazabilidad de referidos.

31. Tensión y FARO Score

Las tensiones deben impactar el Score según severidad, estado y recurrencia.

Código:

def impacto_tension_score(severidad, estado, recurrente=False):
    impacto_base = {
        "baja": -1,
        "media": -3,
        "alta": -6,
        "critica": -10
    }.get(severidad, 0)

    if estado == "resolved":
        return abs(impacto_base) * 0.5

    if recurrente:
        impacto_base *= 1.5

    return impacto_base

Ejemplo:

Tensión alta abierta: -6 puntos.
Tensión alta recurrente: -9 puntos.
Tensión resuelta: +3 puntos.

32. Tabla SQL de biblioteca de tensiones

CREATE TABLE tension_library (
    tension_code TEXT PRIMARY KEY,
    name TEXT NOT NULL,
    description TEXT,
    main_area_id TEXT,
    related_areas JSONB,
    related_kpis JSONB,
    related_alerts JSONB,
    conditions JSONB,
    default_severity TEXT,
    responsible_role TEXT,
    consulted_roles JSONB,
    suggested_actions JSONB,
    score_impact NUMERIC,
    confidence_min NUMERIC,
    industry_scope JSONB,
    active BOOLEAN DEFAULT true,
    version TEXT DEFAULT '1.0',
    created_at TIMESTAMP DEFAULT now(),
    updated_at TIMESTAMP DEFAULT now()
);

33. Tabla SQL de eventos de tensión

CREATE TABLE tension_events (
    tension_event_id TEXT PRIMARY KEY,
    tension_code TEXT NOT NULL,
    company_id TEXT,
    branch_id TEXT,
    main_area_id TEXT,
    related_areas JSONB,
    related_kpis JSONB,
    related_alerts JSONB,
    severity TEXT,
    priority_score NUMERIC,
    confidence NUMERIC,
    diagnosis TEXT,
    responsible_id TEXT,
    status TEXT DEFAULT 'detected',
    score_impact NUMERIC,
    source_snapshot JSONB,
    detected_at TIMESTAMP DEFAULT now(),
    validated_at TIMESTAMP,
    resolved_at TIMESTAMP,
    closed_at TIMESTAMP
);

34. Tabla SQL de historial de tensiones

CREATE TABLE tension_status_history (
    id TEXT PRIMARY KEY,
    tension_event_id TEXT NOT NULL,
    previous_status TEXT,
    new_status TEXT,
    changed_by TEXT,
    change_reason TEXT,
    changed_at TIMESTAMP DEFAULT now()
);

Esto permite auditar:

cuándo nació la tensión,
qué datos la dispararon,
quién la validó,
qué acción generó,
cuándo se resolvió,
si fue recurrente,
cómo impactó en FARO Score.

35. Motor de tensiones FARO

Flujo recomendado:

Señales detectadas
→ alertas activadas
→ reglas evaluadas
→ combinación de patrones
→ detección de tensión
→ cálculo de severidad
→ cálculo de confianza
→ asignación de responsable
→ recomendación de acciones
→ impacto en FARO Score
→ seguimiento

Código conceptual:

def motor_tensiones(contexto, biblioteca_tensiones):
    tensiones_detectadas = []

    for tension in biblioteca_tensiones:
        if contexto.get("confidence", 1) < tension.get("confidence_min", 0.70):
            continue

        if evaluar_condiciones_tension(tension["conditions"], contexto):
            tensiones_detectadas.append({
                "tension_code": tension["tension_code"],
                "name": tension["name"],
                "severity": tension["default_severity"],
                "responsible": tension["responsible_role"],
                "actions": tension["suggested_actions"],
                "score_impact": tension["score_impact"]
            })

    return tensiones_detectadas

36. Ejemplo completo: tensión de crecimiento no rentable

Datos

Ventas: +18%
Margen: 28% → 21%
Descuento: 6% → 12%
Días de cobranza: 32 → 43
Comisión pagada: +15%

Señales

Ventas suben fuerte.
Margen cae.
Descuento sube.
Cobranza empeora.
Comisión sube.

Alertas

Margen bajo.
Descuento alto.
Cobranza lenta.
Comisión elevada sobre margen.

Tensión FARO

Crecimiento no rentable.

Diagnóstico

La empresa está creciendo en volumen, pero ese crecimiento está deteriorando rentabilidad, caja e incentivos comerciales.

Acciones

Auditar descuentos mayores al 8%.
Revisar comisión por margen y cobranza.
Priorizar cobranza de clientes grandes.
Analizar mix de productos vendidos.

Responsable

R: Gerente Comercial
A: Dirección
C: Finanzas, Stock, RRHH
I: Administración

37. Ejemplo completo: tensión stock mal compuesto

Datos

Stock total: +22%
Rotación: -15%
Quiebres productos clave: 8 casos
Stock inmovilizado: +30%

Tensión

Stock mal compuesto.

Diagnóstico

La empresa tiene más capital invertido en inventario, pero no necesariamente en los productos correctos. Hay sobrestock en productos lentos y faltantes en productos clave.

Acciones

Bloquear compras de baja rotación.
Priorizar reposición de productos críticos.
Redistribuir stock entre sucursales.
Liquidar productos inmovilizados.

38. Ejemplo completo: tensión dirección sin ejecución

Datos

Decisiones tomadas: 24
Acciones creadas: 15
Acciones vencidas: 8
Acciones sin responsable: 4
Problemas reincidentes: 5

Tensión

Dirección sin ejecución.

Diagnóstico

La empresa toma decisiones, pero no logra convertirlas en ejecución medible. Hay tareas sin dueño, vencimientos incumplidos y problemas que vuelven.

Acciones

Activar workflow obligatorio.
Asignar responsable y vencimiento a toda decisión.
Escalar tareas críticas vencidas.
Medir impacto posterior antes de cerrar acciones.

39. Testing de tensiones

Cada tensión debe probarse con casos positivos y negativos.

Test positivo

def test_crecimiento_no_rentable_detectado():
    ctx = {
        "ventas_var": 0.18,
        "margen_var": -0.07,
        "descuento_var": 0.06,
        "dias_cobranza_var": 10,
        "comision_var": 0.15
    }

    resultado = tension_crecimiento_no_rentable(ctx)

    assert resultado is not None
    assert resultado["tension"] == "crecimiento_no_rentable"
    assert resultado["severidad"] == "alta"

Test negativo

def test_crecimiento_rentable_no_detecta_tension():
    ctx = {
        "ventas_var": 0.18,
        "margen_var": 0.03,
        "descuento_var": 0.00,
        "dias_cobranza_var": -2,
        "comision_var": 0.05
    }

    resultado = tension_crecimiento_no_rentable(ctx)

    assert resultado is None

Sin testing, las tensiones pueden convertirse en “intuiciones automáticas”. Y eso suena moderno, pero es peligrosísimo.


40. Riesgos si no existe biblioteca de tensiones

Riesgo Consecuencia
FARO muestra alertas sueltas Dirección no entiende el problema real.
No se detectan contradicciones Se premian resultados parciales.
Comercial, Finanzas y Stock quedan desconectados Cada área defiende su número.
Recomendaciones genéricas FARO dice “revisar” sin explicar causa.
Score poco explicable El usuario no sabe por qué bajó.
No hay aprendizaje sistémico Se corrigen síntomas, no causas.
Baja diferenciación FARO se parece a un dashboard más.

41. Output final del Anexo 22

Al finalizar este anexo, FARO debe tener definido:

1. Biblioteca inicial de 300 a 500 tensiones.
2. Tensiones por área.
3. Tensiones por industria.
4. Tensiones por KPI.
5. Tensiones por alerta.
6. Tensiones por relación causa-impacto.
7. Condiciones de activación.
8. Severidad de tensión.
9. Confianza de tensión.
10. Priorización de tensiones.
11. Estados de tensión.
12. Responsable y RACI por tensión.
13. Acciones sugeridas por tensión.
14. Impacto de tensión en FARO Score.
15. Tabla de biblioteca de tensiones.
16. Tabla de eventos de tensión.
17. Historial de estados.
18. Motor de detección de tensiones.
19. Testing de tensiones.
20. Reglas de cierre y recurrencia.
21. Relación tensión → diagnóstico.
22. Relación tensión → recomendación.
23. Relación tensión → acción.
24. Relación tensión → aprendizaje.

42. Conexión con otros anexos

Próximo anexo Qué recibe desde Anexo 22
Anexo 16 — Relaciones entre datos Relaciones causa-impacto que explican tensiones.
Anexo 17 — Biblioteca de KPIs KPIs que alimentan tensiones.
Anexo 18 — Objetivos y umbrales Desvíos que activan señales y alertas.
Anexo 19 — Señales FARO Señales que componen tensiones.
Anexo 20 — Reglas de negocio Condiciones lógicas para activar tensiones.
Anexo 21 — Alertas FARO Alertas agrupadas para formar tensiones.
Anexo 23 — Diagnóstico ejecutivo Traducción de la tensión a lectura directiva.
Anexo 24 — Confianza del diagnóstico Nivel de confianza de cada tensión.
Anexo 25 — Priorización ejecutiva Orden de atención de tensiones.
Anexo 26 — Recomendaciones FARO Recomendaciones según tensión.
Anexo 29 — Biblioteca de acciones Acciones sugeridas por tensión.
Anexo 31 — Workflow y escalamiento Seguimiento de acciones nacidas por tensión.
Anexo 35 — FARO Score Penalización o mejora según tensiones abiertas/resueltas.
Anexo 36 — Aprendizaje Aprendizaje sobre tensiones recurrentes.

La Biblioteca de Tensiones FARO define los patrones de contradicción que el sistema debe detectar cuando varios KPIs, señales y alertas muestran un problema de fondo. Una tensión no es una alerta aislada: es la lectura sistémica de que algo se está desalineando entre áreas, procesos, responsables, incentivos o resultados.

Versión 1.0 · Última revisión: 2026-05-28 Anexo 22 de 40 · Fase 6.3