Cómo construí un sistema autónomo que recaba información oficial para un despacho profesional
Resumen
De 40h/semana a 1h/mes
Tiempo empleado en estas tareas
La hora empleada mensualmente equivale al tiempo de reconciliación manual que el sistema no pueda reconciliar por sí solo por falta de información o contexto.
+18%
Mejora en CSAT
La satisfacción de sus clientes mejoró desde el segundo mes tras la implementación, debido al incremento de velocidad del flujo de información y eliminación del cuello de botella.
-77.5%
Reducción de deadline
El deadline era de 40 días y la entrega se realizó en tan solo 9. Lo que son 31 días antes de la fecha máxima.
Aumento en facturación
Debido a un nuevo servicio activado
Este sistema derivó en una segunda fase. Un sistema que encontraba ayudas y subvenciones para sus clientes con base en sus CNAEs, localizaciones, etc.
Problema
Esta asesoría fiscal, como la mayoría en España, realiza muchos trabajos de manera manual y me contactaron para averiguar lo que podrían hacer para mejorar sus procesos. Eran conscientes de ello, pero no sabían exactamente qué podían automatizar y hasta qué punto podían hacerlo.
Me introduje durante 3 días en sus procesos, descubrí varios flujos mejorables y les lancé una propuesta con varios puntos de mejora y la propuesta para llevarlo a cabo. Por la idiosincrasia de la empresa, comenzaron aceptándome uno en concreto; que es el que cubriremos en este estudio del caso.
Una de sus labores consistía en recabar periódicamente información sobre sus clientes muy dispersa entre diferentes webs de organismos oficiales como BOE, BORME, BDNS, SNPSAP, etc.
Prácticamente la totalidad de las webs oficiales dificultan el consumo de información por una experiencia de usuario deficiente; por falta de consistencia entre formatos de archivos y por falta de normalización de datos entre plataformas. En este caso, la asesoría empleaba una media de 40 horas semanales repartidas entre 3 empleados para tareas relacionadas con Inteligencia de Negocio, Compliance y notificaciones oficiales, Constitución y trámites societarios, y algunas otras.
Resultado
Creé un sistema autónomo, prácticamente invisible para la empresa, que no supone ningún tipo de curva de aprendizaje.
Una herramienta para el despacho profesional que cada día, de forma pasiva, recoge toda la información oficial derivada de sus clientes; la almacena en la base de información de cada empresa en el ERP/CRM de la asesoría y le notifica sobre las novedades recabadas.
Mi trabajo
Duración
9 días
Objetivos
- reducir costes operativos
- automatizar tareas manuales
- deshacer cuellos de botella
- reducir errores humanos
- diferenciarse de la competencia
- facilitar nuevos servicios (bonus)
Problema
Dolor de usuario o de negocio
Recabar información y cruzarla con nuestros clientes es un trabajo improductivo pero necesario. Y empleamos demasiadas horas en ello.
Restricciones

¿De cuánto tiempo disponemos?
Idealmente debería estar antes del próximo trimestre, así qque disponemos de 40 días.

¿Puedo tener algunas reuniones con el equipo que actualmente se encarga de esta tarea?
Tenemos mucho trabajo. Cuanto más puedas prescindir de ello, mejor.

