How we build the data.
Trasparenza.ai does not generate data, it aggregates public data. Every number on the site is verifiable against the primary source, which is always cited. Here we explain the formulas, the real update cadences and the limitations, including the ones that make us look bad.
Figures, cadences and formula on this page last verified: 2 September 2026.
Sources, one by one
Trasparenza.ai relies exclusively on Italian and European public sources. No scraping of private sites, no paywalled data, no proprietary sources. 29 sources are connected, but only 5 feed a figure you can find published today. The rest are listed below with their real status. Per-source notes are written in Italian on /metodologia.
Primary sources (5)
These feed a number you can actually find published on the site. These, and only these.
- ANAC →
Monthly · active · data through 31 December 2025
- Italia Domani (ReGiS) →
Manual import, no schedule · active · data through 13 June 2026
- ANBSC, beni sequestrati e confiscati →
Daily · active · last successful sync 2 September 2026
- DAIT, Anagrafe degli Amministratori Locali →
Monthly · active · last successful sync 2 September 2026
- ISTAT, codici e anagrafica dei comuni →
Manual import, no schedule · active · last successful sync 2 September 2026
Stalled sources (2)
They produced data we still publish, but they have stopped. The date tells you how far the data you are reading goes.
- ENTSO-E Transparency Platform →
Weekly · stalled · data through 24 August 2026
- OpenAQ →
No scheduled update · stalled · data through 4 June 2026
Syncs that run, without feeding any national figure (13)
The job runs and completes without errors, and none of these sources feeds any of the national figures on this page. Three of them do fill a page of their own: TED supplies the sample of EU tenders on /appalti-eu, Eurostat the European context indicators on /indicatori-eu, and OpenSanctions the EU sanctions list on /sanzioni-eu. We list them here instead of counting them as primary sources.
- TED, Tenders Electronic Daily →
Daily · running, impact on published data not demonstrated · data through 6 March 2026
- EU Sanctions Map →
Daily · running, impact on published data not demonstrated · last successful sync 2 September 2026
- EUR-Lex →
Daily · running, impact on published data not demonstrated · data through 31 March 2023
- dati.gov.it, catalogo nazionale AGID →
Daily · running, impact on published data not demonstrated · last successful sync 2 September 2026
- data.europa.eu, portale dati aperti UE →
Daily · running, impact on published data not demonstrated · last successful sync 2 September 2026
- Eurostat →
Weekly · running, impact on published data not demonstrated · last successful sync 31 August 2026
- RNDT, Repertorio Nazionale dei Dati Territoriali →
Weekly · running, impact on published data not demonstrated · last successful sync 31 August 2026
- INSPIRE Geoportal →
Weekly · running, impact on published data not demonstrated · data through 29 June 2026
- EEA, Agenzia europea dell’ambiente →
Weekly · running, impact on published data not demonstrated · last successful sync 31 August 2026
- Ministero della Giustizia →
Weekly · running, impact on published data not demonstrated · last successful sync 31 August 2026
- OpenSanctions →
Weekly · running, impact on published data not demonstrated · last successful sync 31 August 2026
- Registro Imprese, InfoCamere →
Weekly · running, impact on published data not demonstrated · last successful sync 31 August 2026
- IndicePA →
Manual import, no schedule · running, impact on published data not demonstrated · last successful sync 9 June 2026
Planned, and never executed (9)
They produce nothing yet. Knowing what is missing is part of the product, so we declare them instead of leaving them silently absent.
- OpenBDAP (MEF) →
No scheduled update · never run successfully
- SIOPE / Soldipubblici (Banca d’Italia e RGS) →
No scheduled update · planned, no ingestion code yet
- ANAC OCDS →
No scheduled update · planned, no ingestion code yet
- OpenCoesione →
No scheduled update · planned, no ingestion code yet · last successful sync 25 April 2026
- MEF, Portale Partecipazioni →
No scheduled update · planned, no ingestion code yet
- Camera dei Deputati, XIX legislatura →
No scheduled update · planned, no ingestion code yet
- Amministrazione Trasparente, dichiarazioni patrimoniali →
No scheduled update · planned, no ingestion code yet
- EU High Value Datasets →
No scheduled update · planned, no ingestion code yet
- GLEIF, Legal Entity Identifier →
No scheduled update · planned, no ingestion code yet
Municipal transparency score
Each municipality's score (0-100) is the sum of three dimensions, computed by the recalc_punteggi_native() function in our database. The weights are 40 + 30 + 30 = 100. This text describes the code that runs: if the two ever diverge, it is this text that is wrong.
- Public contracts (up to 40 points): How much, and how well, the municipality appears in the ANAC public contracts dataset.
- up to 10 of the 40 points: Presence of contracts in the ANAC dataset: 2 points with at least one contract, then one point every five contracts, up to the cap.
- up to 15 of the 40 points: Share of open, restricted, competitive or negotiated procedures over the municipality total, in direct proportion.
- up to 10 of the 40 points: Share of contracts carrying a CIG of at least 8 characters, in direct proportion.
- up to 5 of the 40 points: Average contract amount within a plausible range: the full cap between 100 euro and 10 million, 2 points above 10 million, 1 point below 100 euro, zero when no amount is recorded.
- Basic administrative data (up to 30 points): Presence of mayor, official website, population and ISTAT code in the municipality public registry.
- up to 20 of the 30 points: 5 points for each of the four fields present: mayor, official website, population, ISTAT code.
- up to 3 of the 30 points: Extra bonus when the official website is present: in the calculation the website weighs more than the other three fields.
- up to 7 of the 30 points: Completeness bonus, proportional to how many of the four fields are present.
- Statistical signals (30 points, subtracted): Starts at the full weight of this dimension and subtracts points for every signal detected on the municipality contracts, with a floor of zero.
- -10 points: This value is subtracted for every signal of severity 4 or 5.
- -5 points: This value is subtracted for every signal of severity 3.
- -2 points: This value is subtracted for every signal of severity 1 or 2.
The score does NOT measure PNRR projects, supplier concentration or final budget reports: those dimensions are published separately and do not enter the calculation.
A low score may be caused by data missing at the national sources rather than by the municipality withholding it: 62 active municipalities have no mayor in the DAIT registry and lose points for that.
The signals component hits zero quickly: three high severity signals are enough to bring it to zero, and further signals no longer lower the score.
It is not an ethical judgment and it does not assess the mayor: it measures how much legally mandated documentation is actually exposed in the public databases. The score recalculation is scheduled nightly, and the date of the last actual run is shown next to each municipality score. The underlying ANAC data only changes when ANAC publishes a new month.
Redo the arithmetic yourself
Anyone should be able to rebuild their own municipality's number from this page. Check of 2 September 2026 on three municipalities:
- Narni: 28 + 30 + 0 = 58
- Roma: 29 + 30 + 0 = 59
- Milano: 28 + 30 + 0 = 58
The three totals match the score stored in the database. If the arithmetic does not add up for your municipality, write to us: the error is ours, not yours.
What we cover, and what we do not
We publish 7,894 pages, one for every Italian municipality that exists today. Our archive also keeps 19 municipalities that were merged or abolished, 7,913 records in total, because the contracts and projects registered under their names still exist in the public databases.
The archive holds 4,630,690 public contracts covering 1 January 2020 to 31 December 2025. ANAC has not yet released the 2026 CIG datasets, so beyond that date we have nothing, for any municipality.
13.7% of contracts are not attributed to any municipality and 53.5% have no supplier linked: the sum of the municipal pages does not match the national total, and any view of who gets paid covers less than half of the contracts.
516 contracts are flagged as implausible amounts, values far outside any credible scale and almost always typing errors at the source. We keep and flag them rather than deleting them, because the original record is the one the public body published. To state it in full: today they are not yet excluded from the euro totals published on the site, and until they are, any total in euro should be read with that reservation.
For the PNRR we publish two separate views: 24.64 billion euro in projects the municipality runs as implementing body, and 92.26 billion in projects located within its territory, both from the official ReGiS extraction of 13 June 2026.
Two different views, never to be added up: "managed" counts projects where the municipality is the implementing body, "located" counts projects of any public body sitting on its territory. Adding them would count the same works twice.
Municipal final accounts appear nowhere on the site: we have never imported them and we promise no date. SIOPE cash payments are not integrated yet.
Mayor's salary
Calculated by law per Italian Budget Law 2022 (L. 234/2021):
- Monthly base by population tier (9 brackets: from €2,760 up to 3,000 inhabitants to €13,800 above 500,000 inhabitants)
- +25% for regional capital (codified list: 21 cities)
- +12% for provincial capital (codified list: ~110 cities)
Stated limitation: the value shown is "full-time". If the mayor is an employee who maintains their job (e.g. a civil servant on leave), the indemnity is halved to 50% by law. We do not have this individual information, so we always show the maximum possible value for that municipality.
Statistical signals on contracts
We look for departures from the expected distribution in contracts registered with ANAC. There are four types, and only these four:
- High share of direct awards: direct award is a procedure the law allows below set thresholds. A high share means less competition, not an offence. Rule: more than 60% of the municipality's contracts awarded directly, with at least 5 direct awards.
- Contracts bunched on the same date: several contracts of the same municipality carry the same date. It can come from procurement planned in lots, from a year-end closing, or from a bulk data upload at the source. It is a point to check, not a finding. Rule: at least 5 contracts of the same municipality on the same contract date.
- Recurring amounts, or amounts near a threshold: the municipality has several contracts priced just below a tender threshold, or several contracts with the exact same amount. It can come from repeated supplies at list price, from a lawful split into lots, or from a loading error at the source. Rule: at least 3 contracts between 95% and 100% of a tender threshold (40,000, 150,000, 215,000, 750,000, 1,000,000 or 5,382,000 euro), or at least 4 contracts with the same exact amount above 1,000 euro.
- Concentration on a single supplier: one supplier takes a high share of the municipality's contracts. In small local markets this can be normal. The share is computed only on contracts that carry a supplier, and 53.5% of the ANAC archive carries none, so the percentage does not refer to all of the municipality's contracts.
What we do NOT detect, despite having claimed otherwise in the past: late publication of budget reports, and stalled PNRR projects. No procedure computes either, and we do not hold municipal budget data at all.
The archive holds 206,306 signals, 35,401 of them at high severity. Last detection run: 2 September 2026. The count is large because every contract that departs from the distribution produces a row: it measures the size of the dataset, not the gravity of the situation.
Important note: these are statistical departures, not confirmed irregularities. They may have legitimate explanations. We publish them as leads for investigation, not as accusations, and we do not name private companies with percentages computed on a sample.
Update frequency
The cadence below is the one at which the source releases new data, not the one at which our job runs. The two are not the same: the ANAC sync starts successfully every night while coverage stays frozen at 31 December 2025. The real status sits next to each source.
Daily
- ANBSC, beni sequestrati e confiscati · active
- TED, Tenders Electronic Daily · running, impact on published data not demonstrated
- EU Sanctions Map · running, impact on published data not demonstrated
- EUR-Lex · running, impact on published data not demonstrated
- dati.gov.it, catalogo nazionale AGID · running, impact on published data not demonstrated
- data.europa.eu, portale dati aperti UE · running, impact on published data not demonstrated
Weekly
- ENTSO-E Transparency Platform · stalled
- Eurostat · running, impact on published data not demonstrated
- RNDT, Repertorio Nazionale dei Dati Territoriali · running, impact on published data not demonstrated
- INSPIRE Geoportal · running, impact on published data not demonstrated
- EEA, Agenzia europea dell’ambiente · running, impact on published data not demonstrated
- Ministero della Giustizia · running, impact on published data not demonstrated
- OpenSanctions · running, impact on published data not demonstrated
- Registro Imprese, InfoCamere · running, impact on published data not demonstrated
Monthly
- ANAC · active
- DAIT, Anagrafe degli Amministratori Locali · active
Manual import, no schedule
- Italia Domani (ReGiS) · active
- ISTAT, codici e anagrafica dei comuni · active
- IndicePA · running, impact on published data not demonstrated
No scheduled update
- OpenAQ · stalled
- OpenBDAP (MEF) · never run successfully
- SIOPE / Soldipubblici (Banca d’Italia e RGS) · planned, no ingestion code yet
- ANAC OCDS · planned, no ingestion code yet
- OpenCoesione · planned, no ingestion code yet
- MEF, Portale Partecipazioni · planned, no ingestion code yet
- Camera dei Deputati, XIX legislatura · planned, no ingestion code yet
- Amministrazione Trasparente, dichiarazioni patrimoniali · planned, no ingestion code yet
- EU High Value Datasets · planned, no ingestion code yet
- GLEIF, Legal Entity Identifier · planned, no ingestion code yet
Scores and statistical signals are computed by us, not downloaded: they are recalculated every night from the data present at that moment.
GDPR & named individuals
Italian D.Lgs. 33/2013 mandates publication of public officials' salaries (mayors, council members). Trasparenza.ai shows:
- Mayor's full name (where publicly disclosed by Min. Interno)
- Year of birth (NOT full birth date, to limit re-identification)
- Calculated salary range (legal formula, not declared amount)
- Term start date
We do NOT show: personal addresses, phone numbers, tax codes, family members. If you believe data should be removed (right to be forgotten under EU GDPR), contact contato@trasparenza.ai.
The source code is not public: the repository is private, and while it stays private we do not call ourselves open source. The data is open, the code is not. The published data is CC-BY 4.0. Methodology questions: contato@trasparenza.ai · WhatsApp: +55 64 99237-5458.