Javier García Angosto
El responsable de todo este lío

Sobre mí

Me llamo Javi, pero todos me llaman Angosto. De formación soy Periodista y Realizador Audiovisual, pero en la práctica hago de todo.

“¿Sabes hacer eso? Todavía, no.”

Cómo empezó todo este despropósito

Llevo años hurgando y dando por saco con los contratos menores, desde aquellos tiempos gloriosos en los que no hacía falta ni pedir tres ofertas. ¿Tres ofertas? ¿Para qué, si puedo adjudicárselo a mi coleguita?

El tope era de 18.000 euros para contratos de servicios y suministros y algunos tenían la poca vergüenza de gastarse exactamente 17.999 euros. Un euro por debajo del límite. Qué casualidad, ¿no?

Era una época, y no hace tanto, donde algunos exprimían los contratos menores hasta para convertir el Salón Dorado de la Asamblea en una sala de fiestas para celebrar la “entronización” del presidente de turno. ¿Lo recuerdas?

😤

Dato curioso: En aquellos tiempos, investigar esto era como buscar una aguja en un pajar, pero la aguja estaba escondida debajo de otra aguja, y el pajar estaba cerrado con candado, y las llaves las tenía el administrativo que estaba de vacaciones.

ContratosMelilla.es: la historia de dos versiones

La primera versión de ContratosMelilla.es nació como dos portales separados: menores.contratosmelilla.es y mayores.contratosmelilla.es. Dos webs distintas, con dos bases de datos distintas, dos servidores distintos y dos diseños distintos. Compartían filosofía, pero no datos.

Técnicamente era una SPA (aplicación de una sola página) hecha con JavaScript vanilla, datos estáticos en JSON, un backend en Python con FastAPI llamado “El Portero”, bases de datos SQLite y autenticación básica en Nginx. Funcionaba, pero era como tener dos periódicos separados: uno de contratos menores y otro de mayores, sin poder cruzar la información entre ellos.

Los menores se alimentaban de un Excel trimestral que la Administración volcaba lleno de erratas e inconsistencias. Los mayores venían de los feeds ATOM/XML de la Plataforma de Contratación del Sector Público. En total, unos 18.500 contratos menores y 2.165 mayores. Datos valiosos, pero incompletos y desconectados.

🔥

El detonante de la segunda versión

Todo cambió cuando una política inculta, bastante barriobajera, se puso a decir sandeces sobre este proyecto en un Pleno de la Asamblea. Me picó. Me picó de verdad. Y cuando me pican, hago cosas. Pues ahí lo llevas: la segunda versión.

La segunda versión es otro nivel. Literalmente. Una sola base de datos PostgreSQL con más de 20.000 contratos unificados, un frontend moderno con Next.js, fichas de empresa y órgano, scoring de riesgo automático, detector de fraccionamiento, exportación de datos abiertos, y un largo etcétera. Por primera vez se pueden cruzar menores y mayores, ver la historia completa de una empresa adjudicataria o detectar patrones que antes eran invisibles.

v1

Primera versión

  • • Dos portales separados (menores + mayores)
  • • JavaScript vanilla + JSON estático
  • • SQLite + FastAPI “El Portero”
  • • Sin cruzar datos entre portales
  • • Sin fichas de empresa ni órgano
  • • Sin scoring de riesgo
  • • Sin alertas ni suscriptores
  • • Sin datos abiertos descargables
  • • Basic Auth global (no indexable)
v2

Segunda versión (esta)

  • Plataforma unificada (menores + mayores)
  • • Next.js 15 + React 19 + TypeScript
  • • PostgreSQL 16 + Drizzle ORM
  • Cruce de datos entre tipos de contrato
  • • Fichas de empresa, órgano y unidad
  • Scoring de riesgo automático (0-100)
  • Detector de fraccionamiento cruzado
  • Datos abiertos descargables (CSV)
  • • SEO: páginas indexables por Google

La diferencia no es solo técnica. Es filosófica. La versión 1 era una herramienta de investigación personal. La versión 2 es una plataforma ciudadana: cualquiera puede buscar, descargar datos, activar alertas y fiscalizar. Sin pedir permiso a nadie.

¿Qué me mueve?

Por un lado, dar por culo a los poderosos para lograr una Melilla más justa. Suena bonito, ¿verdad? La realidad es más cruda: siempre acabo en el bando débil. David contra Goliat.

No es que me guste sufrir, es que alguien tiene que hacerlo. Y como suelo decir: “Si no es ahora, ¿cuándo? Si no soy yo, ¿quién?” Aunque confieso que a veces prefiero que sea otro, pero bueno, aquí estamos.

🎯

Misión

Que los poderosos rindan cuentas. Que el dinero público se gaste como si fuera nuestro, porque lo es. Que ningún político pueda esconderse detrás de un expediente opaco.

