ANEXO 30
Responsables, roles y RACI FARO
Este anexo corresponde a la Fase 8 — Ejecución, etapa “Responsables y RACI”. Es la capa donde FARO Connect asigna responsables claros a acciones, alertas, tensiones, diagnósticos, recomendaciones, simulaciones y decisiones.
Hasta el Anexo 29, FARO ya puede crear acciones concretas. Ahora falta una pregunta crítica:
¿Quién responde realmente por cada cosa?
Porque una acción sin responsable es una intención. Una acción con responsable, vencimiento y evidencia empieza a ser gestión.
1. Objetivo del anexo
El objetivo del Anexo 30 — Responsables, roles y RACI FARO es definir cómo FARO asigna:
Responsable
Aprobador
Consultados
Informados
Escalamiento
Sustitutos
Dueño del dato
Dueño del proceso
Dueño de la decisión
Ejemplo simple:
Acción:
Auditar descuentos mayores al 8%.
R — Responsable:
Gerente Comercial.
A — Aprobador:
Dirección.
C — Consultados:
Finanzas, Administración, RRHH.
I — Informados:
Vendedores, Gerencia General.
Vencimiento:
72 horas.
Evidencia:
Informe de descuentos y propuesta de política.
Esto evita el clásico “pensé que lo veía otro”. Frase corta, costo alto.
2. Tesis del Anexo 30
La tesis es:
FARO Connect no puede dirigir si no sabe quién debe responder por cada alerta, tensión, diagnóstico, recomendación y acción.
Un sistema de dirección necesita accountability.
No alcanza con detectar:
Caja baja.
Margen deteriorado.
Stock crítico.
Acciones vencidas.
Comisión desalineada.
FARO debe decir:
Quién responde.
Quién aprueba.
Quién debe colaborar.
Quién debe enterarse.
Cuándo escala.
A quién escala.
Qué evidencia debe presentar cada rol.
Sin eso, FARO sería un sistema inteligente hablando al vacío.
3. Qué es RACI
RACI es una matriz de responsabilidad.
| Letra | Significado | Qué implica |
|---|---|---|
| R | Responsible / Responsable | Ejecuta o lidera la acción. |
| A | Accountable / Aprobador final | Responde por el resultado y aprueba. |
| C | Consulted / Consultado | Debe aportar información u opinión. |
| I | Informed / Informado | Debe estar enterado, pero no decide. |
Ejemplo:
Acción:
Revisar crédito de cliente grande moroso.
R:
Finanzas.
A:
Dirección.
C:
Comercial, Administración.
I:
Gerencia General.
Regla sana:
Una acción puede tener varios consultados, pero debe tener un solo responsable principal.
Si hay tres responsables principales, no hay responsable. Hay comité.
4. Diferencia entre responsable, aprobador y consultado
| Rol | Qué hace | Ejemplo |
|---|---|---|
| Responsable | Ejecuta la acción. | Finanzas arma plan de caja. |
| Aprobador | Valida o decide. | Dirección aprueba reprogramar pagos. |
| Consultado | Aporta datos o criterio. | Comercial informa clientes críticos. |
| Informado | Recibe visibilidad. | Gerencia General recibe reporte. |
Ejemplo de mala asignación:
Responsable: Comercial / Finanzas / Dirección.
Eso es ambiguo.
Ejemplo FARO:
R: Finanzas.
A: Dirección.
C: Comercial.
I: Gerencia General.
Mucho mejor. Menos poesía, más ejecución.
5. Tipos de responsables FARO
FARO debería distinguir distintos tipos de responsables.
| Tipo de responsable | Qué responde |
|---|---|
| Responsable de acción | Ejecuta una tarea concreta. |
| Responsable de área | Responde por un área funcional. |
| Responsable de KPI | Responde por la evolución de un indicador. |
| Responsable de dato | Responde por la calidad de una fuente. |
| Responsable de proceso | Responde por un flujo operativo. |
| Responsable de alerta | Atiende una alerta. |
| Responsable de tensión | Lidera resolución sistémica. |
| Responsable de diagnóstico | Valida la lectura ejecutiva. |
| Responsable de recomendación | Evalúa si se acepta o rechaza. |
| Responsable de decisión | Aprueba una decisión sensible. |
| Responsable de seguimiento | Controla avance y cierre. |
6. Estructura de roles FARO
FARO debe tener una tabla de roles, no solo nombres de personas.
Ejemplo:
{
"role_code": "ROLE_COMMERCIAL_MANAGER",
"role_name": "Gerente Comercial",
"area": "Comercial",
"can_approve": false,
"can_execute": true,
"can_escalate": true,
"default_superior_role": "Dirección",
"backup_role": "Jefe Comercial"
}
Por qué roles y no solo personas:
Las personas cambian.
Los cargos permanecen.
Las reglas deben asignarse por rol y luego mapearse a personas reales.
Ejemplo:
Regla:
Stock crítico → Responsable de Compras.
Asignación real:
Responsable de Compras = Laura Pérez.
7. Estructura estándar RACI FARO
Cada evento relevante debe tener RACI.
{
"entity_type": "action",
"entity_code": "ACT_COMMERCIAL_DISCOUNT_AUDIT",
"raci": {
"R": ["ROLE_COMMERCIAL_MANAGER"],
"A": ["ROLE_DIRECTION"],
"C": ["ROLE_FINANCE_MANAGER", "ROLE_HR_MANAGER"],
"I": ["ROLE_GENERAL_MANAGER"]
},
"escalation": {
"after_due_hours": 72,
"escalate_to": "ROLE_GENERAL_MANAGER"
}
}
8. Campos obligatorios de responsabilidad
| Campo | Para qué sirve |
|---|---|
| entity_type | Acción, alerta, tensión, diagnóstico, KPI, dato, etc. |
| entity_code | Código del elemento. |
| responsible_role | Rol responsable principal. |
| responsible_user_id | Persona asignada. |
| approver_role | Rol aprobador. |
| consulted_roles | Roles consultados. |
| informed_roles | Roles informados. |
| backup_role | Rol suplente. |
| escalation_role | A quién escala. |
| due_policy | Política de vencimiento. |
| evidence_owner | Quién debe cargar evidencia. |
9. Regla de oro: un solo R principal
FARO debe permitir varios colaboradores, pero un solo responsable principal.
Ejemplo correcto:
R: Gerente Comercial
A: Dirección
C: Finanzas, RRHH
I: Administración
Ejemplo débil:
R: Comercial, Finanzas, RRHH, Dirección
Eso parece integrador, pero no sirve. En la práctica, nadie se siente dueño.
Regla FARO:
Una acción = un responsable principal.
Una decisión sensible = un aprobador claro.
Una tensión sistémica = un líder de resolución.
10. Matriz RACI por tipo de evento
| Evento FARO | R | A | C | I |
|---|---|---|---|---|
| Alerta comercial | Gerente Comercial | Dirección | Finanzas | Administración |
| Alerta financiera | Finanzas | Dirección | Comercial | Gerencia General |
| Stock crítico | Compras / Stock | Dirección | Comercial / Finanzas | Sucursal |
| Comisión desalineada | Comercial / RRHH | Dirección | Finanzas | Vendedores |
| Cliente moroso grande | Finanzas | Dirección | Comercial | Administración |
| Canje | Finanzas / Dirección | Directorio | Legal / Comercial | Administración |
| Calidad de datos | Data Owner | Dirección | Área dueña del dato | Sistemas |
| Acción vencida | Responsable asignado | Responsable superior | Área involucrada | Dirección |
| Diagnóstico estratégico | Gerencia General | Dirección | Áreas afectadas | Directorio |
11. Responsables por área
11.1 Comercial
Responsabilidades típicas:
ventas
margen
descuentos
clientes
canales
vendedores
política comercial
mix de productos
comisiones comerciales junto con RRHH/Finanzas
Eventos típicos:
margen bajo
descuento alto
cliente poco rentable
crecimiento no rentable
comisión desalineada
canal no rentable
RACI ejemplo:
R: Gerente Comercial
A: Dirección
C: Finanzas, RRHH, Compras
I: Administración
11.2 Finanzas
Responsabilidades típicas:
caja
cobranza
mora
pagos
deuda
flujo operativo
presupuesto
gastos
rentabilidad financiera
Eventos típicos:
caja bajo mínimo
cobranza lenta
cliente moroso
gasto desalineado
flujo negativo
canje con riesgo financiero
RACI ejemplo:
R: Responsable de Finanzas
A: Dirección
C: Comercial, Administración
I: Gerencia General
11.3 Stock / Inventario
Responsabilidades típicas:
stock actual
stock físico
diferencias de inventario
mínimos
máximos
rotación
stock crítico
stock inmovilizado
redistribución
Eventos típicos:
stock crítico
stock mal compuesto
diferencia físico-sistema
stock inmovilizado
quiebre de producto clave
RACI ejemplo:
R: Responsable de Stock
A: Gerencia Operativa / Dirección
C: Compras, Comercial
I: Sucursales
11.4 Compras
Responsabilidades típicas:
proveedores
órdenes de compra
plazos
costos de reposición
compras urgentes
proveedores alternativos
negociación
abastecimiento
Eventos típicos:
proveedor crítico
compras reactivas
costo creciente
cobertura insuficiente
órdenes pendientes
RACI ejemplo:
R: Responsable de Compras
A: Dirección
C: Stock, Finanzas, Comercial
I: Sucursales
11.5 RRHH
Responsabilidades típicas:
dotación
ausentismo
productividad
roles
costo laboral
comisiones junto con Comercial/Finanzas
accountability
estructura
Eventos típicos:
comisión desalineada
costo laboral alto
ausentismo operativo
productividad baja
dependencia de persona clave
RACI ejemplo:
R: RRHH
A: Dirección
C: Finanzas, Responsable de área
I: Gerencia General
11.6 Operaciones
Responsabilidades típicas:
cumplimiento operativo
SLA
entregas
reclamos
procesos
cuellos de botella
capacidad
reprocesos
Eventos típicos:
SLA incumplido
reclamos recurrentes
demoras crecientes
cuello de botella
operación no sostiene promesa comercial
RACI ejemplo:
R: Responsable Operativo
A: Gerencia General
C: Comercial, Stock, Logística
I: Dirección
11.7 Data Owner / Sistemas
Responsabilidades típicas:
calidad de datos
integraciones
maestros
trazabilidad
normalización
fuentes
actualización
confiabilidad
Eventos típicos:
costos incompletos
productos sin maestro
clientes duplicados
stock desactualizado
fuente inconsistente
KPI con baja confianza
RACI ejemplo:
R: Data Owner
A: Dirección / Gerencia General
C: Área dueña del dato, Sistemas
I: Usuarios afectados
12. RACI por KPIs
Cada KPI crítico debe tener dueño.
Ejemplo:
| KPI | Responsable KPI | Aprobador | Consultados |
|---|---|---|---|
| Ventas netas | Gerente Comercial | Dirección | Administración |
| Margen bruto | Comercial / Finanzas | Dirección | Compras |
| Descuento promedio | Gerente Comercial | Dirección | Finanzas |
| Caja disponible | Finanzas | Dirección | Administración |
| Días de cobranza | Finanzas | Dirección | Comercial |
| Stock crítico | Stock / Compras | Dirección | Comercial |
| Stock inmovilizado | Stock | Dirección | Finanzas / Comercial |
| Comisión sobre margen | Comercial / RRHH | Dirección | Finanzas |
| Acciones vencidas | Gerencia General | Dirección | Responsables |
| Calidad de datos | Data Owner | Dirección | Áreas dueñas |
Código conceptual:
def responsable_kpi(kpi_code):
mapa = {
"ventas_netas": "Gerente Comercial",
"margen_bruto": "Comercial / Finanzas",
"caja_disponible": "Finanzas",
"dias_cobranza": "Finanzas",
"stock_critico": "Stock / Compras",
"comision_sobre_margen": "Comercial / RRHH",
"acciones_vencidas": "Gerencia General",
"calidad_datos": "Data Owner"
}
return mapa.get(kpi_code, "Responsable no definido")
13. RACI por tensiones
Las tensiones suelen involucrar varias áreas. Por eso necesitan un líder claro.
| Tensión | R | A | C | I |
|---|---|---|---|---|
| Crecimiento no rentable | Gerente Comercial | Dirección | Finanzas, RRHH, Stock | Administración |
| Caja débil con ventas altas | Finanzas | Dirección | Comercial | Gerencia General |
| Stock crítico comercial | Compras / Stock | Dirección | Comercial, Finanzas | Sucursales |
| Comisión desalineada | Comercial / RRHH | Dirección | Finanzas | Vendedores |
| Cliente grande riesgoso | Finanzas | Dirección | Comercial | Administración |
| Stock inmovilizado | Stock | Dirección | Comercial, Finanzas | Compras |
| Compras reactivas | Compras | Dirección | Stock, Finanzas | Comercial |
| Proveedor crítico | Compras | Dirección | Stock, Legal si aplica | Comercial |
| Dirección sin ejecución | Gerencia General | Dirección | Todas las áreas | Directorio |
| Datos insuficientes | Data Owner | Dirección | Área dueña del dato | Sistemas |
14. RACI por recomendaciones sensibles
Hay recomendaciones que requieren aprobación humana sí o sí.
| Recomendación sensible | R | A | C | I |
|---|---|---|---|---|
| Cambiar comisión | Comercial / RRHH | Dirección | Finanzas | Vendedores |
| Bloquear cliente | Finanzas | Dirección | Comercial / Legal | Administración |
| Aceptar canje | Finanzas / Dirección | Directorio | Legal / Comercial | Administración |
| Cambiar política de crédito | Finanzas | Dirección | Comercial | Administración |
| Subir precios masivamente | Comercial | Dirección | Finanzas / Compras | Sucursales |
| Cambiar proveedor crítico | Compras | Dirección | Stock / Finanzas | Comercial |
| Reestructurar área | Gerencia General / RRHH | Dirección | Legal / Finanzas | Área afectada |
Regla:
FARO puede sugerir. Las decisiones sensibles las aprueba un humano con rol formal.
15. Asignación automática de responsables
FARO puede asignar responsables automáticamente usando reglas.
Ejemplo:
def asignar_raci_por_evento(event_type, event_code):
reglas = {
"margin_critical": {
"R": ["Gerente Comercial"],
"A": ["Dirección"],
"C": ["Finanzas", "Compras"],
"I": ["Administración"]
},
"cash_below_minimum": {
"R": ["Finanzas"],
"A": ["Dirección"],
"C": ["Comercial"],
"I": ["Gerencia General"]
},
"stock_critical": {
"R": ["Stock", "Compras"],
"A": ["Dirección"],
"C": ["Comercial", "Finanzas"],
"I": ["Sucursal"]
},
"data_quality_critical": {
"R": ["Data Owner"],
"A": ["Dirección"],
"C": ["Área dueña del dato", "Sistemas"],
"I": ["Usuarios afectados"]
}
}
return reglas.get(event_code)
Pero ojo: FARO debería asignar rol, y luego resolver persona.
Rol: Gerente Comercial.
Persona actual: Juan Pérez.
16. Resolución de rol a persona
Código conceptual:
def resolver_usuario_por_rol(role_code, company_id, branch_id=None):
# Busca primero responsable específico por sucursal.
usuario = buscar_responsable_especifico(role_code, company_id, branch_id)
if usuario:
return usuario
# Si no hay, busca responsable general.
usuario = buscar_responsable_general(role_code, company_id)
if usuario:
return usuario
return None
Regla:
Si no existe persona asignada al rol, FARO debe crear alerta de responsabilidad no definida.
Porque una acción sin persona asignada nace renga.
17. Responsabilidad por sucursal
En empresas con varias sucursales, FARO debe distinguir:
responsable corporativo
responsable por sucursal
responsable regional
responsable funcional
Ejemplo:
Stock crítico en Sucursal San Juan:
R:
Responsable de Stock San Juan.
A:
Gerente Operativo / Dirección.
C:
Compras central, Comercial San Juan.
I:
Gerencia General.
Código:
def asignar_responsable_sucursal(evento):
if evento["area"] == "stock" and evento.get("branch_id"):
return {
"R": f"Responsable Stock {evento['branch_id']}",
"A": "Gerencia Operativa",
"C": ["Compras Central", "Comercial Sucursal"],
"I": ["Gerencia General"]
}
return None
18. Responsabilidad por dato
Cada fuente crítica debe tener Data Owner.
| Fuente / dato | Data Owner | Consultados |
|---|---|---|
| Ventas | Administración Comercial | Comercial / Sistemas |
| Costos | Compras / Administración | Finanzas |
| Stock | Responsable Stock | Compras / Sistemas |
| Bancos | Finanzas | Administración |
| Clientes | Administración / Comercial | Finanzas |
| Proveedores | Compras | Finanzas |
| Empleados | RRHH | Administración |
| Comisiones | RRHH / Comercial | Finanzas |
| Acciones | Gerencia General | Responsables de área |
| KPIs | Data Owner + Área | Dirección |
Ejemplo:
{
"data_domain": "costos_productos",
"data_owner": "Compras",
"data_steward": "Administración",
"approver": "Finanzas",
"quality_threshold": 0.90
}
19. Responsabilidad por calidad de datos
Cuando un KPI tiene baja confianza, FARO debe saber quién corrige la fuente.
Ejemplo:
Problema:
Margen no confiable por costos incompletos.
R:
Compras / Data Owner.
A:
Finanzas / Dirección.
C:
Comercial, Sistemas.
I:
Gerencia General.
Código:
def asignar_responsable_calidad_datos(data_issue):
mapa = {
"costos_incompletos": {
"R": "Compras / Data Owner",
"A": "Finanzas",
"C": ["Comercial", "Sistemas"],
"I": ["Gerencia General"]
},
"stock_desactualizado": {
"R": "Stock",
"A": "Gerencia Operativa",
"C": ["Compras", "Sistemas"],
"I": ["Comercial"]
},
"clientes_duplicados": {
"R": "Administración",
"A": "Finanzas",
"C": ["Comercial", "Sistemas"],
"I": ["Gerencia General"]
}
}
return mapa.get(data_issue)
20. Matriz de escalamiento
FARO debe escalar cuando una acción no avanza.
| Prioridad | Cuándo escala | A quién escala |
|---|---|---|
| P1 | Al vencer o 24 hs sin avance | Gerencia General / Dirección |
| P2 | 24 hs después del vencimiento | Responsable superior |
| P3 | 3 días después del vencimiento | Responsable de área |
| P4 | En revisión semanal | Comité de área |
| P5 | No escala salvo recurrencia | Seguimiento normal |
Código:
def regla_escalamiento(priority, hours_overdue):
if priority == "P1" and hours_overdue >= 0:
return "Dirección"
if priority == "P2" and hours_overdue >= 24:
return "Responsable superior"
if priority == "P3" and hours_overdue >= 72:
return "Responsable de área"
if priority == "P4" and hours_overdue >= 168:
return "Comité de área"
return None
21. Sustitutos y backups
FARO debe contemplar ausencias.
Ejemplo:
Responsable:
Gerente Comercial.
Backup:
Jefe Comercial.
Si el responsable no acepta en 24 horas:
asignar backup o escalar.
Código:
def asignar_backup_si_no_responde(accion, horas_sin_aceptar):
if horas_sin_aceptar >= 24 and accion.get("backup_role"):
return {
"new_responsible_role": accion["backup_role"],
"reason": "responsable_no_acepto_en_plazo"
}
return None
22. Capacidad y sobrecarga de responsables
FARO debe detectar si alguien tiene demasiadas acciones críticas.
def detectar_sobrecarga(responsable, acciones):
p1 = sum(1 for a in acciones if a["priority"] == "P1")
p2 = sum(1 for a in acciones if a["priority"] == "P2")
if p1 >= 3 or p1 + p2 >= 8:
return {
"responsable": responsable,
"alerta": "sobrecarga_de_responsable",
"accion_sugerida": "reasignar_prioridades_o_escalar"
}
return None
Lectura ejecutiva:
El problema no es solo que haya muchas acciones.
El problema es que todas caigan sobre la misma persona.
Eso no es accountability; es cuello de botella con nombre y apellido.
23. Mapa de responsabilidad por empresa
FARO debe permitir configurar:
empresa
sucursal
área
rol
persona
jerarquía
backup
permisos
Ejemplo:
{
"company_id": "COMP_001",
"branch_id": "BRANCH_SAN_JUAN",
"area": "Stock",
"role": "Responsable de Stock",
"user": "Carlos López",
"superior_role": "Gerente Operativo",
"backup_user": "María Torres"
}
24. Permisos por rol
No todos pueden ver o aprobar todo.
| Permiso | Descripción |
|---|---|
| view_alerts | Ver alertas. |
| accept_actions | Aceptar acciones asignadas. |
| close_actions | Cerrar acciones. |
| approve_sensitive_decisions | Aprobar decisiones sensibles. |
| edit_thresholds | Cambiar umbrales. |
| edit_rules | Cambiar reglas. |
| assign_responsibles | Asignar responsables. |
| view_financial_data | Ver datos financieros. |
| view_hr_data | Ver datos de RRHH. |
| validate_data_quality | Validar calidad de datos. |
| override_recommendation | Rechazar recomendación con motivo. |
Ejemplo:
{
"role": "Gerente Comercial",
"permissions": [
"view_alerts",
"accept_actions",
"close_actions",
"view_commercial_data",
"override_recommendation"
]
}
25. Acciones que requieren aprobador
FARO debe marcar automáticamente acciones sensibles.
| Acción | Aprobador |
|---|---|
| Cambiar comisión | Dirección |
| Bloquear cliente | Dirección / Finanzas |
| Aceptar canje | Directorio / Dirección |
| Cambiar política de crédito | Dirección |
| Subir precios masivamente | Dirección |
| Suspender compras críticas | Dirección |
| Cambiar proveedor estratégico | Dirección |
| Reestructurar personal | Dirección / RRHH / Legal |
| Modificar umbral crítico | Dirección |
| Cambiar reglas de FARO Score | Dirección / Directorio |
Código:
def requiere_aprobacion(action_code):
acciones_sensibles = {
"CHANGE_COMMISSION_POLICY": "Dirección",
"BLOCK_CUSTOMER_CREDIT": "Dirección / Finanzas",
"APPROVE_EXCHANGE_DEAL": "Directorio",
"CHANGE_CREDIT_POLICY": "Dirección",
"MASS_PRICE_CHANGE": "Dirección",
"CHANGE_SCORE_RULES": "Dirección / Directorio"
}
return acciones_sensibles.get(action_code)
26. Registro de aceptación de responsabilidad
FARO debería exigir que el responsable acepte la acción.
Estados:
Assigned
Accepted
Rejected with reason
Reassigned
Escalated
Ejemplo:
{
"action_id": "ACT_001",
"assigned_to": "Gerente Comercial",
"accepted_at": "2026-05-28T10:00:00",
"acceptance_status": "accepted"
}
Si rechaza:
{
"action_id": "ACT_001",
"status": "rejected",
"reason": "No corresponde al área Comercial; requiere datos de Finanzas.",
"suggested_responsible": "Finanzas"
}
Regla:
Rechazar una acción debe exigir motivo. Sin motivo, es fuga elegante.
27. Reasignación de acciones
FARO debe permitir reasignar, pero con trazabilidad.
Código:
def reasignar_accion(action_id, old_responsible, new_responsible, reason):
return {
"action_id": action_id,
"old_responsible": old_responsible,
"new_responsible": new_responsible,
"reason": reason,
"requires_log": True
}
Motivos posibles:
responsable incorrecto
sobrecarga
ausencia
cambio organizativo
acción corresponde a otra área
decisión superior
28. RACI y FARO Score
La responsabilidad también debe impactar el score.
Ejemplo:
| Evento | Impacto |
|---|---|
| Acción aceptada en tiempo | +1 |
| Acción cerrada con evidencia | +2 / +3 |
| Acción crítica vencida | -5 |
| Acción rechazada sin motivo | -2 |
| Acción reasignada con motivo válido | 0 |
| Acción sin responsable | -3 |
| Tensión sin líder | -4 |
| Responsable sobrecargado | alerta operativa |
Código:
def impacto_responsabilidad_score(evento):
mapa = {
"accion_aceptada_en_tiempo": 1,
"accion_cerrada_con_evidencia": 3,
"accion_critica_vencida": -5,
"accion_rechazada_sin_motivo": -2,
"accion_sin_responsable": -3,
"tension_sin_lider": -4
}
return mapa.get(evento, 0)
29. RACI y workflow
El RACI alimenta el workflow.
Ejemplo:
R:
recibe tarea, carga evidencia, actualiza estado.
A:
aprueba cierre o decisión sensible.
C:
recibe solicitud de información.
I:
recibe notificación o resumen.
Flujo:
Acción creada
→ asignada al R
→ R acepta
→ C aporta datos
→ R ejecuta
→ R carga evidencia
→ A aprueba cierre
→ I recibe resultado
→ FARO mide impacto
30. RACI y comités
FARO puede generar agenda de comité según responsables.
Ejemplo:
Comité Comercial:
- margen bajo
- descuentos altos
- clientes poco rentables
Comité Financiero:
- caja
- cobranza
- gastos
- canjes
Comité Operativo:
- stock
- compras
- proveedores
- reclamos
Comité de Dirección:
- tensiones P1/P2
- acciones vencidas críticas
- decisiones sensibles
Código conceptual:
def asignar_comite(evento):
mapa = {
"comercial": "Comité Comercial",
"finanzas": "Comité Financiero",
"stock": "Comité Operativo",
"compras": "Comité Operativo",
"direccion": "Comité de Dirección"
}
return mapa.get(evento["area"], "Comité de Dirección")
31. RACI por industria
31.1 Construcción / insumos
Roles clave:
Dirección
Gerencia General
Gerente Comercial
Responsable de Finanzas
Responsable de Stock
Responsable de Compras
Responsable de Sucursal
RRHH
Administración
Data Owner
Legal externo si aplica
Eventos particulares:
canjes
referidos
ventas a obra
stock crítico por familia
comisiones comerciales
fletes
cuentas corrientes
proveedores críticos
RACI ejemplo — canje:
R: Finanzas / Dirección
A: Directorio
C: Comercial, Legal, Administración
I: Gerencia General
RACI ejemplo — referidos:
R: Comercial
A: Dirección
C: Finanzas, Administración
I: Gerencia General
31.2 Retail
Roles clave:
Gerente Comercial
Gerente de Sucursal
Stock
Compras
Marketing
Finanzas
Operaciones
Eventos:
promociones
merma
quiebre producto estrella
stock lento
ticket promedio
31.3 Logística
Roles clave:
Operaciones
Flota
Mantenimiento
Finanzas
Comercial
Seguridad
Eventos:
ruta no rentable
SLA incumplido
combustible alto
mantenimiento reactivo
flota ociosa
31.4 Hotelería
Roles clave:
Revenue Management
Operaciones
Recepción
Mantenimiento
Finanzas
Comercial
Eventos:
ocupación alta con tarifa baja
canal caro
RevPAR bajo
reclamos
mantenimiento diferido
32. Tabla SQL de roles
CREATE TABLE roles (
role_id TEXT PRIMARY KEY,
role_code TEXT NOT NULL,
role_name TEXT NOT NULL,
company_id TEXT,
area_id TEXT,
role_type TEXT,
can_execute BOOLEAN DEFAULT true,
can_approve BOOLEAN DEFAULT false,
can_validate BOOLEAN DEFAULT false,
can_escalate BOOLEAN DEFAULT false,
active BOOLEAN DEFAULT true,
created_at TIMESTAMP DEFAULT now(),
updated_at TIMESTAMP DEFAULT now()
);
33. Tabla SQL de usuarios y roles
CREATE TABLE user_roles (
user_role_id TEXT PRIMARY KEY,
user_id TEXT NOT NULL,
role_id TEXT NOT NULL,
company_id TEXT,
branch_id TEXT,
area_id TEXT,
is_primary BOOLEAN DEFAULT true,
is_backup BOOLEAN DEFAULT false,
active BOOLEAN DEFAULT true,
assigned_at TIMESTAMP DEFAULT now()
);
34. Tabla SQL de matriz RACI
CREATE TABLE raci_matrix (
raci_id TEXT PRIMARY KEY,
entity_type TEXT NOT NULL,
entity_code TEXT NOT NULL,
company_id TEXT,
industry_id TEXT,
area_id TEXT,
responsible_roles JSONB,
accountable_roles JSONB,
consulted_roles JSONB,
informed_roles JSONB,
backup_roles JSONB,
escalation_roles JSONB,
active BOOLEAN DEFAULT true,
version TEXT DEFAULT '1.0',
created_at TIMESTAMP DEFAULT now(),
updated_at TIMESTAMP DEFAULT now()
);
35. Tabla SQL de asignaciones
CREATE TABLE responsibility_assignments (
assignment_id TEXT PRIMARY KEY,
entity_type TEXT NOT NULL,
entity_id TEXT NOT NULL,
company_id TEXT,
branch_id TEXT,
area_id TEXT,
responsible_user_id TEXT,
responsible_role_id TEXT,
accountable_user_id TEXT,
accountable_role_id TEXT,
consulted_users JSONB,
informed_users JSONB,
backup_user_id TEXT,
escalation_user_id TEXT,
assignment_status TEXT DEFAULT 'assigned',
accepted_at TIMESTAMP,
rejected_at TIMESTAMP,
rejection_reason TEXT,
created_at TIMESTAMP DEFAULT now(),
updated_at TIMESTAMP DEFAULT now()
);
36. Tabla SQL de permisos
CREATE TABLE role_permissions (
permission_id TEXT PRIMARY KEY,
role_id TEXT NOT NULL,
permission_code TEXT NOT NULL,
permission_scope TEXT,
active BOOLEAN DEFAULT true,
created_at TIMESTAMP DEFAULT now()
);
Ejemplos de permission_code:
view_financial_data
view_hr_data
approve_sensitive_decision
close_action
validate_data_quality
edit_thresholds
edit_business_rules
assign_responsible
override_recommendation
37. Motor de asignación de responsables
Flujo recomendado:
Evento creado
→ identificar tipo de evento
→ buscar RACI aplicable
→ resolver rol a persona
→ validar permisos
→ asignar responsable
→ notificar
→ esperar aceptación
→ activar backup si no acepta
→ escalar si vence
Código conceptual:
def motor_responsables(evento, raci_matrix):
raci = buscar_raci(evento, raci_matrix)
if not raci:
return {
"status": "missing_raci",
"alert": "No existe matriz RACI para este evento."
}
responsable = resolver_usuario_por_rol(
role_code=raci["R"][0],
company_id=evento["company_id"],
branch_id=evento.get("branch_id")
)
if not responsable:
return {
"status": "missing_responsible",
"alert": "No hay usuario asignado al rol responsable."
}
return {
"responsible": responsable,
"raci": raci,
"status": "assigned"
}
38. Validación de RACI
FARO debe validar que toda acción importante tenga RACI completo.
Código:
def validar_raci(raci):
errores = []
if not raci.get("R"):
errores.append("falta_responsable")
if not raci.get("A"):
errores.append("falta_aprobador")
if len(raci.get("R", [])) > 1:
errores.append("multiples_responsables_principales")
return {
"valid": len(errores) == 0,
"errors": errores
}
Regla:
P1 y P2 no deberían existir sin R y A definidos.
39. Ejemplo completo: crecimiento no rentable
Diagnóstico
Crecimiento no rentable.
Acciones
Auditar descuentos.
Revisar comisión.
Priorizar cobranza.
Analizar margen por vendedor.
RACI
R:
Gerente Comercial.
A:
Dirección.
C:
Finanzas, RRHH, Stock.
I:
Administración, Gerencia General.
Escalamiento
Si no acepta en 24 hs:
escalar a Gerencia General.
Si vence en 72 hs:
escalar a Dirección.
40. Ejemplo completo: caja bajo mínimo
Diagnóstico
Caja bajo mínimo operativo.
RACI
R:
Finanzas.
A:
Dirección.
C:
Comercial, Administración.
I:
Gerencia General.
Regla
Prioridad P1.
Vencimiento 24 hs.
Escalamiento inmediato si no hay avance.
41. Ejemplo completo: stock crítico
Diagnóstico
Riesgo futuro de stock crítico.
RACI
R:
Compras.
A:
Gerencia Operativa / Dirección.
C:
Stock, Comercial, Finanzas.
I:
Sucursal afectada.
Backup
Si Compras no responde:
Responsable de Stock activa validación y escala.
42. Ejemplo completo: datos insuficientes
Diagnóstico
Margen no confiable por costos incompletos.
RACI
R:
Data Owner / Compras.
A:
Finanzas.
C:
Comercial, Sistemas.
I:
Gerencia General.
Criterio
No se debe aprobar cambio comercial fuerte hasta corregir datos críticos.
43. Ejemplo completo: canje
Diagnóstico
Canje pendiente de evaluación.
RACI
R:
Finanzas / Dirección.
A:
Directorio.
C:
Comercial, Legal, Administración.
I:
Gerencia General.
Regla
No se aprueba canje sin:
valuación,
liquidez,
riesgo legal,
costo financiero,
comparativo contra venta normal.
44. RACI explicado para socio técnico
La explicación técnica es:
El módulo RACI no es una agenda de contactos.
Es una capa de gobierno que conecta:
1. Eventos detectados.
2. Roles funcionales.
3. Personas reales.
4. Permisos.
5. Aprobaciones.
6. Escalamiento.
7. Evidencia.
8. Score.
9. Auditoría.
FARO no solo dice “hay que hacer algo”. FARO sabe quién debe hacerlo, quién lo aprueba, a quién consulta y a quién informa.
45. Prompt interno para IA explicativa
La IA puede redactar el RACI para el usuario, pero no debe inventar responsables.
Actúa como analista ejecutivo FARO.
Con base únicamente en el payload estructurado recibido, redacta la asignación de responsables en formato claro.
No inventes personas ni roles.
Incluye:
1. responsable principal,
2. aprobador,
3. consultados,
4. informados,
5. vencimiento,
6. escalamiento,
7. evidencia esperada.
Payload:
{raci_payload}
Regla:
La matriz RACI define. La IA solo explica.
46. Testing de responsables y RACI
Test RACI válido
def test_raci_valido():
raci = {
"R": ["Gerente Comercial"],
"A": ["Dirección"],
"C": ["Finanzas", "RRHH"],
"I": ["Administración"]
}
resultado = validar_raci(raci)
assert resultado["valid"] is True
Test sin responsable
def test_raci_sin_responsable():
raci = {
"R": [],
"A": ["Dirección"],
"C": ["Finanzas"],
"I": []
}
resultado = validar_raci(raci)
assert resultado["valid"] is False
assert "falta_responsable" in resultado["errors"]
Test múltiples responsables
def test_raci_multiples_responsables():
raci = {
"R": ["Comercial", "Finanzas"],
"A": ["Dirección"],
"C": [],
"I": []
}
resultado = validar_raci(raci)
assert resultado["valid"] is False
assert "multiples_responsables_principales" in resultado["errors"]
47. Errores comunes en responsabilidades
| Error | Consecuencia |
|---|---|
| No definir responsable | Nadie ejecuta. |
| Definir demasiados responsables | Se diluye accountability. |
| No definir aprobador | Las decisiones sensibles quedan flojas. |
| No definir consultados | Faltan datos o criterio. |
| Informar a demasiados | Ruido organizacional. |
| No tener backup | Las acciones se frenan por ausencia. |
| No escalar vencimientos | Se tolera incumplimiento. |
| No vincular permisos | Gente incorrecta aprueba cosas sensibles. |
| No auditar reasignaciones | Se pierde trazabilidad. |
48. Riesgos si no existe esta capa
| Riesgo | Consecuencia |
|---|---|
| Acciones sin dueño | No se ejecutan. |
| Responsabilidad difusa | Todos opinan, nadie responde. |
| Decisiones sensibles sin aprobación | Riesgo financiero, legal o humano. |
| Alertas ignoradas | Nadie se siente responsable. |
| Acciones vencidas sin escalamiento | Se normaliza el incumplimiento. |
| Sobrecarga invisible | Se quema a los mejores responsables. |
| Score sin accountability | Baja credibilidad. |
| Dirección vuelve al seguimiento manual | FARO pierde valor ejecutivo. |
49. Output final del Anexo 30
Al finalizar este anexo, FARO debe tener definido:
1. Catálogo de roles FARO.
2. Personas asignadas por rol.
3. Responsables por área.
4. Responsables por sucursal.
5. Responsables por KPI.
6. Responsables por dato.
7. Responsables por alerta.
8. Responsables por tensión.
9. Responsables por diagnóstico.
10. Responsables por acción.
11. Matriz RACI por evento.
12. Aprobadores por decisión sensible.
13. Consultados e informados.
14. Backups y sustitutos.
15. Permisos por rol.
16. Reglas de aceptación.
17. Reglas de rechazo con motivo.
18. Reglas de reasignación.
19. Reglas de escalamiento.
20. Detección de sobrecarga.
21. Impacto en FARO Score.
22. Tablas SQL de roles, permisos y RACI.
23. Motor de asignación de responsables.
24. Testing de RACI.
25. Auditoría de responsabilidad.
50. Conexión con otros anexos
| Próximo anexo | Qué recibe desde Anexo 30 |
|---|---|
| Anexo 17 — Biblioteca de KPIs | Dueños por KPI. |
| Anexo 20 — Reglas de negocio | Reglas que asignan responsables. |
| Anexo 21 — Alertas FARO | Alertas con responsable y escalamiento. |
| Anexo 22 — Biblioteca de tensiones | Líder responsable por tensión. |
| Anexo 23 — Diagnóstico ejecutivo | Responsable de validar diagnóstico. |
| Anexo 25 — Priorización ejecutiva | Prioridades por responsable. |
| Anexo 26 — Recomendaciones FARO | Recomendaciones con aprobador. |
| Anexo 27 — Simulación de escenarios | Decisiones sensibles con aprobador. |
| Anexo 28 — FARO Action Guide | Guías con RACI. |
| Anexo 29 — Biblioteca de acciones | Acciones asignadas a responsables. |
| Anexo 31 — Workflow y escalamiento | Flujo operativo de aceptación, avance y escalamiento. |
| Anexo 32 — Evidencia y cierre | Responsables de cargar y aprobar evidencia. |
| Anexo 35 — FARO Score | Impacto de responsabilidad, vencimientos y cierre. |
| Anexo 36 — Aprendizaje | Efectividad por responsable, rol y área. |
El módulo de Responsables y RACI FARO define quién ejecuta, quién aprueba, quién debe ser consultado y quién debe ser informado para cada KPI, alerta, tensión, diagnóstico, recomendación, Action Guide y acción. Es la capa que convierte tareas en accountability real, con permisos, vencimientos, backups, escalamiento y trazabilidad.