OK. Vamos con ello.
Investigación
Necesité comprender mejor el flujo de trabajo actual de la empresa, para averiguar cómo mejorar su proceso. Para ello, algunas de las preguntas que necesité responder son las siguientes:
- ¿Cuál era el flujo de trabajo actual y sus condicionantes? Para responderlo, entrevisté al trabajador más veterano en esta labor, ya que la metodología era la misma entre los 3.
- ¿Qué fuentes contienen la información necesaria y en qué formatos? Necesitaba saber si las fuentes ofrecían la información por API, o en formato CSV, XML, PDF... Necesitaba saber si podría extraerlo de forma sencilla, de manera programática, o si por el contrario necesitaría recurrir al scrapeo o soluciones similares.
- ¿Qué frecuencia de actualización tienen y cómo de estables son las fuentes? Necesitaba saber si las URLs serían previsibles; si cambiaban a menudo; si podrían surgir problemas por los que necesitaríamos establecer fallbacks, etc.
- ¿En qué software y de qué manera guardan la información de sus clientes? Era importante saber si el ERP y/o CRM de la empresa era comercial o privado, y si disponía de una API que pudiera utilizar para cruzar los datos.
- ¿Existen limitaciones en cuanto a protección de datos? Supuse que en el caso de Autónomos (personas físicas) tendríamos ciertas limitaciones en cuanto a la toma o almacenamiento de datos. Quería confirmarlo.
Hallazgos
Algunos de los hallazgos más importantes en mi investigación fueron los siguientes:
- Alguna de las fuentes disponía de API, pero la mayoría disponía únicamente de un archivo XML o PDF.
- En el caso de PDFs antiguos, incluso se trataban folios impresos; por lo que para disponer de histórico, debía integrar una mezcla de métodos para procesar estos datos.
- Las fuentes de información no disponen de datos normalizados. De hecho, son bastante inconsistentes. Y en varios casos existen erratas y errores ortográficos desde la toma de datos que dificultan su normalización.
- Utilizaban un ERP comercial, por lo que la integración de la información parseada y normalizada podía realizarla a través de su API.
- Efectivamente, existían limitaciones en cuanto a protección de datos en el caso de los autónomos.
Decisiones
- Podíamos permitirnos mutar la idea inicial de la herramienta a algo más efectivo: De una herramienta que facilitaba la el acceso a los datos, de forma manual, a una herramienta pasiva que guarda información y notifica a la asesoría. Lo que reduciría aún más el tiempo empleado.
- Ante la falta de API, era necesario utilizar diferentes métodos para extraer, normalizar, matchear guardar los datos obtenidos. Métodos como Scraping, OCR, RegEx, e incluso validación y comparación con IA para algunos casos.
- Las fuentes oficiales anonimizan los datos públicos de autónomos, por lo que no pudimos utilizar sus datos provenientes de la mayoría de las fuentes.
- Se acordó implementar, en una segunda fase, un sistema para descubrir nuevas ayudas y subvenciones que ofrecer a sus clientes; lo cual les permitiría ofrecer un nuevo servicio.\
Tecnología
Me planteé utilizar N8N autohosteado para automatizar este proceso. Pero finalmente me decidí por programarla principalmente por los siguientes motivos:
- La complejidad del desarrollo es mayor de lo que parece y plantearlo de forma limpia utilizando N8N requeriría probablemente varios workflows interconectados, con decenas de nodos cada uno. Lo cual dificulta la labor de auditoría y modificación.
- La empresa no dispone de departamento ni conocimientos técnicos. Por lo tanto, instalar N8N en un servidor únicamente para una automatización, que igualmente no iban a poder mantener por su cuenta, me parecía overengineering.
- Para un caso como este, la lectura y auditoría del código es más sencilla hoy en día que un workflow de N8N. La modificación o mantenimiento iba a ser más flexible y sencilla si el sistema es código bien documentado y modularizado que cualquier programador entender, que si tienen que encontrar a alguien con experiencia en N8N.
Solución
El producto resultante se podría resumir de la siguiente manera:
Un sistema autónomo, que aglutina diferentes fuentes de información oficiales de manera modular y escalable, y reconcilia cada nueva noticia en el perfil del respectivo cliente en el ERP de la asesoría.
Prototipo
Construí un prototipo inicial para testear la calidad de la información, la fiabilidad de la reconciliación entre la información que provenía de diferentes fuentes; y para determinar la probabilidad de fallo y encontrar casos extremos que debiéramos solventar.
Diseño final
Opté por un patrón de diseño denominado "Medallion", para organizar los datos de forma lógica en un Data Lakehouse. Con el objetivo de mejorar la calidad, estructura y fiabilidad de los datos de manera progresiva a medida que fluyen a través de tres capas distintas: Bronze, Silver y Gold.\
Capa Bronze (Datos Crudos)
Es el punto de entrada de toda la información. Los datos se almacenan exactamente igual que en su origen (en formato raw o crudo), sin aplicar filtros ni transformaciones.
- Propósito: Mantener un historial completo e inalterable. Permite reprocesar datos si hay fallos o realizar auditorías en cualquier momento.
- Tipo de datos: JSON, archivos planos (CSV, Excel), o flujos continuos (streaming) de APIs, bases de datos, etc.
Capa Silver (Datos Depurados)
Aquí es donde los datos de la capa Bronze se filtran, limpian y transforman. Se integran y estandarizan distintas fuentes de información en un modelo coherente.
- Propósito: Crear una fuente única y confiable de datos con calidad empresarial.
- Operaciones clave: Se eliminan duplicados, se corrigen errores, se resuelven problemas de formatos y se valida la integridad de los datos.
Capa Gold (Datos Agregados)
Representa la capa de presentación y consumo final. Los datos ya refinados se modelan en esquemas orientados al negocio (tablas de hechos y dimensiones).
- Propósito: Optimizar los datos para informes, Dashboards, LLM, API...
- Tipo de datos: Información lista para ser consumida en este caso por la API que alojará la información en cada respectiva empresa del ERP de la asesoría.
Estados límite: errores, vacíos, permisos, carga y fallos
Algunos de los edge cases más importantes fueron:
- ¿Qué ocurre si los datos parten de un dato escaso, erróneo o con diferencias ortográficas? Para estos casos, creé un sistema de triple-check. Primero se intenta resolver de manera determinista. Si no se reconcilia, pasa a un fallback de IA. Si el sistema de IA no lo reconcilia, un sistema manual. Técnicamente es un sistema que puntúa similitudes y establece posibles matches de información que, en caso de no ser reconciliada automáticamente, se presenta en un dashboard de validación manual. Tras diversas pruebas con cientos de datos, aproximadamente un 4% de la información caía en este fallback manual inevitable, por motivo de las propias fuentes de datos.
- ¿Qué ocurre cuando se incorpora una nueva empresa como cliente de la asesoría y se necesita cierto histórico sobre ella? Como gracias al sistema Medallion, almacenamos la información en crudo: Para estos casos, creé un simple formulario en el que introducir un rango de fechas y, al pulsar un botón de acción, el sistema pasa por los archivos de las fechas indicadas y recaba la información histórica sobre ella en las diferentes fuentes.
- ¿Qué ocurre si una fuente de datos deja de actualizarse por rotura o cambio de URL, o cualquier otro motivo? El sistema conoce la periodicidad de actualización de cada fuente, y en caso de no recibir datos tras 12 horas más de lo esperado, el sistema envía una notificación a la asesoría y al equipo técnico, que en este caso soy yo.
- ¿Qué ocurre si la API del ERP cambia? Implementé una solución similar a la del punto anterior, que en este caso en la notificación devolvía el changelog de la API dentro de un breve rango de fechas en las que el sistema se vio interrumpido.
Entrega
El deployment se realizó en un VPS Hetzner muy ligero y económico. La entrega consistió en unas credenciales de un Dashboard externo al ERP y, por lo demás, un sistema invisible para la empresa que funciona de manera autónoma y que no supone ningún tipo de curva de aprendizaje.
Impacto
De 40h/semana a 1h/mes
Tiempo empleado en estas tareas
La hora empleada mensualmente equivale al tiempo de reconciliación manual que el sistema no pueda reconciliar por sí solo por falta de información o contexto.
+18%
Mejora en CSAT
La satisfacción de sus clientes mejoró desde el segundo mes tras la implementación, debido al incremento de velocidad del flujo de información y eliminación del cuello de botella.
-77.5%
Reducción de deadline
El deadline era de 40 días y la entrega se realizó en tan solo 9. Lo que son 31 días antes de la fecha máxima.
Aumento en facturación
Debido a un nuevo servicio activado
Este sistema derivó en una segunda fase. Un sistema que encontraba ayudas y subvenciones para sus clientes con base en sus CNAEs, localizaciones, etc.
Aprendizajes
Esta implementación me llevó a aprender:
- La utilización de la API del ERP que utilizaba la empresa
- El patrón de diseño Medallion y su implementación