ANEXO 26
Recomendaciones FARO
Este anexo corresponde a la Fase 7 — Decisión, etapa “Recomendaciones FARO”. Es la capa donde FARO Connect toma diagnósticos priorizados y los convierte en sugerencias concretas de decisión, acción, revisión, validación o escalamiento.
1. Objetivo del anexo
El objetivo del Anexo 26 — Recomendaciones FARO es responder:
¿Qué conviene hacer ahora, según el diagnóstico, la prioridad, la confianza y el contexto de la empresa?
Hasta acá FARO ya hizo esto:
Datos
→ KPIs
→ Señales
→ Reglas
→ Alertas
→ Tensiones
→ Diagnóstico
→ Confianza
→ Priorización
Ahora falta el paso clave:
¿Y entonces qué hacemos?
Ejemplo:
Diagnóstico:
Crecimiento no rentable.
Prioridad:
P2 — Alta.
Confianza:
0.84 — alta.
Recomendación FARO:
Auditar operaciones con descuento mayor al 8%, revisar fórmula de comisión para incluir margen y cobranza, y priorizar cobranza de clientes grandes.
Una recomendación FARO no debe ser un consejo liviano. Debe ser una salida accionable, trazable y defendible.
2. Tesis del Anexo 26
La tesis es:
FARO Connect no debe limitarse a decir qué está pasando. Debe recomendar qué hacer, con qué prioridad, con qué responsable, con qué plazo y con qué nivel de confianza.
Un dashboard tradicional dice:
Margen bajo.
FARO debe decir:
El margen está bajo por descuentos altos. Se recomienda auditar operaciones con descuento mayor al 8%, revisar autorizaciones comerciales y analizar margen por vendedor, producto y cliente. Responsable sugerido: Gerente Comercial. Plazo: 72 horas.
La diferencia es brutal.
El dashboard informa. FARO orienta decisión.
3. Qué es una recomendación FARO
Una recomendación FARO es una sugerencia estructurada de acción o decisión basada en evidencia.
Debe incluir:
diagnóstico origen
tensión relacionada
prioridad
confianza
acción sugerida
responsable
áreas consultadas
vencimiento
impacto esperado
riesgo de no actuar
nivel de automatización permitido
requiere aprobación o no
impacto en FARO Score
Ejemplo:
{
"recommendation_code": "REC_COMMERCIAL_001",
"title": "Auditar descuentos altos",
"origin_diagnosis": "crecimiento_no_rentable",
"priority": "P2",
"confidence": 0.84,
"recommended_action": "Auditar operaciones con descuento mayor al 8%",
"responsible_role": "Gerente Comercial",
"consulted_roles": ["Finanzas", "RRHH"],
"due_hours": 72,
"expected_impact": {
"gross_margin": "+2 a +4 puntos",
"discount_rate": "-3 a -5 puntos"
},
"requires_approval": false,
"automation_level": "crear_accion_sugerida"
}
4. Diferencia entre diagnóstico, recomendación y acción
| Concepto | Qué responde | Ejemplo |
|---|---|---|
| Diagnóstico | Qué está pasando. | Crecimiento no rentable. |
| Recomendación | Qué conviene hacer. | Auditar descuentos y revisar comisión. |
| Acción | Tarea concreta asignada. | Juan debe auditar ventas con descuento >8% antes del viernes. |
La recomendación está entre el diagnóstico y la acción.
Diagnóstico → Recomendación → Acción → Seguimiento → Resultado
5. Tipos de recomendaciones FARO
FARO debería manejar distintas familias de recomendaciones.
| Tipo de recomendación | Qué hace | Ejemplo |
|---|---|---|
| Correctiva | Corrige un problema actual. | Auditar descuentos altos. |
| Preventiva | Evita un problema futuro. | Anticipar reposición antes de quiebre. |
| Validación | Pide revisar datos antes de actuar. | Completar costos faltantes. |
| Escalamiento | Eleva el tema a un superior. | Escalar acción crítica vencida. |
| Política | Sugiere cambiar una regla de gestión. | Ajustar política de crédito. |
| Proceso | Mejora circuito operativo. | Implementar aprobación de descuentos. |
| Estructural | Cambia diseño organizativo o modelo. | Rediseñar comisión comercial. |
| Financiera | Protege caja o rentabilidad. | Reprogramar pagos y priorizar cobranza. |
| Comercial | Mejora ventas, margen o clientes. | Reenfocar mix de productos rentables. |
| Data quality | Mejora datos para decidir mejor. | Normalizar productos y costos. |
6. Biblioteca inicial de recomendaciones FARO
Una base seria debería tener:
200 a 400 recomendaciones iniciales
Escalable a:
1.000+ recomendaciones por industria, tensión, KPI, alerta, diagnóstico y tipo de acción.
Distribución inicial sugerida:
| Familia | Cantidad inicial |
|---|---|
| Comercial | 40-70 |
| Finanzas | 40-70 |
| Stock / Compras | 40-80 |
| RRHH / incentivos | 25-50 |
| Operaciones | 30-60 |
| Dirección / workflow | 30-60 |
| Calidad de datos | 20-40 |
| Clientes | 20-40 |
| Proveedores | 20-40 |
| Industria específica | 80-200 |
Para MVP conviene arrancar con:
30 a 60 recomendaciones críticas
Bien diseñadas, no 400 frases de consultor con corbata y poca calle.
7. Estructura estándar de una recomendación FARO
{
"recommendation_code": "REC_STOCK_001",
"title": "Anticipar reposición de producto crítico",
"description": "El producto aún supera el stock mínimo, pero los días de cobertura son menores al plazo de reposición.",
"origin_type": "diagnosis",
"origin_code": "riesgo_futuro_stock_critico",
"related_tension": "stock_critico_comercial",
"related_kpis": [
"stock_actual",
"dias_cobertura",
"plazo_proveedor",
"venta_promedio_diaria"
],
"priority_level": "P2",
"confidence_min": 0.75,
"responsible_role": "Responsable de Compras",
"consulted_roles": ["Stock", "Comercial"],
"recommended_action": "Generar reposición preventiva o activar proveedor alternativo.",
"due_hours": 48,
"expected_impact": {
"stockout_risk": "reducir",
"ventas_perdidas": "evitar"
},
"requires_approval": false,
"automation_level": "crear_tarea",
"score_impact_expected": "+2 a +4"
}
8. Campos obligatorios de una recomendación
| Campo | Para qué sirve |
|---|---|
| recommendation_code | Identificador único. |
| title | Nombre claro. |
| description | Explicación ejecutiva. |
| origin_type | Viene de KPI, señal, alerta, tensión o diagnóstico. |
| origin_code | Código del origen. |
| related_tension | Tensión vinculada. |
| related_kpis | KPIs que la sustentan. |
| priority_level | Prioridad P1-P5. |
| confidence_min | Confianza mínima requerida. |
| responsible_role | Responsable sugerido. |
| consulted_roles | Áreas consultadas. |
| recommended_action | Qué hacer. |
| due_hours | Plazo sugerido. |
| expected_impact | Qué se espera mejorar. |
| requires_approval | Si requiere aprobación humana. |
| automation_level | Qué puede automatizar FARO. |
| score_impact_expected | Impacto esperado en FARO Score. |
9. Niveles de recomendación
FARO debería clasificar recomendaciones según fuerza y permiso de ejecución.
| Nivel | Significado | Ejemplo |
|---|---|---|
| Observación | Solo mirar evolución. | Margen levemente bajo. |
| Validación | Revisar datos antes de actuar. | Costos incompletos. |
| Sugerencia | Acción recomendada, no obligatoria. | Revisar descuentos. |
| Acción recomendada | Conviene crear tarea. | Auditar ventas bajo margen. |
| Acción prioritaria | Debe ejecutarse con plazo. | Reposición de producto crítico. |
| Escalamiento | Debe subir a Dirección. | Caja bajo mínimo. |
| Decisión ejecutiva | Requiere aprobación. | Cambiar política de comisión. |
10. Fórmula de fuerza de recomendación
Fuerza recomendación =
prioridad del diagnóstico × 25%
+ confianza del diagnóstico × 20%
+ impacto esperado × 20%
+ urgencia × 15%
+ bajo riesgo de implementación × 10%
+ evidencia histórica de efectividad × 10%
Código:
def fuerza_recomendacion(
prioridad_diagnostico,
confianza_diagnostico,
impacto_esperado,
urgencia,
bajo_riesgo,
efectividad_historica
):
return round(
prioridad_diagnostico * 0.25 +
confianza_diagnostico * 0.20 +
impacto_esperado * 0.20 +
urgencia * 0.15 +
bajo_riesgo * 0.10 +
efectividad_historica * 0.10,
2
)
Lectura:
| Score | Salida |
|---|---|
| 85-100 | Acción prioritaria / escalamiento. |
| 65-84 | Acción recomendada. |
| 45-64 | Sugerencia o validación. |
| 25-44 | Observación. |
| <25 | No recomendar todavía. |
11. Recomendación según confianza
La confianza define qué tan fuerte debe ser la recomendación.
| Confianza | Salida recomendada |
|---|---|
| 0.85 - 1.00 | Recomendar acción concreta. |
| 0.70 - 0.84 | Recomendar acción con observación. |
| 0.50 - 0.69 | Recomendar validación previa. |
| < 0.50 | No recomendar acción; mejorar datos. |
Código:
def tipo_recomendacion_por_confianza(confianza):
if confianza >= 0.85:
return "accion_concreta"
if confianza >= 0.70:
return "accion_con_observacion"
if confianza >= 0.50:
return "validacion_previa"
return "mejorar_datos"
Ejemplo:
Margen bajo con confianza 0.88:
Auditar descuentos.
Margen bajo con confianza 0.58:
Completar costos y recalcular margen antes de decidir.
12. Recomendaciones comerciales
12.1 Crecimiento no rentable
Diagnóstico:
Ventas suben, margen baja, descuentos suben y cobranza empeora.
Recomendaciones:
Auditar operaciones con descuento mayor al 8%.
Revisar margen por vendedor, cliente, producto y canal.
Revisar fórmula de comisión para incluir margen y cobranza.
Limitar descuentos sin autorización.
Priorizar cobranza de clientes de alto volumen.
Código:
def recomendar_crecimiento_no_rentable(ctx):
recomendaciones = []
if ctx["descuento_promedio"] > 0.10:
recomendaciones.append("auditar_descuentos_altos")
if ctx["margen_var"] < -0.05:
recomendaciones.append("analizar_margen_por_producto_vendedor_cliente")
if ctx["dias_cobranza_var"] > 7:
recomendaciones.append("priorizar_cobranza_clientes_grandes")
if ctx.get("comision_var", 0) > 0 and ctx["margen_var"] < 0:
recomendaciones.append("revisar_formula_comision_por_margen_y_cobranza")
return recomendaciones
12.2 Margen deteriorado por descuentos
Recomendaciones:
Crear autorización obligatoria para descuentos superiores al umbral.
Auditar ventas con margen bajo.
Revisar lista de precios.
Analizar descuentos por vendedor.
Bloquear descuentos automáticos sin margen mínimo.
Código:
def recomendar_margen_descuento(margen, descuento):
if margen < 0.20 and descuento > 0.10:
return {
"recommendation": "auditar_y_limitar_descuentos_altos",
"responsible": "Gerente Comercial",
"due_hours": 72,
"requires_approval": False
}
return None
12.3 Cliente grande poco rentable
Recomendaciones:
Revisar margen real del cliente.
Revisar condiciones de crédito.
Recalcular rentabilidad ajustada por cobranza.
Renegociar precio o plazo.
Limitar nuevas ventas a condición de pago parcial.
Código:
def recomendar_cliente_grande_riesgoso(concentracion, margen, dias_mora):
if concentracion > 0.15 and margen < 0.20 and dias_mora > 30:
return {
"recommendation": "revisar_condiciones_cliente_clave",
"actions": [
"calcular_rentabilidad_ajustada_por_cobranza",
"renegociar_condiciones",
"definir_limite_credito"
],
"requires_approval": True,
"approver": "Dirección"
}
return None
13. Recomendaciones financieras
13.1 Caja bajo mínimo
Recomendaciones:
Priorizar cobranza inmediata.
Revisar pagos no críticos.
Reprogramar compromisos negociables.
Suspender compras no urgentes.
Activar seguimiento diario de caja.
Revisar clientes con deuda vencida.
Código:
def recomendar_caja_bajo_minimo(caja_actual, caja_minima):
if caja_actual < caja_minima:
return {
"recommendation": "plan_caja_urgente",
"priority": "P1",
"responsible": "Finanzas",
"due_hours": 24,
"actions": [
"priorizar_cobranza",
"reprogramar_pagos_no_criticos",
"revisar_compras_no_urgentes",
"actualizar_cashflow_7_dias"
],
"requires_approval": True,
"approver": "Dirección"
}
return None
13.2 Cobranza lenta
Recomendaciones:
Segmentar clientes por mora e importe.
Priorizar clientes de alto saldo.
Cambiar condición de venta en clientes riesgosos.
Asignar responsable de cobranza por cliente.
Revisar incentivos comerciales vinculados a cobro.
Código:
def recomendar_cobranza_lenta(dias_cobranza, objetivo=30):
if dias_cobranza > objetivo:
return {
"recommendation": "plan_recuperacion_cobranza",
"responsible": "Finanzas",
"consulted": ["Comercial"],
"actions": [
"rankear_clientes_por_deuda_vencida",
"contactar_top_10_clientes_morosos",
"revisar_condiciones_credito",
"vincular_comision_a_cobro"
]
}
return None
13.3 Gasto desalineado
Recomendaciones:
Abrir gasto por área y centro de costo.
Separar gastos operativos de gastos de Directorio.
Detectar gastos recurrentes crecientes.
Congelar gastos discrecionales.
Definir presupuesto mensual por área.
Código:
def recomendar_gasto_desalineado(gastos_var, ventas_var):
if gastos_var > ventas_var and gastos_var > 0.10:
return {
"recommendation": "auditoria_gastos_por_area",
"responsible": "Finanzas",
"actions": [
"abrir_gastos_por_centro_costo",
"identificar_gastos_recurrentes_crecientes",
"separar_gastos_directorio",
"definir_tope_gasto_por_area"
]
}
return None
14. Recomendaciones de stock
14.1 Stock crítico comercial
Recomendaciones:
Activar reposición urgente.
Buscar proveedor alternativo.
Redistribuir stock entre sucursales.
Priorizar venta a clientes estratégicos.
Revisar mínimos por producto crítico.
Código:
def recomendar_stock_critico(producto_critico, dias_cobertura, plazo_proveedor):
if producto_critico and dias_cobertura < plazo_proveedor:
return {
"recommendation": "reposicion_preventiva_producto_critico",
"priority": "P2",
"responsible": "Compras",
"consulted": ["Stock", "Comercial"],
"due_hours": 48,
"actions": [
"emitir_orden_reposicion",
"consultar_proveedor_alternativo",
"revisar_stock_en_sucursales",
"ajustar_stock_minimo"
]
}
return None
14.2 Stock inmovilizado
Recomendaciones:
Liquidar productos sin rotación.
Redistribuir entre sucursales.
Bloquear nuevas compras de productos lentos.
Armar promoción controlada por margen.
Revisar causa de baja rotación.
Código:
def recomendar_stock_inmovilizado(stock_inmovilizado_ratio):
if stock_inmovilizado_ratio > 0.20:
return {
"recommendation": "plan_reduccion_stock_inmovilizado",
"responsible": "Stock / Comercial",
"consulted": ["Finanzas"],
"actions": [
"listar_productos_sin_movimiento",
"bloquear_compras_productos_lentos",
"definir_promocion_con_margen_minimo",
"redistribuir_stock_por_sucursal"
]
}
return None
14.3 Stock mal compuesto
Recomendaciones:
Separar productos críticos, lentos y de oportunidad.
Redefinir mínimos y máximos.
Revisar compras por rotación real.
Bloquear reposición de productos lentos.
Activar compras de productos clave.
Código:
def recomendar_stock_mal_compuesto(stock_total_var, rotacion_var, quiebres):
if stock_total_var > 0.10 and rotacion_var < -0.10 and quiebres > 0:
return {
"recommendation": "redefinir_mix_stock",
"responsible": "Stock",
"consulted": ["Compras", "Comercial", "Finanzas"],
"actions": [
"clasificar_productos_abc",
"definir_minimos_por_rotacion",
"priorizar_productos_clave",
"reducir_lentos"
]
}
return None
15. Recomendaciones de compras y proveedores
15.1 Proveedor crítico
Recomendaciones:
Buscar proveedor alternativo.
Homologar segundo proveedor.
Renegociar plazo y condiciones.
Revisar dependencia por producto.
Aumentar stock de seguridad temporal.
Código:
def recomendar_proveedor_critico(cumplimiento, dependencia, alternativa):
if cumplimiento < 0.75 and dependencia > 0.40:
acciones = [
"renegociar_plazo_y_cumplimiento",
"revisar_productos_criticos_asociados"
]
if not alternativa:
acciones.append("homologar_proveedor_alternativo")
return {
"recommendation": "mitigar_riesgo_proveedor_critico",
"responsible": "Compras",
"consulted": ["Stock", "Dirección"],
"actions": acciones
}
return None
15.2 Compras reactivas
Recomendaciones:
Implementar planificación de reposición.
Definir mínimos y máximos por producto.
Cruzar rotación, plazo proveedor y stock actual.
Reducir compras urgentes.
Crear tablero de compras próximas.
Código:
def recomendar_compras_reactivas(compras_urgentes_ratio):
if compras_urgentes_ratio > 0.20:
return {
"recommendation": "crear_plan_reposicion",
"responsible": "Compras",
"consulted": ["Stock"],
"actions": [
"calcular_minimos_maximos",
"generar_alertas_reposicion",
"revisar_compras_urgentes_recurrentes",
"armar_calendario_compras"
]
}
return None
16. Recomendaciones de RRHH e incentivos
16.1 Comisión desalineada
Recomendaciones:
Recalcular comisión considerando margen.
Condicionar parte de la comisión al cobro.
Simular escenarios antes de cambiar fórmula.
Separar comisión por producto, cliente o tipo de operación.
Evitar castigar demasiado al vendedor si el margen depende de costos externos.
Código:
def recomendar_comision_desalineada(comision_var, margen_var, cobranza_var):
if comision_var > 0 and (margen_var < 0 or cobranza_var > 0):
return {
"recommendation": "redisenar_comision_con_simulacion",
"responsible": "Comercial / RRHH",
"consulted": ["Finanzas", "Dirección"],
"requires_approval": True,
"actions": [
"simular_comision_por_margen",
"incluir_factor_cobranza",
"definir_piso_de_margen",
"validar_impacto_en_motivacion"
]
}
return None
Regla prudente:
FARO puede recomendar revisar comisiones. No debe cambiar comisiones automáticamente. Ahí se toca conducta humana, y si se hace mal, se compra un problema nuevo con factura mensual.
16.2 Productividad baja
Recomendaciones:
Medir productividad por rol.
Comparar carga real vs resultado.
Detectar responsables saturados.
Reasignar tareas.
Revisar capacitación o proceso.
Código:
def recomendar_productividad_baja(productividad, objetivo):
if productividad < objetivo:
return {
"recommendation": "analizar_productividad_por_rol",
"responsible": "RRHH / Responsable de área",
"actions": [
"comparar_productividad_por_rol",
"revisar_carga_de_trabajo",
"detectar_cuellos_de_botella",
"definir_plan_mejora"
]
}
return None
17. Recomendaciones de operaciones y workflow
17.1 Dirección sin ejecución
Recomendaciones:
Toda decisión debe generar acción.
Toda acción debe tener responsable.
Toda acción debe tener vencimiento.
Toda acción debe tener KPI afectado.
Acciones críticas vencidas deben escalar automáticamente.
No cerrar acciones sin evidencia.
Código:
def recomendar_direccion_sin_ejecucion(ratio_acciones, ratio_vencidas):
if ratio_acciones < 0.70 or ratio_vencidas > 0.20:
return {
"recommendation": "activar_workflow_obligatorio",
"responsible": "Gerencia General",
"actions": [
"obligar_responsable_por_accion",
"definir_vencimiento",
"asociar_kpi_o_tension",
"escalar_acciones_criticas_vencidas",
"cerrar_solo_con_evidencia"
],
"requires_approval": False
}
return None
17.2 Acción crítica vencida
Recomendaciones:
Escalar al superior.
Pedir estado inmediato.
Reasignar si no hay avance.
Actualizar vencimiento con motivo.
Impactar FARO Score si persiste.
Código:
def recomendar_accion_critica_vencida(accion):
if accion["prioridad"] == "critica" and accion["dias_vencida"] >= 1:
return {
"recommendation": "escalar_accion_critica",
"responsible": accion["responsable"],
"escalate_to": "Gerencia General",
"due_hours": 24,
"actions": [
"solicitar_estado_inmediato",
"definir_plan_cierre",
"reasignar_si_no_hay_avance"
]
}
return None
18. Recomendaciones de calidad de datos
18.1 Margen no confiable
Recomendaciones:
Completar costos faltantes.
Normalizar productos.
Validar tabla maestra de productos.
Recalcular margen.
Recién después decidir política comercial.
Código:
def recomendar_mejorar_datos_margen(score_calidad_costos):
if score_calidad_costos < 0.70:
return {
"recommendation": "corregir_datos_para_margen",
"responsible": "Data Owner / Comercial / Compras",
"actions": [
"completar_costos_faltantes",
"normalizar_productos",
"validar_maestro_productos",
"recalcular_margen"
],
"blocks_sensitive_decision": True
}
return None
18.2 Stock no confiable
Recomendaciones:
Actualizar inventario.
Conciliar físico vs sistema.
Identificar productos con diferencias.
Bloquear diagnóstico fuerte de stock hasta validar.
Código:
def recomendar_validar_stock(score_calidad_stock):
if score_calidad_stock < 0.70:
return {
"recommendation": "validar_stock_antes_de_decidir",
"responsible": "Stock",
"actions": [
"conciliar_stock_fisico_sistema",
"actualizar_movimientos_pendientes",
"reprocesar_kpis_stock"
]
}
return None
19. Recomendaciones por industria
19.1 Construcción / insumos
Recomendaciones típicas:
Auditar descuentos por vendedor y producto.
Revisar comisión por margen y cobranza.
Priorizar stock crítico de cemento, hierro y productos de alta rotación.
Evaluar canjes con modelo financiero.
Crear política de referidos.
Separar ventas a obra, mostrador y cuenta corriente.
Definir mínimos por sucursal y familia.
19.2 Retail
Revisar promociones por margen incremental.
Redistribuir stock entre sucursales.
Liquidar productos lentos con margen mínimo.
Priorizar productos estrella sin quiebre.
Analizar ticket promedio por sucursal.
19.3 Salud
Redistribuir agenda de profesionales saturados.
Revisar costo por prestación.
Reducir tiempos de espera.
Priorizar insumos críticos.
Analizar rentabilidad por servicio.
19.4 Logística
Rediseñar rutas no rentables.
Renegociar tarifas con clientes deficitarios.
Controlar combustible por kilómetro.
Aumentar mantenimiento preventivo.
Revisar utilización de flota.
19.5 Hotelería
Recalibrar tarifas si ocupación alta y ADR bajo.
Reducir dependencia de canales caros.
Priorizar mantenimiento en habitaciones con reclamos.
Analizar RevPAR por canal.
19.6 Shopping / real estate
Revisar locatarios morosos clave.
Renegociar renta o condiciones.
Analizar mix comercial por zona.
Activar plan para locales vacantes.
Cruzar tráfico con ventas de locatarios.
20. Recomendaciones sensibles
Hay recomendaciones que siempre deben requerir aprobación humana.
| Recomendación | Requiere aprobación |
|---|---|
| Bloquear cliente | Sí |
| Cambiar fórmula de comisión | Sí |
| Modificar política de crédito | Sí |
| Aprobar o rechazar canje | Sí |
| Despedir, sancionar o modificar rol | Sí |
| Cambiar proveedor crítico | Sí, según impacto |
| Suspender compras | Sí, si afecta operación |
| Reestructurar área | Sí |
| Cambiar precios masivamente | Sí |
Regla:
FARO recomienda. Dirección aprueba cuando el impacto es sensible, humano, legal, financiero o estratégico.
21. Nivel de automatización de recomendaciones
| Nivel | Qué permite | Ejemplo |
|---|---|---|
| Solo lectura | Mostrar recomendación. | Observar tendencia. |
| Crear tarea sugerida | Usuario aprueba creación. | Revisar descuento. |
| Crear tarea automática | FARO crea acción. | Validar dato faltante. |
| Escalar automático | FARO escala por regla. | Acción crítica vencida. |
| Bloqueo preventivo | FARO bloquea flujo técnico. | KPI no confiable. |
| Decisión humana obligatoria | FARO no ejecuta. | Bloquear cliente. |
Código:
def nivel_automatizacion(tipo_recomendacion, sensibilidad):
if sensibilidad == "alta":
return "decision_humana_obligatoria"
if tipo_recomendacion == "validacion_datos":
return "crear_tarea_automatica"
if tipo_recomendacion == "accion_vencida":
return "escalar_automatico"
if tipo_recomendacion == "operativa":
return "crear_tarea_sugerida"
return "solo_lectura"
22. Recomendación y responsable
Cada recomendación debe tener RACI.
Ejemplo:
| Recomendación | R | A | C | I |
|---|---|---|---|---|
| Auditar descuentos | Gerente Comercial | Dirección | Finanzas | Administración |
| Priorizar cobranza | Finanzas | Dirección | Comercial | Administración |
| Reponer producto crítico | Compras | Dirección | Stock / Comercial | Sucursal |
| Rediseñar comisión | Comercial / RRHH | Dirección | Finanzas | Vendedores |
| Validar costos | Data Owner / Compras | Dirección | Comercial | Finanzas |
| Evaluar canje | Finanzas / Dirección | Directorio | Legal / Comercial | Administración |
23. Recomendación y vencimiento
| Prioridad | Vencimiento recomendado |
|---|---|
| P1 | 24 horas o menos |
| P2 | 48 a 72 horas |
| P3 | 7 días |
| P4 | 15 a 30 días |
| P5 | Observación |
Código:
def vencimiento_recomendacion(priority_level):
if priority_level == "P1":
return 24
if priority_level == "P2":
return 72
if priority_level == "P3":
return 7 * 24
if priority_level == "P4":
return 30 * 24
return None
24. Recomendación e impacto esperado
Una recomendación debe estimar qué busca mejorar.
Ejemplo:
{
"recommendation": "auditar_descuentos_altos",
"expected_impact": {
"discount_rate": "-3 a -5 puntos",
"gross_margin": "+2 a +4 puntos",
"cash_risk": "reducir",
"score": "+2 a +5 puntos"
}
}
Código conceptual:
def estimar_impacto_recomendacion(tipo):
impactos = {
"auditar_descuentos_altos": {
"gross_margin": "+2 a +4 puntos",
"discount_rate": "-3 a -5 puntos"
},
"priorizar_cobranza": {
"cash": "mejora esperada",
"days_sales_outstanding": "-5 a -10 dias"
},
"reponer_stock_critico": {
"stockout_risk": "reduce",
"lost_sales": "reduce"
}
}
return impactos.get(tipo, {})
25. Recomendación y riesgo de no actuar
Toda recomendación importante debe explicar el costo de no hacer nada.
Ejemplo:
Si no se auditan descuentos:
el margen puede seguir deteriorándose y la empresa puede crecer sin rentabilidad.
Si no se repone stock crítico:
pueden perderse ventas y clientes por falta de disponibilidad.
Si no se corrigen costos:
FARO seguirá calculando margen con baja confianza.
Código:
def riesgo_no_actuar(recommendation_code):
riesgos = {
"auditar_descuentos_altos": "continuar deteriorando margen",
"priorizar_cobranza": "aumentar tension de caja",
"reponer_stock_critico": "perder ventas por quiebre",
"validar_costos": "decidir con margen no confiable",
"redisenar_comision": "seguir premiando ventas no rentables"
}
return riesgos.get(recommendation_code, "riesgo_no_definido")
26. Recomendación y FARO Score
Las recomendaciones pueden tener impacto esperado en FARO Score.
Ejemplo:
Cerrar acción P1 en plazo: +3 puntos.
Resolver tensión de stock crítico: +4 puntos.
Reducir descuento y mejorar margen: +5 puntos.
Corregir calidad de datos crítica: +2 puntos de confianza del Score.
Código:
def score_impacto_recomendacion(recommendation_code):
mapa = {
"auditar_descuentos_altos": 4,
"priorizar_cobranza": 5,
"reponer_stock_critico": 4,
"validar_costos": 2,
"activar_workflow_obligatorio": 5,
"redisenar_comision": 6
}
return mapa.get(recommendation_code, 0)
27. Recomendación y simulación
Algunas recomendaciones deben simularse antes de ejecutar.
Ejemplos:
Cambiar fórmula de comisión.
Modificar política de crédito.
Aceptar canje.
Subir precios.
Cambiar proveedor crítico.
Reducir stock de una familia.
Regla:
Si la recomendación afecta margen, conducta comercial, caja o relaciones sensibles, conviene simular antes de ejecutar.
Código conceptual:
def requiere_simulacion(recommendation_code):
recomendaciones_con_simulacion = {
"redisenar_comision",
"cambiar_politica_credito",
"evaluar_canje",
"subir_precios_masivo",
"cambiar_proveedor_critico"
}
return recommendation_code in recomendaciones_con_simulacion
28. Recomendaciones conflictivas
A veces dos recomendaciones chocan.
Ejemplo:
Comercial recomienda vender más.
Finanzas recomienda restringir crédito.
Stock recomienda no vender producto crítico sin reposición.
FARO debe detectar conflicto.
Código:
def detectar_conflicto_recomendaciones(recomendaciones):
codigos = set(r["recommendation_code"] for r in recomendaciones)
conflictos = []
if "aumentar_ventas_credito" in codigos and "restringir_credito" in codigos:
conflictos.append("conflicto_comercial_financiero")
if "liquidar_stock" in codigos and "proteger_margen" in codigos:
conflictos.append("conflicto_stock_margen")
return conflictos
Salida FARO:
Hay conflicto entre crecer ventas a crédito y proteger caja. Dirección debe definir prioridad: volumen o liquidez.
Esto es muy valioso, porque las empresas no fallan solo por falta de datos; fallan por objetivos cruzados.
29. Motor de recomendaciones FARO
Flujo recomendado:
Diagnóstico priorizado
→ validar confianza
→ identificar tensión
→ buscar recomendaciones aplicables
→ filtrar por industria
→ filtrar por sensibilidad
→ estimar impacto
→ definir responsable
→ definir vencimiento
→ decidir automatización
→ generar recomendación
→ convertir en acción si corresponde
Código conceptual:
def motor_recomendaciones(diagnostico, biblioteca_recomendaciones):
recomendaciones = []
for rec in biblioteca_recomendaciones:
if diagnostico["confidence"] < rec.get("confidence_min", 0.70):
continue
if diagnostico["diagnosis_code"] not in rec.get("applicable_diagnoses", []):
continue
if diagnostico["industry"] not in rec.get("industry_scope", ["all"]):
continue
recomendaciones.append({
"recommendation_code": rec["recommendation_code"],
"title": rec["title"],
"priority": diagnostico["priority_level"],
"responsible": rec["responsible_role"],
"due_hours": vencimiento_recomendacion(diagnostico["priority_level"]),
"requires_approval": rec["requires_approval"],
"automation_level": rec["automation_level"],
"expected_impact": rec.get("expected_impact")
})
return recomendaciones
30. Tabla SQL de biblioteca de recomendaciones
CREATE TABLE recommendation_library (
recommendation_code TEXT PRIMARY KEY,
title TEXT NOT NULL,
description TEXT,
recommendation_type TEXT,
applicable_diagnoses JSONB,
applicable_tensions JSONB,
applicable_alerts JSONB,
related_kpis JSONB,
industry_scope JSONB,
confidence_min NUMERIC DEFAULT 0.70,
default_priority TEXT,
responsible_role TEXT,
consulted_roles JSONB,
suggested_due_hours INTEGER,
expected_impact JSONB,
risk_of_inaction TEXT,
requires_approval BOOLEAN DEFAULT false,
approver_role TEXT,
automation_level TEXT,
score_impact_expected NUMERIC,
active BOOLEAN DEFAULT true,
version TEXT DEFAULT '1.0',
created_at TIMESTAMP DEFAULT now(),
updated_at TIMESTAMP DEFAULT now()
);
31. Tabla SQL de recomendaciones generadas
CREATE TABLE recommendation_events (
recommendation_event_id TEXT PRIMARY KEY,
recommendation_code TEXT NOT NULL,
company_id TEXT,
branch_id TEXT,
area_id TEXT,
responsible_id TEXT,
origin_type TEXT,
origin_id TEXT,
diagnosis_id TEXT,
tension_event_id TEXT,
alert_id TEXT,
priority_level TEXT,
confidence NUMERIC,
title TEXT,
recommendation_text TEXT,
expected_impact JSONB,
risk_of_inaction TEXT,
requires_approval BOOLEAN,
approver_id TEXT,
automation_level TEXT,
status TEXT DEFAULT 'suggested',
created_at TIMESTAMP DEFAULT now(),
accepted_at TIMESTAMP,
rejected_at TIMESTAMP,
converted_to_action_at TIMESTAMP
);
32. Tabla SQL de feedback de recomendaciones
CREATE TABLE recommendation_feedback (
feedback_id TEXT PRIMARY KEY,
recommendation_event_id TEXT NOT NULL,
feedback_type TEXT NOT NULL,
result_description TEXT,
impact_measured JSONB,
accepted_by TEXT,
rejected_reason TEXT,
created_at TIMESTAMP DEFAULT now()
);
Valores posibles:
accepted
rejected
converted_to_action
effective
not_effective
partially_effective
needs_adjustment
33. Estados de una recomendación
| Estado | Significado |
|---|---|
| Suggested | FARO la sugirió. |
| Reviewed | Responsable la revisó. |
| Accepted | Fue aceptada. |
| Rejected | Fue rechazada con motivo. |
| Needs validation | Requiere validar datos. |
| Needs approval | Requiere aprobación superior. |
| Converted to action | Pasó a tarea concreta. |
| In progress | Ya se está ejecutando. |
| Measured | Se midió resultado. |
| Closed | Ciclo cerrado. |
34. Ejemplo completo: recomendación comercial
Diagnóstico
Crecimiento no rentable.
Prioridad
P2 — Alta.
Confianza
0.84 — alta.
Recomendación FARO
Auditar operaciones con descuento mayor al 8%, revisar margen por vendedor y producto, y recalibrar comisión para incluir margen y cobranza.
Responsable
R: Gerente Comercial
A: Dirección
C: Finanzas, RRHH
I: Administración
Vencimiento
72 horas para auditoría inicial.
15 días para propuesta de ajuste de comisión.
Impacto esperado
Reducir descuento promedio.
Recuperar margen.
Mejorar calidad de venta.
Evitar comisión sobre operaciones no rentables.
35. Ejemplo completo: recomendación de stock
Diagnóstico
Riesgo futuro de stock crítico.
Datos
Stock actual: 180
Stock mínimo: 150
Venta diaria: 45
Plazo proveedor: 7 días
Cobertura: 4 días
Recomendación
Activar reposición preventiva y consultar proveedor alternativo, porque la cobertura actual no alcanza para cubrir el plazo de reposición.
Responsable
Compras.
Plazo
48 horas.
Impacto esperado
Evitar quiebre de producto clave.
Reducir ventas perdidas.
Proteger satisfacción del cliente.
36. Ejemplo completo: recomendación financiera
Diagnóstico
Caja débil con ventas altas.
Recomendación
Priorizar cobranza de clientes con mayor deuda vencida, revisar pagos no críticos de la semana y actualizar flujo de caja a 7 y 30 días.
Responsable
Finanzas.
Aprobador
Dirección.
Plazo
24 horas.
Impacto esperado
Mejorar liquidez inmediata.
Reducir riesgo de incumplimiento.
Alinear ventas con caja.
37. Ejemplo completo: recomendación de calidad de datos
Diagnóstico
Margen no confiable por costos incompletos.
Recomendación
Completar costos unitarios faltantes, normalizar productos sin maestro y recalcular margen antes de tomar decisiones comerciales.
Responsable
Data Owner + Compras + Comercial.
Plazo
7 días.
Impacto esperado
Aumentar confianza del KPI margen.
Mejorar calidad del diagnóstico.
Evitar decisiones comerciales con información débil.
38. Recomendación explicada para un socio técnico
Para convencer técnicamente, hay que explicarlo así:
La recomendación no nace de una frase libre de IA.
Nace de una cadena estructurada:
1. KPIs calculados.
2. Señales detectadas.
3. Reglas activadas.
4. Alertas generadas.
5. Tensiones detectadas.
6. Diagnóstico ejecutivo.
7. Confianza del diagnóstico.
8. Priorización.
9. Biblioteca de recomendaciones.
10. Filtro por industria, sensibilidad y aprobación.
11. Conversión a acción.
La IA puede ayudar a redactar mejor, pero no debe inventar la recomendación.
Arquitectura correcta:
Motor FARO decide la lógica.
IA redacta la explicación.
Humano aprueba lo sensible.
Workflow ejecuta.
Score mide resultado.
39. Prompt interno para IA explicativa
Actúa como analista ejecutivo FARO.
Con base únicamente en el payload estructurado recibido, redacta una recomendación ejecutiva clara, concreta y accionable.
No inventes causas, datos ni acciones.
Distingue hechos de hipótesis.
Incluye:
1. Qué recomienda FARO.
2. Por qué lo recomienda.
3. Qué impacto busca.
4. Responsable sugerido.
5. Plazo sugerido.
6. Si requiere aprobación.
7. Nivel de confianza.
Payload:
{recommendation_payload}
Regla:
La IA redacta la recomendación; la biblioteca FARO define qué recomendación corresponde.
40. Ejemplo de payload de recomendación
{
"diagnosis": "crecimiento_no_rentable",
"priority": "P2",
"confidence": 0.84,
"industry": "construction_supplies",
"kpis": {
"sales_variation": 0.18,
"margin_variation": -0.07,
"discount_rate": 0.12,
"days_to_collect": 43
},
"recommended_actions": [
"auditar_descuentos_altos",
"revisar_comision",
"priorizar_cobranza"
],
"responsible": "Gerente Comercial",
"consulted": ["Finanzas", "RRHH"],
"due_hours": 72
}
Salida esperada:
FARO recomienda auditar las operaciones con descuento mayor al 8%, revisar la fórmula de comisión y priorizar la cobranza de clientes grandes. La recomendación se basa en una tensión de crecimiento no rentable: las ventas crecieron 18%, pero el margen cayó 7 puntos, el descuento promedio llegó a 12% y los días de cobranza subieron a 43. Responsable sugerido: Gerente Comercial. Plazo inicial: 72 horas. Confianza: alta.
41. Recomendaciones y aprendizaje
FARO debe medir si la recomendación funcionó.
Debe registrar:
recomendación emitida,
si fue aceptada,
si se convirtió en acción,
si se ejecutó,
cuánto tardó,
qué KPI cambió,
si la tensión se resolvió,
si el score mejoró,
si el usuario la rechazó y por qué.
Ejemplo:
{
"recommendation": "auditar_descuentos_altos",
"accepted": true,
"converted_to_action": true,
"result_30_days": {
"discount_rate": "-4 puntos",
"gross_margin": "+3 puntos"
},
"learning": "La recomendación fue efectiva para este contexto."
}
Esto alimenta el Anexo 36 — Aprendizaje.
42. Errores comunes en recomendaciones
| Error | Consecuencia |
|---|---|
| Recomendar “revisar” sin decir qué | No se ejecuta nada. |
| Recomendar sin responsable | Nadie responde. |
| Recomendar sin plazo | Se posterga. |
| Recomendar sin confianza | Se actúa con falsa seguridad. |
| Recomendar sin prioridad | Todo parece igual de importante. |
| Recomendar acciones sensibles automáticamente | Riesgo humano, legal o financiero. |
| Recomendar sin medir resultado | No hay aprendizaje. |
| Recomendar igual para todas las industrias | El sistema parece genérico. |
| Recomendar con IA libre sin reglas | Bonito, pero peligroso. |
43. Testing de recomendaciones
Test recomendación comercial
def test_recomendar_crecimiento_no_rentable():
ctx = {
"descuento_promedio": 0.12,
"margen_var": -0.07,
"dias_cobranza_var": 10,
"comision_var": 0.15
}
recomendaciones = recomendar_crecimiento_no_rentable(ctx)
assert "auditar_descuentos_altos" in recomendaciones
assert "priorizar_cobranza_clientes_grandes" in recomendaciones
assert "revisar_formula_comision_por_margen_y_cobranza" in recomendaciones
Test no recomendar con baja confianza
def test_no_recomendar_accion_fuerte_con_baja_confianza():
confianza = 0.48
tipo = tipo_recomendacion_por_confianza(confianza)
assert tipo == "mejorar_datos"
Test recomendación sensible requiere aprobación
def test_comision_requiere_aprobacion():
rec = recomendar_comision_desalineada(
comision_var=0.15,
margen_var=-0.07,
cobranza_var=10
)
assert rec["requires_approval"] is True
assert rec["responsible"] == "Comercial / RRHH"
44. Riesgos si no existe esta capa
| Riesgo | Consecuencia |
|---|---|
| FARO diagnostica, pero no guía | El usuario queda solo. |
| Alertas sin acción | El sistema informa, pero no conduce. |
| Recomendaciones genéricas | Baja adopción. |
| Acciones mal sugeridas | Se pierde confianza. |
| Automatización imprudente | Riesgo operativo o humano. |
| Sin medición posterior | FARO no aprende. |
| Sin aprobación en temas sensibles | Riesgo legal, financiero o cultural. |
| Sin personalización por industria | El sistema parece un dashboard más. |
45. Output final del Anexo 26
Al finalizar este anexo, FARO debe tener definido:
1. Biblioteca inicial de recomendaciones.
2. Tipos de recomendaciones.
3. Estructura estándar de recomendación.
4. Recomendaciones por diagnóstico.
5. Recomendaciones por tensión.
6. Recomendaciones por alerta.
7. Recomendaciones por área.
8. Recomendaciones por industria.
9. Recomendaciones según confianza.
10. Recomendaciones según prioridad.
11. Recomendaciones sensibles.
12. Niveles de automatización.
13. Responsable y RACI por recomendación.
14. Vencimientos sugeridos.
15. Impacto esperado.
16. Riesgo de no actuar.
17. Relación recomendación → acción.
18. Relación recomendación → simulación.
19. Relación recomendación → FARO Score.
20. Tablas SQL de recomendaciones.
21. Motor de recomendaciones.
22. Feedback de recomendaciones.
23. Testing de recomendaciones.
24. Uso controlado de IA explicativa.
25. Aprendizaje por efectividad de recomendaciones.
46. Conexión con otros anexos
| Próximo anexo | Qué recibe desde Anexo 26 |
|---|---|
| Anexo 17 — Biblioteca de KPIs | KPIs que sustentan recomendaciones. |
| Anexo 19 — Señales FARO | Señales que anticipan acciones posibles. |
| Anexo 20 — Reglas de negocio | Condiciones que activan recomendaciones. |
| Anexo 21 — Alertas FARO | Alertas que originan recomendaciones. |
| Anexo 22 — Biblioteca de tensiones | Tensiones que determinan qué conviene hacer. |
| Anexo 23 — Diagnóstico ejecutivo | Diagnósticos que se traducen en recomendaciones. |
| Anexo 24 — Confianza del diagnóstico | Nivel de seguridad para recomendar. |
| Anexo 25 — Priorización ejecutiva | Orden y fuerza de cada recomendación. |
| Anexo 27 — Simulación de escenarios | Validación previa de recomendaciones sensibles. |
| Anexo 28 — FARO Action Guide | Traducción de recomendaciones en guía operativa. |
| Anexo 29 — Biblioteca de acciones | Acciones concretas derivadas de recomendaciones. |
| Anexo 31 — Workflow y escalamiento | Ejecución, seguimiento y escalamiento. |
| Anexo 35 — FARO Score | Impacto esperado y real de recomendaciones. |
| Anexo 36 — Aprendizaje | Medición de efectividad para mejorar futuras recomendaciones. |
| Anexo 37 — Recalibración | Ajuste de recomendaciones según resultados reales. |
Las Recomendaciones FARO son la capa que transforma diagnósticos priorizados en sugerencias concretas de decisión o acción. Cada recomendación debe indicar qué hacer, por qué hacerlo, quién responde, qué plazo tiene, qué impacto se espera, qué confianza tiene, si requiere aprobación y cómo puede afectar el FARO Score.