BI y datos
Cuadro de mando de Dirección
Sistema de business intelligence sobre el CRM: paneles por área y listados para los consultores, con datos en tiempo real y comparación con años anteriores.
Herramientas
- SQL (Trino)
- Apache Superset
- Bitrix24
Ilustrado con datos ficticios. Proyecto real. Las capturas y ejemplos usan datos ficticios: no se muestran datos de clientes ni cifras de negocio.
Situación
Dirección no tenía información consolidada sobre la cartera de clientes, la carga de trabajo ni la rentabilidad. Todo salía de un Excel de seguimiento y de listados preparados a mano cada mes: por consultor, de altas y bajas, de extras por departamento o de horas de tareas comunes.
Solución
Construí un sistema de business intelligence sobre el CRM, con tres conjuntos de datos en SQL que se leen en tiempo real (empresas, tareas y negociaciones) y paneles por área: general, contable-fiscal, laboral y administración. Añadí listados con filtros para que cada consultor prepare su reparto, y con plantillas CSS los informes mantienen el formato que Dirección ya usaba.
Resultado
Dirección consulta al momento lo que antes pedía en listados y compara con hasta tres años anteriores, algo que antes no podía hacer. Los dos departamentos se ahorran varias horas al mes en preparar listados.
Cómo funciona
Datos del CRM
Empresas, tareas de los grupos de trabajo y negociaciones.
Datasets en SQL
Consultas en Trino que limpian, cruzan y agregan los datos en tiempo real.
Paneles por área
General, contable-fiscal, laboral y administración, comparables con tres años anteriores.
Listados para consultores
Filtros para preparar el reparto del mes en segundos.
Dirección decide con datos al momento
Sin pedir listados y con el mismo formato de informe de siempre.
Demo
Paneles por área, preguntas de Dirección, comparación entre años y la consulta SQL de cada gráfico. Si das de alta un cliente en el circuito comercial, aparece aquí.
Un panel por área con los datos del CRM en tiempo real. Pregunta lo que preguntaba Dirección, filtra, compara con años anteriores y mira la consulta SQL de cada gráfico.
Datos e importes ficticiosPreguntas de Dirección
El cliente que des de alta en la demo del circuito comercial aparece aquí al momento: en la cartera, en la carga de su consultor y en las altas del mes.
Clientes activos
540
345 sociedades · 195 autónomos
Facturación mensual
122.225 € / mes
Importe ficticio
Rentabilidad
72,85 €/h
Todas las cuotas ÷ horas de los consultores
Con nóminas
283
Contable-fiscal
83.860 € / mes
Importe ficticio
Laboral
34.815 € / mes
Importe ficticio
Otros servicios
3.550 € / mes
Importe ficticio
Sin nóminas
257
Horas y cartera por consultor · contable-fiscal
Horas reales de clientes al mes, actualizadas cada trimestre. La marca es la capacidad de referencia (150 h, ficticia).
- Consultora A178 h · 63 clientes
⚠ Por encima de la capacidad
- Consultor B108,75 h · 63 clientes
- Consultora C137,75 h · 63 clientes
- Consultor D152,75 h · 73 clientes
⚠ Por encima de la capacidad
- Consultora E138,75 h · 62 clientes
- Consultor F101,5 h · 55 clientes
- Consultora G131,5 h · 62 clientes
- Consultor H137,75 h · 55 clientes
Ver la consulta SQL
Tablas y columnas inventadas; el mismo tipo de consulta que en el cuadro real (Trino y plantillas de Superset).
SELECT cf_consultant AS consultant,
count(*) AS companies,
sum(cf_hours) AS hours_per_month,
sum(cf_fee) / nullif(sum(cf_hours), 0) AS fee_per_hour
FROM crm.companies
WHERE active
AND cf_consultant IS NOT NULL
{% if filter_values('billing_entity') %}
AND billing_entity IN {{ filter_values('billing_entity') | where_in }}
{% endif %}
{% if filter_values('country') %}
AND country IN {{ filter_values('country') | where_in }}
{% endif %}
GROUP BY 1
ORDER BY 1Horas y cartera por consultor · laboral
Horas reales de clientes al mes, actualizadas cada trimestre. La marca es la capacidad de referencia (150 h, ficticia).
- Consultora L111,5 h · 56 clientes
- Consultor M136,75 h · 56 clientes
- Consultora N122,75 h · 67 clientes
- Consultor P80,5 h · 50 clientes
- Consultora R139,5 h · 54 clientes
Ver la consulta SQL
Tablas y columnas inventadas; el mismo tipo de consulta que en el cuadro real (Trino y plantillas de Superset).
SELECT lab_consultant AS consultant,
count(*) AS companies,
sum(lab_hours) AS hours_per_month,
sum(lab_fee) / nullif(sum(lab_hours), 0) AS fee_per_hour
FROM crm.companies
WHERE active
AND lab_consultant IS NOT NULL
{% if filter_values('billing_entity') %}
AND billing_entity IN {{ filter_values('billing_entity') | where_in }}
{% endif %}
{% if filter_values('country') %}
AND country IN {{ filter_values('country') | where_in }}
{% endif %}
GROUP BY 1
ORDER BY 1Listado general
Lo que antes era el Excel de seguimiento, ahora siempre al día.
| Cliente | Tipo | Consultor C-F | Horas C-F | Cuota C-F | Por hora | Consultor LAB | Nóminas | Horas LAB | Cuota total |
|---|---|---|---|---|---|---|---|---|---|
| Ana Ejemplo 1 | Autónomo | Consultor B | 0,75 h | 60 € | 80,00 €/h | — | — | — | 60 € |
| Ana Ejemplo 2 | Autónomo | Consultora E | 1 h | 95 € | 95,00 €/h | Consultora L | 1 | 0,5 h | 110 € |
| Ana Ejemplo 3 | Autónomo | Consultor H | 0,75 h | 65 € | 86,67 €/h | — | — | — | 75 € |
| Ana Ejemplo 4 | Autónomo | Consultora A | 1,25 h | 105 € | 84,00 €/h | Consultora L | 2 | 0,5 h | 130 € |
| Ana Ejemplo 5 | Autónomo | Consultora A | 1 h | 85 € | 85,00 €/h | Consultora L | 1 | 0,5 h | 100 € |
| Ana Ejemplo 6 | Autónomo | Consultor F | 1,25 h | 110 € | 88,00 €/h | Consultor P | 2 | 0,5 h | 150 € |
| Ana Ejemplo 7 | Autónomo | Consultora G | 1 h | 85 € | 85,00 €/h | — | — | — | 125 € |
| Ana Ejemplo 8 | Autónomo | Consultora C | 1,25 h | 100 € | 80,00 €/h | — | — | — | 110 € |
| Ana Ejemplo 9 | Autónomo | Consultor H | 1 h | 60 € | 60,00 €/h | — | — | — | 60 € |
| Ana Ejemplo 10 | Autónomo | Consultora E | 1,25 h | 85 € | 68,00 €/h | — | — | — | 85 € |
Ver la consulta SQL
Tablas y columnas inventadas; el mismo tipo de consulta que en el cuadro real (Trino y plantillas de Superset).
SELECT name, client_type, legal_form,
cf_consultant, cf_hours, cf_fee,
cf_fee / nullif(cf_hours, 0) AS cf_fee_per_hour,
lab_consultant, payslips, lab_hours,
cf_fee + lab_fee + other_fee AS total_fee
FROM crm.companies
WHERE active
{% if filter_values('billing_entity') %}
AND billing_entity IN {{ filter_values('billing_entity') | where_in }}
{% endif %}
{% if filter_values('country') %}
AND country IN {{ filter_values('country') | where_in }}
{% endif %}
ORDER BY nameRecreación con clientes, consultores, horas e importes ficticios. En el cuadro real, los paneles leían en tiempo real tres conjuntos de datos del CRM (empresas, tareas y negociaciones) y se podían comparar hasta con tres años anteriores.