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.