El reto
Una empresa industrial del sector de la construcción con varias sedes gestionaba su día a día con hojas de Excel, correos y carpetas compartidas. Cada sede llevaba las obras, las compras y las reparaciones de maquinaria a su manera, y la dirección no tenía una visión común. Los mismos datos se tecleaban varias veces y nadie sabía con certeza cuál era la versión buena.
El cuello de botella más visible eran los albaranes. Llegaban en papel, se escaneaban en un único PDF y alguien tenía que separarlos uno a uno, leerlos y renombrarlos para poder archivarlos. Muchos escaneados no tenían texto reconocible o estaban boca abajo. A eso se sumaba la información de la plantilla, repartida en archivos sin control de acceso ni política de conservación conforme al RGPD.
La solución
Diseñamos un ERP a medida modular en el que cada sede activa los módulos que necesita: Obras, Reparaciones de maquinaria, Compras, Procedimientos, Personal troncal y Talento. Todos comparten una misma base de datos, de modo que una obra, un proveedor o un trabajador existen una sola vez y se consultan desde cualquier sede según los permisos de cada usuario. El módulo de Procedimientos avisa cuando un requerimiento nuevo se parece a otro ya registrado, para no duplicar trabajo.
Para los albaranes construimos un lector con inteligencia artificial basado en Claude, que funciona en dos pasos. Primero, una pequeña aplicación con acceso propio, sin el resto del ERP, donde la oficina sube el PDF que sale del escáner con los albaranes ya firmados. Después, el sistema procesa el lote: Claude lee el número y la fecha de cada página aunque el escaneado no tenga texto o esté boca abajo, y lo que no es seguro o aparece repetido queda marcado para revisarlo en pantalla junto a la imagen de la página. Al final se descarga un ZIP con un PDF por albarán, nombrado por fecha y número. La persona que antes hacía ese trabajo ahora solo revisa las dudas.
Con el sistema en marcha, el ERP sigue creciendo con lo que pide el día a día. La maquinaria se agrupa por tipo de parte (taller y soldadura), y los partes de turno, en la web y en la app del trabajador, solo ofrecen las máquinas de su grupo, con botones para apuntar media jornada o jornada completa de un toque. Las obras se ven en un mapa sobre OpenStreetMap, y cada usuario elige qué columnas del listado de obras quiere ver y en qué orden; su elección se guarda en el servidor y le acompaña en cualquier equipo. En Compras, la oferta en PDF se adjunta al crear la solicitud, el sistema sugiere productos ya pedidos antes y cada rol tiene definido si ve todas las solicitudes o solo las suyas.
La seguridad se trató desde el principio: doble factor de autenticación (MFA), registro de auditoría de cada cambio, cifrado de los campos sensibles y reglas de retención para cumplir el RGPD. Al incorporar la IA al tratamiento de albaranes, actualizamos también el registro de actividades de tratamiento y la lista de encargados. El backend está escrito en Go con Fiber, la interfaz en Next.js 14 y los datos en PostgreSQL 16, todo desplegado con Docker. El sistema está en producción y lo mantenemos y ampliamos dentro de nuestro servicio de mantenimiento y evolución.