Side Project
De la decisión al producto funcional
Proyectos que empezaron como un problema de diseño y acabaron requiriendo construir, con decisiones de arquitectura y tecnología tomadas desde el pensamiento de producto.
Un sistema de alertas que convierte 250.000 licitaciones en las relevantes para ti
250.000+ licitaciones públicas en la base de datos, y un motor que sabe cuáles le interesan a cada empresa. Diseñé y desarrollé el primer módulo de un SaaS de IA que procesa el feed oficial de contratación pública y combina semántica con heurísticas de negocio para filtrar lo que importa.
Imagen en camino
lo sé, lo sé. está en mi lista.
250k+
licitaciones en base de datos
38
decisiones de arquitectura documentadas
6
fases en la hoja de ruta
1er
módulo en producción
El punto de partida
El briefing inicial era amplio, ambicioso y sin scope definido. Lo primero que hice no fue escribir código: fue entender qué había realmente ahí dentro. El documento mezclaba al menos cuatro productos distintos sin separación clara. Antes de tocar nada, lo reescribí separando el contenido en 4 módulos de negocio independientes y 1 módulo técnico transversal (el pipeline RAG). Definí qué podía construirse de forma autónoma, qué dependía de qué y qué no entraba en el MVP de 4 meses.
El resultado fue una hoja de ruta de 6 fases y un scope que, por primera vez, se podía estimar, priorizar y comunicar. A lo largo del proyecto documenté 38 decisiones de arquitectura y stack, especificando qué elegí, qué alternativas evalué, por qué descarté cada una. Más que simple burocracia, fue la metodología que me permitió avanzar sin perder coherencia técnica ni contexto.
Construir el pipeline
El enfoque original contemplaba scraping. Lo primero que hice fue validar si había algo mejor. Y lo había: el feed oficial de la PLACSP, con ficheros ZIP mensuales en formato Atom/XML. Diseñé el pipeline con dos scripts de responsabilidad única. El fichero JSONL que los conecta actúa como contrato: si falla la carga, no hay que re-descargar nada. Sobre eso, implementé sincronización incremental para que el motor de alertas siempre vea datos frescos.
Una decisión que marcó el proyecto: guardar todo en la ingesta, sin filtros. Aplicar la selección solo en la capa de consulta evitó tener que reprocesar el histórico cada vez que cambiase un criterio de negocio.
Imagen en camino
lo sé, lo sé. está en mi lista.
El recomendador
El problema de fondo era semántico. Los códigos CNAE y CPV clasifican sectores, pero no capturan bien qué hace realmente una empresa ni qué tipo de contratos le interesan.La solución combina dos señales: embeddings semánticos generados a partir de la descripción de actividad de la empresa, y heurísticas basadas en sus códigos CNAE y los de la licitación. Cuando ambas señales están disponibles, se combinan con una media ponderada. Cuando solo está una, aunque es menos preciso, el sistema funciona igual y no se rompe.
El resultado es un motor de matching que mejora con cada dato que el usuario aporta sobre su perfil, y que no depende de que todo esté perfectamente rellenado para dar resultados útiles.
“La diferencia entre hablar de IA y construir con ella está en las decisiones que tomas cuando algo no funciona como esperabas.”
Qué me llevé
Hablemos
¿Tienes un proyecto?
Estoy abierta a proyectos de diseño de producto, branding y colaboraciones que tengan sentido humano. Cuéntame en qué estás pensando.