El radar que no encontró nada el primer día
210 licitaciones recogidas, ninguna para nosotros. En vez de aflojar los filtros, preguntamos por qué: un PDF cifrado, alertas a 677 € al año y una API pública que nadie documenta.
Construimos un radar de licitaciones públicas. Al final del primer día había recogido 210 procedimientos y ninguno servía. Cero.
La tentación, en ese momento, es aflojar los filtros hasta que la pantalla dé señal. No lo hicimos. Un sistema que siempre encuentra algo no es un radar: es un espejo. Lo que hicimos fue preguntar por qué estaba vacío, y la respuesta nos enseñó más sobre contratación pública en Portugal que cualquier manual.
El TED es el mercado equivocado
Empezamos por el TED, el Diario Oficial de la Unión Europea. API pública, sin clave, documentación decente. Dos semanas de anuncios portugueses dieron 250 registros, de los cuales dos puntuaron por encima de cero.
El TED solo publica por encima de los umbrales europeos. El contrato de 48 mil euros de un ayuntamiento para una exposición no aparece allí, y ese es exactamente el tamaño del trabajo que hacemos. La fuente más limpia era la menos útil.
El boletín oficial lo publica todo, y esconde lo esencial en un PDF cifrado
Después, el Diário da República, serie II. En un solo día: 238 elementos, 35 de ellos anuncios de procedimiento, más licitaciones municipales de las que el TED trae en un mes.
Pero el RSS da el número del anuncio, la entidad, el objeto y un enlace. No da plazo, ni precio base, ni código CPV. Eso está en el PDF. Y la imprenta nacional publica esos PDF cifrados: manejador de seguridad estándar, AES-128, sin contraseña de usuario.
Descifrarlo es posible en PHP puro, derivando la clave como especifica el formato. Lo hicimos. Pero conviene decir en voz alta lo que esto significa: información que la ley obliga a publicar llega al ciudadano dentro de un fichero cifrado.
Las plataformas venden lo que ya es público
En Portugal hay cuatro plataformas electrónicas licenciadas por el IMPIC. Todas ofrecen alertas por área de negocio. Fuimos a ver los precios, que publican ellas mismas:
- ComprasPT — notificaciones diarias de licitaciones: 180 € al año. Packs de adhesión: 567 €, 1.515 € o 3.884 € al año.
- anoGov — alertas diarias solo dentro de los packs: 677 €, 1.620 € o 3.989 € al año.
El registro básico es gratuito, como obliga la ley. Que te avisen de que existe una licitación en tu campo es un servicio de pago. (Precios publicados en septiembre de 2026; la lista de ComprasPT está fechada el 11 de febrero de 2025.)
Y entonces encontramos la API que nadie documenta
El Portal BASE, del IMPIC, es el repositorio oficial de la contratación pública portuguesa. El sitio es una aplicación JavaScript que habla con su propio servidor. Fuimos a ver qué le pregunta.
POST https://www.base.gov.pt/Base4/pt/resultados/
type=search_anuncios&version=109.0&query=…&page=0&size=25
Responde en JSON. Entidad, designación, tipo de procedimiento, precio base, fecha de publicación, plazo de propuestas, ya en campos separados. 251.784 anuncios. Sin clave, sin registro, sin cuenta.
Lo mismo en VORTAL: la búsqueda pública de consultas activas es un POST que devuelve 605 licitaciones portuguesas en curso, y la página de detalle da el CPV, el NIF de la entidad y los pliegos del procedimiento. También sin cuenta.
No hay nada clandestino en esto. Son anuncios de licitación: publicidad legal obligatoria, que debe estar accesible a cualquiera. La diferencia es que la forma legible por máquina no está documentada en ningún sitio, y hay quien cobra 180 € al año por enviártela por correo.
Qué hace el radar con esto
Cada licitación se puntúa con reglas explicables: términos en el objeto, CPV en la lista objetivo, precio base dentro de nuestro rango de trabajo, plazo suficiente para preparar la propuesta. La pantalla muestra la puntuación y, al abrirla, la cuenta línea a línea: «CPV 72413000 en la lista objetivo, +30».
Eso importa porque la decisión no es del algoritmo. Es de quien va a pasar dos semanas escribiendo una propuesta.
Lo que sigue sin resolverse, dicho claramente
- Más del 40% de la colección no tiene CPV. Viene del boletín (está en el PDF) y de BASE (está en el detalle, a una petición de distancia). Sin CPV, la puntuación depende del vocabulario, y el vocabulario falla: capturamos «reparación de las plataformas de las ecovías» como posible trabajo de plataformas digitales.
- BASE limita el ritmo. Tras una recogida intensa empieza a responder
200con cuerpo vacío. Lo tratamos como error visible, nunca como «no hay licitaciones»: la regla más importante que escribimos. - El umbral de alerta estaba en 85 y la mejor licitación de toda la colección tenía 46. El radar nunca iba a sonar. No era falta de licitaciones: era el listón.
La parte que no se ve en los dashboards
Una pantalla bonita con seis licitaciones puntuadas es fácil de fabricar. Lo que cuenta es el primer día con cero, y resistirse a mover los números hasta que se vean mejor.
Un radar honesto tiene que poder decir «hoy no hay nada para ti». Si no puede decir eso, tampoco vale nada cuando diga lo contrario.