ANEXO 17
Biblioteca de KPIs FARO
Este anexo corresponde a la Fase 5 — Medición, etapa “Biblioteca de KPIs”. Es una de las piezas centrales de FARO Connect, porque define qué se mide, cómo se mide, con qué fórmula, desde qué fuente, con qué frecuencia, quién responde y qué decisión habilita.
1. Objetivo del anexo
El objetivo de la Biblioteca de KPIs FARO es construir una base ordenada, técnica y ejecutiva de indicadores que permita medir la empresa de forma coherente.
La pregunta central es:
¿Qué indicadores necesita FARO para entender si la empresa está sana, tensionada o perdiendo control?
Un KPI en FARO no debe ser solo un número bonito en una pantalla.
Debe tener:
nombre
objetivo
fórmula
fuente de datos
área responsable
frecuencia
umbral
interpretación
riesgo si se desvía
tensiones relacionadas
acciones sugeridas
impacto en FARO Score
Porque medir por medir es deporte corporativo. FARO mide para dirigir.
2. Tesis del Anexo 17
La tesis es:
FARO Connect no puede detectar tensiones, generar alertas, recomendar acciones ni calcular score si antes no tiene una biblioteca sólida de KPIs.
Los KPIs son la base de la lectura ejecutiva.
La cadena es:
Datos normalizados
→ KPIs
→ Señales
→ Reglas
→ Alertas
→ Tensiones
→ Diagnóstico
→ Prioridad
→ Acción
→ Seguimiento
→ FARO Score
Sin KPIs bien definidos, todo lo demás queda flojo.
Ejemplo:
Si no se mide margen bruto:
FARO no puede detectar margen deteriorado.
Si no se mide días de cobranza:
FARO no puede detectar caja débil.
Si no se mide stock crítico:
FARO no puede anticipar quiebres.
Si no se mide cumplimiento de acciones:
FARO no puede saber si la empresa ejecuta.
3. Qué es un KPI para FARO
Para FARO, un KPI es una unidad de medición ejecutiva.
No es solo una métrica.
Un KPI debe conectar:
Dato
+ fórmula
+ área
+ responsable
+ objetivo
+ umbral
+ lectura
+ tensión posible
+ acción posible
+ impacto en score
Ejemplo:
{
"kpi_code": "gross_margin_rate",
"nombre": "Margen bruto",
"area": "Comercial / Finanzas",
"formula": "(ventas_netas - costo_ventas) / ventas_netas",
"fuentes": ["ventas", "costos", "productos"],
"responsable": "Gerente Comercial",
"consultados": ["Finanzas", "Compras"],
"frecuencia": "diaria / semanal",
"umbral_rojo": "< 20%",
"umbral_amarillo": "20% - 25%",
"umbral_verde": "> 25%",
"tensiones_relacionadas": [
"margen_deteriorado",
"crecimiento_no_rentable",
"comision_desalineada"
],
"acciones_sugeridas": [
"auditar_descuentos",
"revisar_costos",
"actualizar_politica_comercial"
]
}
4. Diferencia entre métrica, KPI y KPI FARO
| Concepto | Qué es | Ejemplo |
|---|---|---|
| Métrica | Dato medido. | Ventas del mes. |
| KPI | Indicador clave para gestión. | Margen bruto. |
| KPI FARO | Indicador con fórmula, fuente, responsable, umbral, tensión y acción. | Margen bruto con alerta, responsable y acción sugerida. |
Un KPI FARO no termina en el número. Termina en una decisión o acción.
5. Volumen recomendado de KPIs FARO
Para una primera biblioteca seria:
300 a 400 KPIs iniciales
Escalable a:
1.000+ KPIs
Distribución sugerida:
| Familia KPI | Cantidad inicial | Escalable |
|---|---|---|
| Comercial | 50-80 | 200+ |
| Finanzas | 50-80 | 200+ |
| Stock | 40-70 | 150+ |
| Compras | 30-60 | 150+ |
| RRHH | 30-60 | 150+ |
| Operaciones | 40-70 | 200+ |
| Dirección / Workflow | 30-60 | 150+ |
| Clientes | 30-50 | 150+ |
| Proveedores | 20-40 | 100+ |
| Industria específica | 50-150 | 500+ |
La clave no es tener mil KPIs desde el día uno. La clave es tener los primeros 50 bien elegidos. El resto se escala.
6. Estructura estándar de un KPI FARO
Cada KPI debería tener esta ficha:
{
"kpi_code": "discount_rate",
"nombre": "Descuento promedio",
"descripcion": "Mide el porcentaje promedio de descuento aplicado sobre precio de lista.",
"area": "Comercial",
"modulo": "Comercial",
"formula": "descuento_total / venta_lista_total",
"fuentes": ["fact_sales", "dim_product", "dim_employee"],
"dimensiones": ["producto", "cliente", "vendedor", "sucursal", "canal"],
"frecuencia": "diaria",
"responsable": "Gerente Comercial",
"aprobador": "Dirección",
"umbral_verde": "<= 6%",
"umbral_amarillo": "6% - 10%",
"umbral_rojo": "> 10%",
"tensiones_relacionadas": [
"margen_deteriorado",
"crecimiento_no_rentable"
],
"acciones_sugeridas": [
"auditar_descuentos_altos",
"revisar_politica_de_aprobacion"
],
"impacto_score": "comercial",
"nivel": "Base / Pro"
}
7. Campos obligatorios por KPI
| Campo | Para qué sirve |
|---|---|
| Código KPI | Identificador único. |
| Nombre | Lectura humana. |
| Área | Quién lo gestiona. |
| Módulo | Dónde vive en FARO. |
| Fórmula | Cómo se calcula. |
| Fuente de datos | De dónde sale. |
| Dimensiones | Por dónde se puede analizar. |
| Frecuencia | Cada cuánto se mide. |
| Responsable | Quién responde. |
| Umbral | Cuándo está bien, alerta o crítico. |
| Tensión relacionada | Qué contradicción puede activar. |
| Acción sugerida | Qué hacer si se desvía. |
| Impacto en Score | Cómo afecta FARO Score. |
8. Categorías de KPIs FARO
8.1 KPIs de resultado
Miden qué pasó.
ventas
margen
rentabilidad
caja
stock
gastos
productividad
cumplimiento
Ejemplo:
Ventas netas del mes.
Margen bruto.
Caja disponible.
Stock valorizado.
8.2 KPIs de tendencia
Miden cómo viene cambiando.
variación de ventas
variación de margen
variación de gastos
variación de cobranza
variación de stock crítico
Ejemplo:
Margen bruto cae 7 puntos contra mes anterior.
8.3 KPIs de riesgo
Miden probabilidad de problema.
mora
stock crítico
cliente riesgoso
proveedor incumplidor
tareas vencidas
dependencia de persona clave
8.4 KPIs de ejecución
Miden si la empresa hace lo que decide.
acciones cerradas
acciones vencidas
tiempo de cierre
reincidencia
escalamientos
cumplimiento por responsable
8.5 KPIs de calidad de datos
Miden si FARO puede confiar en la información.
completitud
consistencia
trazabilidad
actualización
duplicados
calidad por módulo
9. KPIs comerciales
9.1 KPIs comerciales base
| KPI | Fórmula | Lectura |
|---|---|---|
| Ventas netas | suma de ventas netas | Volumen real vendido. |
| Margen bruto | (ventas netas - costo) / ventas netas |
Rentabilidad comercial. |
| Descuento promedio | descuento total / venta lista |
Presión comercial sobre precio. |
| Ticket promedio | ventas netas / cantidad de operaciones |
Valor promedio por operación. |
| Venta por vendedor | ventas netas / vendedor |
Producción comercial individual. |
| Margen por vendedor | margen bruto por vendedor |
Calidad de venta por vendedor. |
| Venta por cliente | ventas netas por cliente |
Concentración comercial. |
| Venta por producto | ventas netas por producto |
Mix comercial. |
| Conversión comercial | ventas cerradas / oportunidades |
Efectividad comercial. |
| Comisión sobre margen | comisión / margen bruto generado |
Calidad del incentivo. |
9.2 Fórmula: margen bruto
Margen bruto = (ventas_netas - costo_ventas) / ventas_netas
def margen_bruto(ventas_netas, costo_ventas):
if ventas_netas == 0:
return 0
return (ventas_netas - costo_ventas) / ventas_netas
9.3 Fórmula: descuento promedio
Descuento promedio = descuento_total / venta_lista_total
def descuento_promedio(venta_lista_total, venta_neta_total):
if venta_lista_total == 0:
return 0
descuento_total = venta_lista_total - venta_neta_total
return descuento_total / venta_lista_total
9.4 Tensiones comerciales asociadas
| KPI | Tensión posible |
|---|---|
| Ventas suben + margen baja | Crecimiento no rentable. |
| Descuento promedio alto | Margen deteriorado. |
| Comisión alta + margen bajo | Comisión desalineada. |
| Venta por cliente alta + mora alta | Cliente grande riesgoso. |
| Venta de productos bajo margen sube | Mix comercial débil. |
10. KPIs financieros
10.1 KPIs financieros base
| KPI | Fórmula | Lectura |
|---|---|---|
| Caja disponible | saldo bancos + efectivo | Liquidez inmediata. |
| Días de cobranza | promedio días entre venta y cobro | Velocidad de recuperación de caja. |
| Mora total | suma deuda vencida | Riesgo financiero. |
| Mora % | deuda vencida / cuentas por cobrar | Calidad de cartera. |
| Cuentas por cobrar | suma saldos pendientes | Caja futura. |
| Cuentas por pagar | suma obligaciones pendientes | Compromiso financiero. |
| Gasto sobre ventas | gastos operativos / ventas netas | Peso de estructura. |
| Flujo operativo | cobros operativos - pagos operativos | Salud de caja operativa. |
| Rentabilidad operativa | resultado operativo / ventas | Resultado real del negocio. |
| Endeudamiento operativo | deuda / ventas o deuda / EBITDA | Riesgo financiero. |
10.2 Fórmula: días de cobranza
Días de cobranza = fecha_cobro - fecha_venta
def dias_cobranza(fecha_venta, fecha_cobro):
return (fecha_cobro - fecha_venta).days
Promedio:
def promedio_dias_cobranza(cobranzas):
if not cobranzas:
return 0
return sum(cobranzas) / len(cobranzas)
10.3 Fórmula: gasto sobre ventas
Gasto sobre ventas = gastos_operativos / ventas_netas
def gasto_sobre_ventas(gastos_operativos, ventas_netas):
if ventas_netas == 0:
return 0
return gastos_operativos / ventas_netas
10.4 Tensiones financieras asociadas
| KPI | Tensión posible |
|---|---|
| Ventas altas + caja baja | Caja débil con ventas altas. |
| Días de cobranza suben | Cobranza lenta. |
| Gastos suben más que ventas | Estructura sobredimensionada. |
| Mora alta en clientes grandes | Cliente grande riesgoso. |
| Pagos urgentes + caja baja | Estrés financiero operativo. |
11. KPIs de stock
11.1 KPIs base de stock
| KPI | Fórmula | Lectura |
|---|---|---|
| Stock actual | cantidad disponible | Existencia real. |
| Stock valorizado | stock × costo unitario | Capital inmovilizado. |
| Rotación de stock | costo ventas / stock promedio | Velocidad de movimiento. |
| Días de inventario | stock actual / venta promedio diaria | Cobertura. |
| Stock crítico | productos bajo mínimo | Riesgo de quiebre. |
| Stock inmovilizado | productos sin movimiento / stock total | Capital parado. |
| Quiebre de stock | productos sin disponibilidad | Pérdida potencial de ventas. |
| Exactitud de inventario | coincidencia físico vs sistema | Confiabilidad. |
| Cobertura por producto | stock / demanda diaria | Días disponibles. |
| Stock por sucursal | stock segmentado por unidad | Gestión territorial. |
11.2 Fórmula: rotación de stock
Rotación de stock = costo de ventas / stock promedio
def rotacion_stock(costo_ventas, stock_promedio):
if stock_promedio == 0:
return 0
return costo_ventas / stock_promedio
11.3 Fórmula: días de cobertura
Días de cobertura = stock_actual / venta_promedio_diaria
def dias_cobertura(stock_actual, venta_promedio_diaria):
if venta_promedio_diaria == 0:
return None
return stock_actual / venta_promedio_diaria
11.4 Fórmula: stock crítico
def es_stock_critico(stock_actual, stock_minimo):
return stock_actual < stock_minimo
Con plazo proveedor:
def evaluar_stock_critico(stock_actual, venta_promedio_diaria, plazo_reposicion):
if venta_promedio_diaria == 0:
return False
dias_cobertura = stock_actual / venta_promedio_diaria
return dias_cobertura < plazo_reposicion
11.5 Tensiones de stock asociadas
| KPI | Tensión posible |
|---|---|
| Stock crítico alto | Stock crítico comercial. |
| Stock valorizado alto + rotación baja | Stock inmovilizado. |
| Stock total alto + quiebres altos | Stock mal compuesto. |
| Compras urgentes altas | Compras reactivas. |
| Diferencia físico-sistema alta | Baja confiabilidad de inventario. |
12. KPIs de compras
12.1 KPIs base de compras
| KPI | Fórmula | Lectura |
|---|---|---|
| Compras totales | suma compras | Volumen comprado. |
| Precio promedio de compra | total comprado / unidades | Costo de reposición. |
| Variación de costo | costo actual vs costo anterior | Presión sobre margen. |
| Plazo promedio proveedor | días entre orden y recepción | Velocidad de abastecimiento. |
| Cumplimiento proveedor | entregas en plazo / entregas totales | Calidad del proveedor. |
| Compras urgentes | compras urgentes / compras totales | Planificación débil. |
| Dependencia proveedor | compras proveedor / compras totales | Riesgo de concentración. |
| Órdenes pendientes | órdenes no recibidas | Riesgo operativo. |
| Recepción con diferencia | recepciones observadas / total | Problemas de control. |
| Ahorro por negociación | precio lista - precio negociado | Gestión de compras. |
12.2 Fórmula: cumplimiento proveedor
Cumplimiento proveedor = entregas_en_plazo / entregas_totales
def cumplimiento_proveedor(entregas_en_plazo, entregas_totales):
if entregas_totales == 0:
return 0
return entregas_en_plazo / entregas_totales
12.3 Fórmula: dependencia proveedor
Dependencia proveedor = compras_al_proveedor / compras_totales
def dependencia_proveedor(compras_proveedor, compras_totales):
if compras_totales == 0:
return 0
return compras_proveedor / compras_totales
12.4 Tensiones asociadas
| KPI | Tensión posible |
|---|---|
| Cumplimiento proveedor bajo | Proveedor crítico. |
| Dependencia alta | Riesgo de abastecimiento. |
| Compras urgentes altas | Compras reactivas. |
| Costo de compra sube | Margen futuro en riesgo. |
| Órdenes pendientes críticas | Stock crítico futuro. |
13. KPIs de RRHH
13.1 KPIs base de RRHH
| KPI | Fórmula | Lectura |
|---|---|---|
| Dotación total | cantidad empleados | Tamaño de estructura. |
| Costo laboral total | sueldos + cargas + variables | Peso de personas. |
| Costo laboral sobre ventas | costo laboral / ventas | Eficiencia de estructura. |
| Productividad por empleado | ventas o tareas / empleado | Producción por persona. |
| Ausentismo | horas ausentes / horas esperadas | Disponibilidad del equipo. |
| Rotación de personal | bajas / dotación promedio | Estabilidad. |
| Comisiones totales | suma comisiones | Costo variable comercial. |
| Comisión sobre margen | comisión / margen generado | Calidad del incentivo. |
| Tareas cumplidas por responsable | tareas cerradas / asignadas | Ejecución. |
| Dependencia de persona clave | procesos críticos concentrados | Riesgo organizativo. |
13.2 Fórmula: costo laboral sobre ventas
Costo laboral sobre ventas = costo_laboral_total / ventas_netas
def costo_laboral_sobre_ventas(costo_laboral_total, ventas_netas):
if ventas_netas == 0:
return 0
return costo_laboral_total / ventas_netas
13.3 Fórmula: comisión sobre margen
Comisión sobre margen = comision_pagada / margen_bruto_generado
def comision_sobre_margen(comision_pagada, margen_generado):
if margen_generado == 0:
return 0
return comision_pagada / margen_generado
13.4 Tensiones asociadas
| KPI | Tensión posible |
|---|---|
| Costo laboral sobre ventas alto | Costo laboral desalineado. |
| Comisión alta + margen bajo | Comisión desalineada. |
| Productividad baja | Productividad invisible. |
| Ausentismo alto | Ausentismo operativo. |
| Procesos concentrados | Dependencia de persona clave. |
14. KPIs de operaciones
14.1 KPIs base de operaciones
| KPI | Fórmula | Lectura |
|---|---|---|
| Tareas abiertas | cantidad tareas pendientes | Carga operativa. |
| Tareas vencidas | vencidas / total | Incumplimiento. |
| Tiempo promedio de cierre | fecha cierre - fecha creación | Velocidad de ejecución. |
| Cumplimiento SLA | procesos en plazo / procesos totales | Calidad operativa. |
| Reclamos abiertos | reclamos sin resolver | Riesgo cliente. |
| Reclamos reincidentes | reclamos repetidos / total | Problema de causa raíz. |
| Entregas a tiempo | entregas en plazo / entregas totales | Cumplimiento operativo. |
| Reprocesos | tareas reprocesadas / total | Calidad de proceso. |
| Capacidad utilizada | carga utilizada / capacidad total | Saturación. |
| Cuellos de botella | tareas acumuladas por etapa | Fricción operativa. |
14.2 Fórmula: cumplimiento de tareas
Cumplimiento = tareas_cerradas_en_fecha / tareas_asignadas
def cumplimiento_tareas(tareas_cerradas_en_fecha, tareas_asignadas):
if tareas_asignadas == 0:
return 1
return tareas_cerradas_en_fecha / tareas_asignadas
14.3 Fórmula: tasa de vencimiento
Tasa de vencimiento = tareas_vencidas / tareas_totales
def tasa_vencimiento(tareas_vencidas, tareas_totales):
if tareas_totales == 0:
return 0
return tareas_vencidas / tareas_totales
14.4 Tensiones asociadas
| KPI | Tensión posible |
|---|---|
| Tareas vencidas altas | Dirección sin ejecución. |
| Reclamos reincidentes | Operación-cliente desalineada. |
| Tiempo de cierre alto | Cuello de botella. |
| SLA bajo | Sobrecarga operativa. |
| Reprocesos altos | Baja calidad operativa. |
15. KPIs de dirección y workflow
15.1 KPIs base de dirección
| KPI | Fórmula | Lectura |
|---|---|---|
| Decisiones tomadas | cantidad decisiones | Volumen directivo. |
| Acciones creadas | acciones derivadas | Bajada a ejecución. |
| Acciones cerradas | acciones cerradas / creadas | Cumplimiento. |
| Acciones vencidas | vencidas / creadas | Riesgo de ejecución. |
| Tiempo de cierre | promedio días cierre | Velocidad. |
| Reincidencia de problemas | problemas repetidos / total | Aprendizaje débil. |
| Acciones sin responsable | acciones sin dueño / total | Accountability débil. |
| Acciones sin KPI asociado | acciones sin KPI / total | Acción sin medición. |
| Escalamientos | tareas escaladas / críticas | Gestión de bloqueo. |
| FARO Score | modelo compuesto | Salud ejecutiva. |
15.2 Fórmula: ratio de ejecución directiva
Ratio de ejecución = acciones_cerradas / decisiones_tomadas
def ratio_ejecucion(decisiones_tomadas, acciones_cerradas):
if decisiones_tomadas == 0:
return 0
return acciones_cerradas / decisiones_tomadas
15.3 Fórmula: acciones sin responsable
Acciones sin responsable = acciones_sin_responsable / acciones_totales
def acciones_sin_responsable(acciones_sin_responsable, acciones_totales):
if acciones_totales == 0:
return 0
return acciones_sin_responsable / acciones_totales
15.4 Tensiones asociadas
| KPI | Tensión posible |
|---|---|
| Muchas decisiones + pocas acciones | Dirección sin ejecución. |
| Acciones vencidas altas | Accountability débil. |
| Problemas reincidentes | Aprendizaje débil. |
| Acciones sin KPI | Gestión sin medición. |
| Escalamientos altos | Cuello de botella directivo. |
16. KPIs de clientes
16.1 KPIs base de clientes
| KPI | Fórmula | Lectura |
|---|---|---|
| Ventas por cliente | suma ventas cliente | Volumen. |
| Margen por cliente | margen cliente / ventas cliente | Rentabilidad. |
| Mora por cliente | deuda vencida cliente | Riesgo. |
| Días de cobranza cliente | promedio días cobro | Calidad de cobro. |
| Frecuencia de compra | compras por período | Fidelidad. |
| Ticket promedio cliente | ventas / operaciones | Valor. |
| Reclamos por cliente | reclamos / operaciones | Calidad percibida. |
| Cliente concentrado | ventas cliente / ventas totales | Dependencia comercial. |
| Rentabilidad ajustada por cobranza | margen - costo financiero | Rentabilidad real. |
| Riesgo cliente FARO | score compuesto | Riesgo integral. |
16.2 Fórmula: concentración de cliente
Concentración cliente = ventas_cliente / ventas_totales
def concentracion_cliente(ventas_cliente, ventas_totales):
if ventas_totales == 0:
return 0
return ventas_cliente / ventas_totales
16.3 Tensión asociada
| KPI | Tensión posible |
|---|---|
| Cliente vende mucho + margen bajo | Cliente grande poco rentable. |
| Cliente vende mucho + mora alta | Cliente grande riesgoso. |
| Reclamos altos | Cliente en riesgo. |
| Concentración alta | Dependencia comercial. |
17. KPIs de proveedores
17.1 KPIs base de proveedores
| KPI | Fórmula | Lectura |
|---|---|---|
| Compras por proveedor | compras proveedor / total | Dependencia. |
| Cumplimiento en plazo | entregas en plazo / total | Confiabilidad. |
| Variación precio proveedor | precio actual vs anterior | Presión de costo. |
| Reclamos proveedor | entregas observadas / total | Calidad. |
| Plazo promedio entrega | promedio días entrega | Abastecimiento. |
| Dependencia crítica | compras proveedor crítico / total | Riesgo. |
| Proveedor alternativo disponible | sí/no | Resiliencia. |
| Score proveedor FARO | compuesto | Salud de relación. |
17.2 Fórmula: score proveedor simple
Score proveedor =
cumplimiento × 40%
+ calidad × 25%
+ estabilidad_precio × 20%
+ plazo × 15%
def score_proveedor(cumplimiento, calidad, estabilidad_precio, plazo):
return round(
cumplimiento * 0.40 +
calidad * 0.25 +
estabilidad_precio * 0.20 +
plazo * 0.15,
2
)
18. KPIs de calidad de datos
18.1 KPIs base
| KPI | Fórmula | Lectura |
|---|---|---|
| Completitud | campos completos / requeridos | Cobertura. |
| Validez | registros válidos / totales | Formato correcto. |
| Consistencia | coincidencias / comparaciones | Cruce entre fuentes. |
| Trazabilidad | registros con origen / total | Auditoría. |
| Duplicados | duplicados / total | Limpieza. |
| Actualización | registros actualizados / total | Frescura del dato. |
| Calidad módulo | score compuesto | Preparación del módulo. |
18.2 Fórmula: score calidad de datos
Score calidad =
completitud × 25%
+ validez × 20%
+ consistencia × 20%
+ trazabilidad × 15%
+ actualización × 10%
+ unicidad × 10%
def score_calidad_datos(completitud, validez, consistencia, trazabilidad, actualizacion, unicidad):
return round(
completitud * 0.25 +
validez * 0.20 +
consistencia * 0.20 +
trazabilidad * 0.15 +
actualizacion * 0.10 +
unicidad * 0.10,
2
)
19. KPIs por industria
19.1 Construcción / insumos
KPIs prioritarios:
ventas netas
margen bruto
descuento promedio
días de cobranza
stock crítico
stock inmovilizado
rotación
comisión sobre margen
cliente grande riesgoso
compras urgentes
costo logístico sobre venta
canjes pendientes de evaluación
referidos pagados
KPIs específicos:
| KPI | Fórmula / lectura |
|---|---|
| Margen por familia de material | margen por cemento, hierro, sanitarios, grifería, etc. |
| Stock crítico por producto clave | productos alta rotación bajo mínimo. |
| Canje sobre ventas | ventas por canje / ventas totales. |
| Referidos sobre margen | comisión referido / margen generado. |
| Comisión ajustada por cobranza | comisión ponderada por cobro efectivo. |
19.2 Retail
ticket promedio
ventas por sucursal
margen por categoría
rotación
quiebre producto estrella
promoción sobre margen
merma
devoluciones
conversión
stock por sucursal
19.3 Salud
ocupación
turnos utilizados
ausentismo paciente
tiempo de espera
costo por prestación
margen por servicio
productividad profesional
reclamos
uso de insumos críticos
19.4 Logística
entregas a tiempo
costo por km
costo por entrega
combustible por km
utilización de flota
cumplimiento SLA
reclamos por entrega
rentabilidad por cliente
mantenimiento preventivo
19.5 Hotelería
ocupación
ADR
RevPAR
cancelaciones
costo por habitación ocupada
margen por canal
reclamos
tiempo de respuesta
mantenimiento por habitación
Fórmula:
RevPAR = ADR × ocupación
def revpar(adr, ocupacion):
return adr * ocupacion
20. Umbrales de KPIs
Cada KPI debe tener umbrales.
Ejemplo: margen bruto para insumos de construcción.
| Estado | Umbral |
|---|---|
| Verde | > 25% |
| Amarillo | 20% - 25% |
| Rojo | < 20% |
Ejemplo: descuento promedio.
| Estado | Umbral |
|---|---|
| Verde | <= 6% |
| Amarillo | 6% - 10% |
| Rojo | > 10% |
Código:
def evaluar_umbral(valor, verde_min=None, amarillo_min=None, rojo_max=None):
if verde_min is not None and valor >= verde_min:
return "verde"
if amarillo_min is not None and valor >= amarillo_min:
return "amarillo"
return "rojo"
21. KPI con confianza
FARO no debe mostrar solo el valor. También debe mostrar confianza.
Ejemplo:
{
"kpi": "margen_bruto",
"value": 0.21,
"status": "rojo",
"confidence": 0.78,
"warning": "Costo unitario incompleto en 18% de registros"
}
La lectura sería:
Margen en rojo, pero con confianza media. Requiere completar costos para diagnóstico fuerte.
Esto es profesional. Lo otro es vender humo con decimales.
22. Cálculo de confianza del KPI
Confianza KPI =
calidad de datos × 40%
+ completitud de fuentes × 25%
+ trazabilidad × 20%
+ validación de fórmula × 15%
def confianza_kpi(calidad_datos, completitud_fuentes, trazabilidad, validacion_formula):
return round(
calidad_datos * 0.40 +
completitud_fuentes * 0.25 +
trazabilidad * 0.20 +
validacion_formula * 0.15,
2
)
23. Tabla SQL de biblioteca de KPIs
CREATE TABLE kpi_library (
kpi_code TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
area_id TEXT,
module TEXT,
formula_text TEXT,
formula_sql TEXT,
frequency TEXT,
responsible_role TEXT,
approver_role TEXT,
dimensions JSONB,
data_sources JSONB,
thresholds JSONB,
related_tensions JSONB,
suggested_actions JSONB,
score_impact JSONB,
industry_scope JSONB,
level TEXT,
active BOOLEAN DEFAULT true,
created_at TIMESTAMP DEFAULT now(),
updated_at TIMESTAMP DEFAULT now()
);
24. Tabla SQL de resultados KPI
CREATE TABLE kpi_results (
kpi_result_id TEXT PRIMARY KEY,
kpi_code TEXT NOT NULL,
company_id TEXT,
branch_id TEXT,
area_id TEXT,
responsible_id TEXT,
period_start DATE,
period_end DATE,
value NUMERIC,
target NUMERIC,
status TEXT,
confidence NUMERIC,
source_load_ids JSONB,
calculated_at TIMESTAMP DEFAULT now()
);
25. Ejemplo SQL: margen bruto
SELECT
branch_id,
DATE_TRUNC('month', sale_date) AS period,
SUM(net_amount) AS ventas_netas,
SUM(total_cost) AS costo_total,
CASE
WHEN SUM(net_amount) = 0 THEN 0
ELSE (SUM(net_amount) - SUM(total_cost)) / SUM(net_amount)
END AS gross_margin_rate
FROM fact_sales
GROUP BY branch_id, DATE_TRUNC('month', sale_date);
26. Ejemplo SQL: días de cobranza promedio
SELECT
customer_id,
AVG(collection_date - sale_date) AS avg_days_to_collect
FROM fact_collections
WHERE collection_date IS NOT NULL
GROUP BY customer_id;
27. Ejemplo SQL: acciones vencidas
SELECT
responsible_id,
COUNT(*) FILTER (WHERE status <> 'closed' AND due_date < CURRENT_DATE) AS overdue_actions,
COUNT(*) AS total_actions,
CASE
WHEN COUNT(*) = 0 THEN 0
ELSE COUNT(*) FILTER (WHERE status <> 'closed' AND due_date < CURRENT_DATE)::NUMERIC / COUNT(*)
END AS overdue_rate
FROM action_workflow
GROUP BY responsible_id;
28. Relación KPI → señal → alerta → tensión
Ejemplo:
KPI:
Margen bruto = 21%
Señal:
Margen cayó 7 puntos.
Regla:
Si margen < 22% y descuento > 10%, alerta crítica.
Alerta:
Margen crítico con descuento alto.
Tensión:
Crecimiento no rentable.
Acción:
Auditar descuentos mayores al 8%.
Esto demuestra que el KPI no queda aislado. Alimenta dirección.
29. KPI y FARO Score
Cada KPI puede afectar el FARO Score.
Ejemplo:
| KPI | Impacto score |
|---|---|
| Margen bruto en rojo | -6 puntos |
| Días de cobranza críticos | -5 puntos |
| Stock crítico alto | -5 puntos |
| Acciones vencidas críticas | -4 puntos |
| Calidad de datos baja | -3 puntos |
| Acciones cerradas en fecha | +3 puntos |
| Margen recuperado | +4 puntos |
Código simple:
def impacto_kpi_score(kpi_status, peso):
if kpi_status == "verde":
return peso
if kpi_status == "amarillo":
return 0
if kpi_status == "rojo":
return -peso
return 0
30. Gobernanza de KPIs
Los KPIs deben tener dueños. Si no, nadie responde.
| KPI | Responsable | Aprobador |
|---|---|---|
| Ventas netas | Comercial | Dirección |
| Margen bruto | Comercial + Finanzas | Dirección |
| Días de cobranza | Finanzas | Dirección |
| Stock crítico | Stock | Dirección / Operaciones |
| Compras urgentes | Compras | Dirección |
| Comisión sobre margen | Comercial + RRHH | Dirección |
| Acciones vencidas | Responsable de área | Gerencia General |
| FARO Score | Dirección | Directorio |
Regla sana:
Todo KPI relevante debe tener dueño. KPI sin dueño es decoración.
31. Frecuencia de medición
| KPI | Frecuencia recomendada |
|---|---|
| Ventas | diaria |
| Margen | diaria / semanal |
| Stock crítico | diaria |
| Caja | diaria |
| Cobranza | diaria / semanal |
| Gastos | semanal / mensual |
| RRHH | semanal / mensual |
| Acciones | tiempo real / diaria |
| FARO Score | diaria / semanal |
| Calidad de datos | por carga / semanal |
32. Niveles FARO por KPI
| Nivel | Tipo de KPIs |
|---|---|
| Base / Lite | ventas, margen, caja, stock, acciones simples. |
| Pro | KPIs por área, sucursal, responsable, alertas y tensiones iniciales. |
| Enterprise | KPIs multiárea, multiempresa, score por módulo, workflows. |
| Neural | KPIs predictivos, relaciones avanzadas, simulación, aprendizaje. |
33. KPIs que conviene activar primero
Para una implementación inicial sólida:
1. Ventas netas
2. Margen bruto
3. Descuento promedio
4. Días de cobranza
5. Mora total
6. Stock crítico
7. Rotación de stock
8. Stock inmovilizado
9. Comisión sobre margen
10. Acciones vencidas
11. Cumplimiento de acciones
12. Gasto sobre ventas
13. Caja disponible
14. Compras urgentes
15. Cumplimiento proveedor
Con esos 15, FARO ya puede detectar varias tensiones serias.
34. Ejemplo completo: KPI Margen bruto
Ficha
{
"kpi_code": "gross_margin_rate",
"nombre": "Margen bruto",
"area": "Comercial / Finanzas",
"formula": "(ventas_netas - costo_ventas) / ventas_netas",
"fuentes": ["fact_sales", "dim_product"],
"dimensiones": ["producto", "cliente", "vendedor", "sucursal", "canal"],
"frecuencia": "diaria / semanal",
"responsable": "Gerente Comercial",
"consultados": ["Finanzas", "Compras"],
"umbral_verde": "> 25%",
"umbral_amarillo": "20% - 25%",
"umbral_rojo": "< 20%",
"tensiones": [
"margen_deteriorado",
"crecimiento_no_rentable",
"comision_desalineada"
],
"acciones": [
"auditar_descuentos",
"revisar_costos",
"ajustar_politica_de_precios"
]
}
Lectura ejecutiva
El margen bruto indica si la empresa está vendiendo con rentabilidad suficiente. Si cae mientras las ventas suben, FARO debe analizar descuentos, costos, mix de productos, comisiones y cobranza.
35. Ejemplo completo: KPI Stock crítico
Ficha
{
"kpi_code": "critical_stock_rate",
"nombre": "Stock crítico",
"area": "Stock / Compras",
"formula": "productos_bajo_minimo / productos_totales",
"fuentes": ["fact_inventory", "dim_product", "fact_sales"],
"dimensiones": ["producto", "categoría", "sucursal", "proveedor"],
"frecuencia": "diaria",
"responsable": "Responsable de Stock",
"consultados": ["Compras", "Comercial"],
"tensiones": [
"stock_critico_comercial",
"compras_reactivas",
"proveedor_critico"
],
"acciones": [
"activar_reposicion",
"buscar_proveedor_alternativo",
"priorizar_compra_producto_clave"
]
}
36. Ejemplo completo: KPI Cumplimiento de acciones
Ficha
{
"kpi_code": "action_completion_rate",
"nombre": "Cumplimiento de acciones",
"area": "Dirección / Workflow",
"formula": "acciones_cerradas_en_fecha / acciones_asignadas",
"fuentes": ["action_workflow"],
"dimensiones": ["responsable", "área", "prioridad", "tensión"],
"frecuencia": "diaria",
"responsable": "Gerencia General",
"tensiones": [
"direccion_sin_ejecucion",
"accountability_debil"
],
"acciones": [
"escalar_tareas_vencidas",
"reasignar_responsable",
"revisar_comite_de_seguimiento"
]
}
37. Riesgos si no existe biblioteca de KPIs
| Riesgo | Consecuencia |
|---|---|
| KPIs mal definidos | Dirección mira números equivocados. |
| Fórmulas inconsistentes | Cada área mide distinto. |
| Sin fuente clara | No se puede auditar. |
| Sin responsable | Nadie responde por el desvío. |
| Sin umbrales | No se sabe cuándo actuar. |
| Sin tensión asociada | El KPI no genera diagnóstico. |
| Sin acción sugerida | El KPI no baja a ejecución. |
| Sin confianza | FARO parece seguro aunque el dato sea débil. |
| Sin versionado | No se sabe cuándo cambió la fórmula. |
38. Versionado de KPIs
Las fórmulas pueden cambiar. FARO debe versionarlas.
Ejemplo:
Margen v1:
(ventas - costo) / ventas
Margen v2:
(ventas - costo - descuentos adicionales) / ventas
Margen v3:
margen ajustado por cobranza y comisión
Tabla sugerida:
CREATE TABLE kpi_formula_versions (
version_id TEXT PRIMARY KEY,
kpi_code TEXT NOT NULL,
version TEXT NOT NULL,
formula_text TEXT,
formula_sql TEXT,
active_from DATE,
active_to DATE,
changed_by TEXT,
change_reason TEXT,
created_at TIMESTAMP DEFAULT now()
);
39. Output final del Anexo 17
Al finalizar este anexo, FARO debe tener definido:
1. Biblioteca inicial de 300 a 400 KPIs.
2. Estructura estándar de ficha KPI.
3. Fórmulas por KPI.
4. Fuentes de datos por KPI.
5. Dimensiones de análisis.
6. Responsables y aprobadores.
7. Frecuencia de medición.
8. Umbrales verde / amarillo / rojo.
9. KPIs por área.
10. KPIs por industria.
11. KPIs por versión FARO.
12. Relación KPI → señal.
13. Relación KPI → alerta.
14. Relación KPI → tensión.
15. Relación KPI → acción.
16. Relación KPI → FARO Score.
17. Score de confianza de KPI.
18. Versionado de fórmulas.
19. Gobernanza de KPIs.
20. KPIs iniciales recomendados para MVP.
40. Conexión con otros anexos
| Próximo anexo | Qué recibe desde Anexo 17 |
|---|---|
| Anexo 14 — Modelo ejecutivo FARO | Datos estructurados para calcular KPIs. |
| Anexo 15 — Modelo por industria | KPIs específicos por rubro. |
| Anexo 16 — Relaciones entre datos | KPIs conectados entre sí. |
| Anexo 18 — Objetivos y umbrales | Metas, rangos y semáforos por KPI. |
| Anexo 19 — Señales FARO | Variaciones y movimientos relevantes de KPIs. |
| Anexo 20 — Reglas de negocio | Condiciones que usan KPIs como input. |
| Anexo 21 — Alertas FARO | Alertas disparadas por KPIs fuera de rango. |
| Anexo 22 — Biblioteca de tensiones | Tensiones construidas con combinaciones de KPIs. |
| Anexo 24 — Confianza del diagnóstico | Confianza según calidad del KPI. |
| Anexo 25 — Priorización ejecutiva | Priorización según criticidad de KPIs. |
| Anexo 29 — Biblioteca de acciones | Acciones sugeridas según KPI desviado. |
| Anexo 35 — FARO Score | KPIs como insumo principal del score. |
| Anexo 37 — Recalibración | Ajuste de fórmulas, pesos y umbrales. |
La Biblioteca de KPIs FARO define qué mide el sistema, cómo lo mide, de dónde sale el dato, quién responde, qué umbral activa alerta, qué tensión puede detectar y qué acción puede recomendar. No es una lista de indicadores: es la base técnica para transformar datos en dirección ejecutiva.