Filosofía

Transparencia radical. Si lo haces bien, no tienes nada que ocultar. Si lo haces mal, ya vendré yo a contarlo. O alguien con más paciencia, que también hay.

El culpable de todo

Un día descubrí a Jaime Gómez-Obregón y las cosas que hace. Me convertí en un fan boy declarado. Este hombre, con más talento en un pelo que yo en todo el cuerpo, creó Contratos de Cantabria, una herramienta de fiscalización que es pura inspiración.

Así que hice lo que haría cualquier persona obsesionada: intenté copiarle. Bueno, “copiar” es una palabra fuerte. Digamos que me inspiré profundamente. Tanto que esta página de contratos es prima hermana de la suya.

👨‍💻

Pequeña diferencia: La suya la ha hecho un profesional. Esta la ha hecho un aprendiz de todo y experto en nada. Pero oye, al menos lo intento. Que es más de lo que hacen algunos.

Jaime, si estás leyendo esto: perdona por el plagio emocional. Y gracias por demostrar que un ciudadano puede hacer cosas que los gobiernos no hacen.

La apasionante época en la que vivimos

Si he podido hacer esto es gracias a dos cosas: la apasionante época en la que vivimos, con el auge de la inteligencia artificial, y la de miles de personas que hacen vídeos en YouTube de las que todos podemos aprender.

Repito, por si no ha quedado claro: GRATIS. Sí, gratis. Sin pagar un euro. Sin matricularse en nada. Sin pedir beca. Sin endeudarse con un máster que cuesta más que un piso en Melilla. Solo necesitas curiosidad, paciencia y una conexión a internet.

No hay excusa hoy en día. Si quieres aprender algo, buscas en YouTube, te pones el vídeo a 1.5x para que el youtuber hable más rápido (truco de supervivencia), y en una semana ya sabes más que el 90% de la población. O al menos eso te crees, que también es parte del proceso.

🎓

¿Sabes hacer eso?

Todavía, no.

Pero mañana igual sí. O pasado. O la semana que viene. El caso es no dejar de intentarlo. Que es más de lo que hacen muchos que ya saben y no hacen nada.

Mi caja de herramientas (y mis torpezas)

Todo empezó pidiéndole a ChatGPT cachos de código o que me hiciera de guía para configurar un servidor. Era, y sigue siendo, como pedirle a un genio que te conceda deseos, pero puedes hacer que cada deseo concedido sea una nueva oportunidad de aprender. En todos mis proyectos le digo a mi agente de IA que me trate como un estudiante y me explique todo al detalle. Es como tener a un experto en lo que quieras todo el tiempo, 24/7.

Luego pasé por Antigravity, que suena a nave espacial pero es otra herramienta de IA. Y al final, lo que ya uso habitualmente, es OpenCode, con la posibilidad de usar modelos de IA que antes no podía imaginar. ¡Y todo esto ha pasado en unos pocos meses!

🤖

ChatGPT

El que empezó todo. Mi primer mentor digital. Le debo una cerveza (o mil).

🚀

Antigravity

La fase intermedia. Como el cinturón amarillo de karate, pero en programación.

OpenCode

Mi herramienta actual. Modelos de IA que antes eran ciencia ficción. Y aquí sigo, aprendiendo.

Cada error que ves en esta web tiene nombre y apellido: el mío. Pero cada cosa que funciona también. De eso va este embolao.

Quién apadrina este desaguisado

Un agradecimiento a Somos Melilla por apadrinar el proyecto y darle publicidad. Sin ellos, esto seguiría siendo un experimento guardado en un pendrive que nadie vería.

Somos Melilla es un partido que, como yo, cree que Melilla merece más transparencia y menos opacidad. Han tenido la valentía de poner su nombre detrás de esto, lo cual no es poco en una ciudad donde levantar piedras suele tener consecuencias.

Un dato que debe quedar claro

📌

Esto va a seguir aquí, siga Somos Melilla en la oposición o no. Debes saber que le presto servicios de comunicación como periodista, pero eso no cambia nada.

El control de la página lo tengo yo. La última palabra es mía. Y si algún día Somos Melilla llega al poder (no voy a negar que estaría bien), esta misma herramienta servirá para fiscalizar lo que hagan. Así es como debe ser.

Porque la transparencia no tiene bandera. No es de derechas ni de izquierdas. No es de unos ni de otros. Es de todos. Y este portal sirve para fiscalizar a quien gobierne, sea del color que sea.

🤝

¿Quieres dar por saco conmigo?

Usa esta herramienta. Investiga. Comparte. Fiscaliza. Que los poderosos suden. Que la ciudadanía sepa. Que Melilla sea un poco más justa.