Live2026Concept, design and development

BollettaLimpida

Tells you whether you are paying too much for electricity or gas, by comparing your bill with every offer on the free market. The bill stays on your phone or computer.

Almost 2,900 offers
from the official catalogue compared with your bill, updated every day
Nothing uploaded
the bill is read on your phone or computer and goes nowhere
Six days
from the first day of work to the live site
BollettaLimpida's report on a sample bill, showing the estimated yearly saving, energy cost and fixed fee.
The report on sample bill A. The data is made up for demonstration.

The problem

Anyone looking at an Italian electricity or gas bill sees a total and dozens of items, but the real question is a simple one: am I paying too much? To answer it you have to isolate the part of the cost that actually changes from one supplier to another, the energy and the fixed fee, and compare it with the real offers on the market, not with an advert.

The best-known comparison sites make money from commissions and phone consultations, or ask you to upload your bill and reply by email. I wanted a tool anyone could recommend, with no phone number to leave and no file to send.

What it does

You drop in your bill, even a scan or a password-protected PDF, or a photo, or you type the figures in yourself. Your phone or computer reads it on its own, without sending it anywhere, and shows you item by item what it read, so you can check. Then comes the verdict: whether switching pays off, which is the cheapest offer open to everyone and what steps it takes. If you like, you can get a reminder for when your price expires.

The comparison uses the official offers that suppliers publish every day on the Portale Offerte run by ARERA, the Italian energy regulator: almost 2,900 across electricity and gas, refreshed every morning. Around the tool there is a six-article guide, from reading the bill to switching supplier, and a monthly price observatory.

The choices that matter

  • Your bill stays yours. It is read on the device and never leaves it. More than the number of offers, this is what makes the difference.
  • Only what you can change is compared. System charges, transport and taxes are the same for everyone. Comparing totals confuses; comparing the negotiable part tells you where you stand.
  • The ranking cannot be bought. Offers are sorted by estimated cost and nothing else, and an automatic check makes sure no commercial deal can change that order.
  • No empty advice. A switch is suggested only if it saves at least €30 a year and the saving holds even at the highest and lowest prices of the past twelve months. “Stay where you are” is a useful answer too.
  • Exact numbers, not plausible ones. I don’t use AI to read or to calculate. A bill contains figures that must be exact, and a calculation you can redo by hand is worth more than a believable answer.

Problems solved along the way

  • Errors nobody would have noticed. In the first versions the data read from a bill went straight to the result, and in a test on 30 bills, 18 contained invisible errors. That is where the check screen came from: it warns you when something does not add up, for example a total that differs from the sum of the items. Today, on a test bench of 30 made-up bills, the tool reads every field from PDFs and 95.8% from scans, with no silent errors on the fields that matter.
  • The official portal blocks cloud servers. So the update starts every morning from a Mac, which checks the data before publishing it and never replaces good data with broken data.
  • PDFs would not open on iPhone. The automated tests that use the site the way a person would, on real browsers, caught it, and the problem was fixed.

Where it stands

BollettaLimpida has been live at www.bollettalimpida.it since September 2026, six days after the first day of work. I don’t have usage figures yet: the anonymous, cookie-free counters have been running since 25 September. Next come twenty comparison cases against the official portal’s calculations, a collection of real bills shared with people’s consent and a usability test with five people.

What I learned

  • One source of truth, with checks that fire when something drifts away from it. The most serious defects came from hand-written data sitting next to the official data.
  • No warning is better than a wrong warning.
  • Lab tests are not enough. A test on fake data can hide a real problem. You need real bills, real people and outside experts.

Try it

You can try the site without a bill: the «Non hai la bolletta? Prova un esempio» button (no bill? try a sample) loads four made-up bills, from an expensive old fixed price to a rate that is already good value. The interface is in Italian. The code is private, but I can show it on a call.

How the information moves

The method I use with clients, applied to this project: follow the information from where it starts to how you know everything works.

  1. Where it startsSuppliers publish their offers every day on the energy regulator's official portal; the person has their own bill in hand.
  2. How it arrivesThe bill arrives as a PDF, a scan or a photo, or the person types the figures in. The offers arrive from the portal every morning.
  3. How it is describedThe bill and the offers are described with the same items, so they can be compared like for like.
  4. What happens to itThe device reads the bill and works out what you would spend in a year with each offer, using the same formula for all.
  5. Where it livesThe offers live on the site; the bill stays only on your device.
  6. Who decidesYou check the data that was read. A switch is suggested only if it saves at least €30 a year, even at the highest and lowest prices of the past year.
  7. What happens nextThe offer's official page opens, or you set a reminder for when your price expires.
  8. How we know it worksAnonymous cookie-free counts, a daily check that the offers are up to date and a test bench that measures how well bills are read.
For those who want the technical details

How it is built, for people who work in software or want to know what is underneath. Every number has a source.

  • Reading in the browser: pdf.js for text PDFs, Tesseract OCR for scans and photos, then hand-written rules. No language model, either for reading or for calculating.
  • Catalogue from the Portale Offerte XML open data, downloaded every morning by a launchd service on a Mac, because the portal blocks cloud server addresses. Consistency checks never overwrite good data with broken data.
  • Calculation engine with scenarios for offers indexed to PUN and PSV, and a saving threshold checked at the price extremes of the past twelve months.
  • Static site on Cloudflare Pages; reminders via serverless functions, Supabase through a small REST client, Brevo with double opt-in and Turnstile against bots. The infrastructure costs almost nothing.
  • 321 unit tests, 67 end-to-end tests on Chromium, Firefox, WebKit, iPhone and Android, and a Lighthouse check that blocks any release below 95.
  • Built with AI coding agents, which I directed and checked with tests and audits at every step.
Offers compared
1,616 electricity and 1,264 gassource: open data Portale Offerte ARERA, 27/09/2026
Where the bill is read
Only on the devicesource: test end-to-end su Chromium, Firefox e WebKit
Language models used
Nonesource: dipendenze e codice del repository
Fields read correctly
100% from PDFs, 95.8% from scanssource: banco di prova su 30 bollette sintetiche, 25/09/2026
Automated tests
321 unit and 67 end-to-endsource: audit interno del 25/09/2026
Development pace
100 commits in 6 dayssource: git log, 22–27/09/2026

Tools used: React, TypeScript, Vite, Tailwind CSS, pdf.js, Tesseract.js, Cloudflare Pages Functions, Supabase, Brevo, Cloudflare Turnstile, Playwright, GitHub Actions, macOS launchd

Have a project in mind?

Tell me in a few lines: what you'd like to build, who it's for, and what's in the way today. I reply within one working day, and the first conversation is free.

Write to meinfo@pietromey.com