Saltar al contenido

Side Project

Problems, decisions and functional products

Projects that started as a design problem and ended up requiring building, with architecture and technology decisions made from a product thinking perspective.

Automation + Development
n8nDirectusPythonStreamlitWhisper
AI / LLMs
Claude APIGPTsClaude CodeAntigravity
Frontend
Next.jsReactFigma

An alert system that turns 250,000 tenders into the relevant ones for you

250,000+ public tenders in the database, and an engine that knows which ones each company cares about. I designed and built the first module of an AI SaaS that processes the official procurement feed and combines semantics with business heuristics to filter what matters.

WhenMarch 2026
ContextTUATEAM · FP Dual Internship
StackPython · PostgreSQL · Streamlit · Pydantic · sentence-transformers · Docker
Company profile configuration to receive alerts

250k+

tenders in database

38

architecture decisions documented

6

phases in the roadmap

1st

module in production

The starting point

The initial briefing was broad, ambitious and with no defined scope. The first thing I did was not write code: it was understand what was actually inside it. The document mixed at least four distinct products without clear separation. Before touching anything, I rewrote it separating the content into 4 independent business modules and 1 cross-cutting technical module (the RAG pipeline). I defined what could be built independently, what depended on what, and what fell outside the 4-month MVP.

The result was a 6-phase roadmap and a scope that, for the first time, could be estimated, prioritized and communicated. Throughout the project I documented 38 architecture and stack decisions, specifying what I chose, what alternatives I evaluated, why I discarded each one. More than mere bureaucracy, it was the methodology that allowed me to advance without losing technical coherence or context.

Building the pipeline

The original approach contemplated scraping. The first thing I did was validate whether there was something better. And there was: the official PLACSP feed, with monthly ZIP files in Atom/XML format. I designed the pipeline with two single-responsibility scripts. The JSONL file connecting them acts as a contract: if loading fails, nothing needs to be re-downloaded. On top of that, I implemented incremental synchronization so the alert engine always sees fresh data.

A decision that defined the project: store everything at ingestion, without filters. Applying selection only at the query layer avoided having to reprocess the historical data every time a business criterion changed.

Results screen of the tender alert system

The recommender

The underlying problem was semantic. CNAE and CPV codes classify sectors, but don't capture well what a company actually does or what types of contracts it's interested in. The solution combines two signals: semantic embeddings generated from the company's activity description, and heuristics based on its CNAE codes and those of the tender. When both signals are available, they're combined with a weighted average. When only one is available, though less precise, the system still works and doesn't break.

The result is a matching engine that improves with every piece of data the user provides about their profile, and that doesn't depend on everything being perfectly filled in to deliver useful results.

The difference between talking about AI and building with it lies in the decisions you make when something doesn't work as expected.

What I took away

Scope as a product toolRestructuring a confusing briefing before writing code is not wasting time — it's what makes it possible to build something that scales and can be explained.
Architecture that can changeSeparating responsibilities, documenting decisions and avoiding filters at ingestion are choices that initially seem to slow things down, but prevent weeks of work when something changes.
AI implemented, not just usedUntil this project I had worked with AI at the communication level. Here I implemented embeddings with sentence-transformers. The difference between talking about AI and building with it is concrete, and you feel it.

Let's talk

Do you have a project?

I'm open to product design projects, branding and collaborations that make human sense. Tell me what you're thinking.