post: drop the comma before and in the six months series
All checks were successful
Deploy to OVH VPS / deploy (push) Successful in 1m3s

This commit is contained in:
Lorenzo Iovino 2026-09-29 00:20:28 +02:00
parent 015f4b0127
commit 5490f62b05
5 changed files with 12 additions and 12 deletions

View file

@ -56,4 +56,4 @@ And I discovered that some websites were already copying our data without asking
- **People land where the assistant remembers,** not where you want. Make old pages useful.
- **Small traffic doesn't pay with ads.** Look for who needs the data, not the eyeballs.
Next time: a product that nobody bought, and what I did about it.
Next time: a product that nobody bought and what I did about it.

View file

@ -15,7 +15,7 @@ Short answer: one vendor at a time. 😅
The first scraper was for one vendor platform. Easy. Then I added a second town and it was on a different platform. Then a third one.
At some point I stopped counting towns and started counting **vendors**. Today there are about **100** of them in the codebase, and each one has a personality:
At some point I stopped counting towns and started counting **vendors**. Today there are about **100** of them in the codebase. Each one has a personality:
- old Java server pages with a hidden "ViewState" that you must send back exactly as you received it, or nothing works
- sites that only work inside a real browser, so the crawler drives a headless Chromium
@ -52,7 +52,7 @@ The notice board gives you a title and a PDF. The interesting part is inside the
So the pipeline got longer:
1. download the PDF (4.6 million so far)
2. extract the text, with OCR when it's a scan, and it's a scan more often than you think
2. extract the text, with OCR when it's a scan (and it's a scan more often than you think)
3. pull out the fields: amounts, suppliers, dates, offices
For step 3 I started with a local model with Ollama, then moved to cheaper hosted models. Then I learned the boring lesson: you can do **a lot** with regex before calling any model. A spending approval in Italian has a very recognizable shape. The LLM is for what the regex can't read, not for everything.
@ -65,7 +65,7 @@ These acts are full of personal data. Names, addresses, health situations of peo
The law says they must stay public for 15 days. That doesn't mean "republish forever on a search engine".
<br/>
So nothing goes online before a privacy filter checks it, and whole categories of acts are never shown at all. Crawling everything is fine. Showing everything is not.
So nothing goes online before a privacy filter checks it. Whole categories of acts are never shown at all. Crawling everything is fine. Showing everything is not.
## What I learned

View file

@ -1,6 +1,6 @@
---
title: "Removing servers, now as co-CTO"
description: "My new role at Welance: less code, more decisions, and a Kubernetes cluster that can go from 9 nodes to 2."
description: "My new role at Welance: less code, more decisions and a Kubernetes cluster that can go from 9 nodes to 2."
pubDate: 2026-10-13
tags: ["welance", "kubernetes", "infrastructure", "thoughts", "engineering"]
---
@ -9,7 +9,7 @@ Last post of the series that started with [six months reading every Italian muni
## Welance
[Welance](https://welance.com) is an international collective that has been around for about 15 years, and today I'm its co-CTO.
[Welance](https://welance.com) is an international collective that has been around for about 15 years. Today I'm its co-CTO.
It's a different job. Less code, more decisions.
<br/>
@ -37,9 +37,9 @@ The funny part: before removing nodes you must fix the fake CPU requests. If you
The other side is bringing the products inside the company story.
The albo pretorio crawler, [Piazza in Festa](https://piazzainfesta.it) and [RadarPA](https://radarpa.it) are three ways of reading the same public data, and I want them to become something bigger than my side projects. That's also why RadarPA's first customer is Welance itself.
The albo pretorio crawler, [Piazza in Festa](https://piazzainfesta.it) and [RadarPA](https://radarpa.it) are three ways of reading the same public data. I want them to become something bigger than my side projects. That's also why RadarPA's first customer is Welance itself.
<br/>
How exactly all of this fits together is still work in progress, and I'm ok to say it.
How exactly all of this fits together is still work in progress. I'm ok to say it.
## What I learned (so far)

View file

@ -21,7 +21,7 @@ I built it fast: signals from the acts, a "heat" score for how close a tender is
<br/>
And nobody bought it.
Not "few people". Nobody. The site had no traffic, the UI didn't make clear what you do with it, and keeping the LLM running on every sector was costing money while the data got old.
Not "few people". Nobody. The site had no traffic, the UI didn't make clear what you do with it. And keeping the LLM running on every sector was costing money while the data got old.
## What I changed
@ -29,7 +29,7 @@ On September 3rd I stopped. Not the product, the way I was using it.
I realized I was trying to sell something to strangers without having closed a full loop even once, with one real customer.
So the first customer became... us. Welance. One sector turned on (digitalization, what we actually do), and every day I use RadarPA to find leads for the agency.
So the first customer became... us. Welance. One sector turned on (digitalization, what we actually do). Every day I use RadarPA to find leads for the agency.
<br/>
If it works for us, then I can sell it with a straight face.
@ -53,4 +53,4 @@ A broad question to the assistant costs me about 14 cents. Less than a coffee, e
- **Use your own product every day.** The annoying parts are the roadmap.
- **Turn things off.** One sector done well is better than twenty sectors that nobody reads.
Next and last one of the series: Welance, and my new role there.
Next and last one of the series: Welance and my new role there.

View file

@ -53,7 +53,7 @@ What I would say to anyone doing the same: **the agent is great at adding, you m
- **Start with one town.** Scicli was the right size to learn. Then the second town teaches you more than the first.
- **Measure twice.** Every number I shared too fast was wrong: visitors, empty municipalities, costs.
- **AI agents make you fast, not right.** Being right is still your job.
- **Boring infra is still good.** Rust binaries, Postgres and a couple of machines on OVH. Nothing fancy, and it holds 5 million acts.
- **Boring infra is still good.** Rust binaries, Postgres and a couple of machines on OVH. Nothing fancy. And it holds 5 million acts.
## Closing