Arce

Monitoreo y análisis de licitaciones públicas con IA local.

RolDiseño, desarrollo e infraestructura, de punta a puntaOrigenGrupo CPS, por una necesidad real del equipo comercialAño2025
n8nNode.jsPuppeteerPostgreSQLOllamaIA localDockerLinuxWeb scraping

Arce monitorea las publicaciones del portal de compras estatales (ARCE), extrae cada llamado, lo estructura, lo analiza con un modelo de IA que corre en local y deja en un dashboard solo las oportunidades relevantes para el equipo comercial.

Detectar oportunidades significaba revisar a mano el portal de compras estatales (ARCE): un proceso lento, repetitivo y fácil de descuidar entre el resto del trabajo. Eran unas 2 horas diarias, 5 días a la semana.

La información llegaba como texto no estructurado, difícil de comparar y filtrar. Cuando un llamado relevante aparecía y nadie lo veía a tiempo, era una oportunidad perdida.

Arce automatiza todo ese recorrido: n8n consulta el feed RSS de ARCE cada 15 minutos, un scraper con Puppeteer extrae el detalle de cada llamado nuevo y todo se guarda estructurado y sin duplicados en PostgreSQL.

Los pliegos adjuntos se procesan en cualquier formato (PDF, DOC, DOCX, XLS, ZIP) con chunking automático para documentos grandes. Un modelo Llama 3.1 corriendo en local evalúa la relevancia con un prompt especializado en el rubro, y además detecta fechas de visitas técnicas, lugares y contactos.

El tema de interés es configurable: en mi caso filtra por aluminio, el rubro de mi empresa, pero se adapta a cualquier otro sin tocar el código.

El equipo deja de revisar el portal: abre un dashboard y ve únicamente las oportunidades que importan, ya filtradas y ordenadas.

Cómo fluyen los datos, de la fuente al dashboard.

01

ARCE (compras estatales)

Las últimas publicaciones del portal de compras del Estado son el punto de entrada.

02

Scraping automatizado

n8n consulta el RSS cada 15 minutos y un scraper con Puppeteer extrae el detalle de cada llamado nuevo.

03

Extracción multi-formato

Los pliegos (PDF, DOC, DOCX, XLS, ZIP) se convierten a texto estructurado, con chunking automático para documentos grandes.

04

PostgreSQL

Los llamados se almacenan deduplicados y con histórico consultable, sin reprocesar todo cada vez.

05

IA local (Ollama)

Llama 3.1 con un prompt especializado clasifica cada licitación por relevancia y detecta visitas técnicas, fechas y contactos.

06

Dashboard

El equipo ve solo las oportunidades relevantes, listas para actuar.

Todo el flujo está orquestado en n8n: ajustar fuentes, reglas o frecuencia se hace sobre el workflow, sin reescribir el sistema.

Por qué está construido así.

IA local, no en la nube

Usar Ollama con modelos locales mantiene los datos dentro de la infraestructura, elimina el costo por consulta y saca de la ecuación los límites de las APIs externas.

n8n para orquestar

Coordinar el flujo en n8n permite cambiar reglas, fuentes o frecuencia tocando el workflow, en vez de reescribir y redeployar código.

PostgreSQL como base

Guardar los llamados estructurados en Postgres habilita consultar, comparar y mantener un histórico, en lugar de procesar todo desde cero en cada corrida.

Todo en Docker

El sistema corre containerizado sobre Linux: reproducible, aislado y desplegable en un servidor propio sin dependencias frágiles.

El dashboard en funcionamiento.

Por dentro.

Vista principal del dashboard de Arce
Dashboard principal: cada llamado con su urgencia y el score de relevancia que le asigna la IA.
Detalle de una licitación en Arce
Detalle de un llamado: datos estructurados, archivos adjuntos, análisis de la IA y feedback humano.
Workflow de Arce en n8n
El flujo en n8n: RSS, parseo XML→JSON, scraping, filtrado por relevancia y carga a PostgreSQL.
~10 hs

de búsqueda manual ahorradas cada semana (antes: 5 días × 2 hs revisando a mano).

0

tiempo dedicado a revisar el portal de ARCE manualmente.

Configurable

el rubro de interés se cambia sin tocar el sistema (en mi caso, aluminio).

¿Tenés un proceso que se podría automatizar así?

Si algo de esto se parece a un problema tuyo, hablémoslo.