Contexto Empresa con un ERP propietario de años y reportería armada a mano en planillas
Datos había, información no
Un ERP viejo sin API, una base sin documentar y un reporte que tardaba una hora. Las decisiones esperaban por él.
Trabajo de nuestro equipo fundador.
El problema
La empresa tenía datos. Muchos, y bien guardados: años de operación en la base del ERP. Lo que no tenía era información.
Sacar un reporte era un procedimiento. Primero había que pedírselo al ERP, que es propietario, tiene años encima y no expone ninguna API; ese paso solo ya tardaba. Después venía el trabajo real: exportar, abrir la planilla, cruzar a mano, corregir lo que el ERP había devuelto en un formato distinto al del mes anterior. Entre una cosa y la otra, cerca de una hora por reporte.
El costo visible era esa hora. El costo que no se veía era otro: cuando preguntar cuesta una hora, se pregunta poco. Los tableros se miraban una vez por mes, los KPI se discutían con lo que cada uno recordaba, y las decisiones que hubieran necesitado mirar un número antes se tomaban sin mirarlo. No por desidia — porque el número llegaba tarde.
La decisión
La propuesta obvia era reemplazar el ERP. Es un sistema viejo, cerrado y sin API: cualquiera puede argumentar que hay que cambiarlo, y es además el proyecto más grande y más caro que se podía vender ahí.
Se decidió no tocarlo. El ERP funcionaba para lo que la empresa lo usaba todos los días, y reemplazarlo hubiera puesto en riesgo la operación entera para resolver un problema de lectura. Lo que había que construir iba al lado, no en su lugar.
La segunda decisión fue el BI. Se eligió Apache Superset, open source, sin costo de licencias — ni por usuario ni por tablero. Un producto propietario hubiera sido más fácil de vender y hubiera dejado margen de reventa todos los años. Lo que se hizo en cambio fue invertir ese presupuesto en personalizarlo: Superset quedó adaptado a la operación del cliente y a su identidad visual, de modo que la gente no entrara a «una herramienta de BI» sino a un sistema que se parecía al resto de los suyos. Eso no es cosmética: es la diferencia entre que lo usen y que no.
El trabajo difícil, sin embargo, estuvo abajo. La base no estaba mapeada. No había documentación, ni diccionario de datos, ni nadie que pudiera explicar qué significaba cada tabla. Así que se reconstruyó: leyendo el catálogo de la propia base, siguiendo las claves foráneas donde existían e infiriendo las relaciones donde no, hasta entender de dónde salía cada dato y cuándo se escribía.
Y acá está la parte que define el caso. Un esquema inferido no se puede dar por bueno porque cierre lógicamente. Así que no se publicó un solo tablero hasta que sus números coincidieron con los de un reporte que el ERP ya emitía y que el cliente ya daba por bueno. Cada métrica se validó contra algo que la empresa ya creía. Eso alargó el proyecto y no se ve en ninguna pantalla, pero es lo único que separa un tablero de una suposición prolija.
La extracción se hizo sin poner en riesgo la operación, con cuatro reglas:
- Un usuario de solo lectura, con permisos acotados a lo que el BI necesitaba leer. Nunca las credenciales del ERP.
- Las consultas pesadas contra una réplica, no contra la base que la operación estaba usando en ese momento. Un reporte no puede frenar una venta.
- Nada escrito en el esquema del ERP. Todo lo derivado vive en un esquema aparte, así una actualización del proveedor no choca con nuestro trabajo ni nuestro trabajo invalida su soporte.
- Vistas como capa de contrato. Cuando el ERP cambia una columna se corrige una vista, no cuarenta tableros.
El resultado
El reporte que tardaba cerca de una hora pasa a estar disponible en unos diez segundos, automatizado y completo. Los mismos números, sin el paso manual en planilla y sin la espera del ERP.
Con eso cambió lo que se podía hacer: dashboards que se miran cuando hace falta y no cuando toca, KPI que se siguen en el momento en vez de reconstruirse a fin de mes, y proyecciones armadas sobre datos que ya estaban ahí pero que nadie podía juntar en tiempo razonable. El costo de licencias del BI fue cero.
Lo importante, igual, no es el número. Es que preguntar dejó de costar. Cuando la respuesta tarda diez segundos, se pregunta antes de decidir — y esa es la diferencia entre tener datos y tener información.