How we build the data.
Trasparenza.ai aggregates public data and computes derived indicators. Here we describe sources, formulas, update schedules and limitations. Reproducing an indicator also requires the input data and rules from the same run; citing the source alone is not sufficient.
Evidence dates: archive figures measured on 2026-09-02; baseline review of the editorial source catalogue on 2026-09-02, with dated additions in the notes; formula read on 2026-09-02. These dates do not describe the temporal coverage of the data.
Sources, one by one
Trasparenza.ai aggregates public data through institutional portals, aggregation services and community mirrors. The editorial catalogue describes 29 sources and connections, including entries that need verification or have not been activated. An active classification does not establish complete or current data; an entry that needs verification may still supply a published page. Available logs, recorded coverage, counts and limitations are listed in Italian on Source status. Catalogue entries and logs may need reconciliation with the acquired tables and files.
Entries classified as active (4)
This classification describes the evidence recorded in the editorial catalogue. It does not establish complete coverage or that the data is current.
- ANAC →
Monthly · classified as active in the editorial catalogue · recorded archive coverage through 2025-12-31 · last import recorded as successful: 2026-09-02
- Italia Domani (ReGiS) →
Cadence not verified in the catalogue · classified as active in the editorial catalogue · recorded archive coverage through 2026-06-13 · last import recorded as successful: 2026-10-05
- ANBSC, beni sequestrati e confiscati →
Cadence not verified in the catalogue · classified as active in the editorial catalogue · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-10-15
- ISTAT, codici e anagrafica dei comuni →
Manual import, no schedule · classified as active in the editorial catalogue · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-09-02
Archive acquisition needs verification (1)
This classification concerns our acquisition of data. It does not establish that the official publisher stopped releasing data.
- OpenAQ →
No scheduled update · archive acquisition needs verification · recorded archive coverage through 2026-06-04 · successful import date not documented in the catalogue
Coverage and use of the data need verification (15)
These entries may supply published data. A successful log alone does not establish coverage or explain which records a page uses. The catalogue classification must be read together with the evidence for each source.
- DAIT, Anagrafe degli Amministratori Locali →
Cadence not verified in the catalogue · coverage and use of the data need verification · temporal coverage not verified in the catalogue · successful import date not documented in the catalogue
- ENTSO-E Transparency Platform →
Weekly · coverage and use of the data need verification · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-10-05
- TED, Tenders Electronic Daily →
Daily · coverage and use of the data need verification · recorded archive coverage through 2026-03-06 · last import recorded as successful: 2026-09-02
- EU Sanctions Map →
Daily · coverage and use of the data need verification · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-09-02
- EUR-Lex →
Daily · coverage and use of the data need verification · recorded archive coverage through 2023-03-31 · last import recorded as successful: 2026-09-02
- dati.gov.it, catalogo nazionale AGID →
Daily · coverage and use of the data need verification · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-09-02
- data.europa.eu, portale dati aperti UE →
Daily · coverage and use of the data need verification · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-09-02
- Eurostat →
Weekly · coverage and use of the data need verification · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-08-31
- RNDT, Repertorio Nazionale dei Dati Territoriali →
Weekly · coverage and use of the data need verification · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-08-31
- INSPIRE Geoportal →
Weekly · coverage and use of the data need verification · recorded archive coverage through 2026-06-29 · last import recorded as successful: 2026-08-31
- EEA, Agenzia europea dell’ambiente →
Weekly · coverage and use of the data need verification · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-08-31
- Ministero della Giustizia →
Weekly · coverage and use of the data need verification · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-08-31
- OpenSanctions →
Weekly · coverage and use of the data need verification · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-08-31
- Registro Imprese, InfoCamere →
Weekly · coverage and use of the data need verification · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-08-31
- IndicePA →
Manual import, no schedule · coverage and use of the data need verification · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-06-09
Planned or without a documented successful run (9)
These entries are listed as planned or lack a documented successful run in the catalogue. Missing logs do not establish that no records exist.
- OpenBDAP (MEF) →
No scheduled update · no successful run documented in the catalogue · temporal coverage not verified in the catalogue · successful import date not documented in the catalogue
- SIOPE / Soldipubblici (Banca d’Italia e RGS) →
No scheduled update · listed as planned in the editorial catalogue · temporal coverage not verified in the catalogue · successful import date not documented in the catalogue
- ANAC OCDS →
No scheduled update · listed as planned in the editorial catalogue · temporal coverage not verified in the catalogue · successful import date not documented in the catalogue
- OpenCoesione →
No scheduled update · listed as planned in the editorial catalogue · temporal coverage not verified in the catalogue · last import recorded as successful: 2026-04-25
- MEF, Portale Partecipazioni →
No scheduled update · listed as planned in the editorial catalogue · temporal coverage not verified in the catalogue · successful import date not documented in the catalogue
- Camera dei Deputati, XIX legislatura →
No scheduled update · listed as planned in the editorial catalogue · temporal coverage not verified in the catalogue · successful import date not documented in the catalogue
- Amministrazione Trasparente, dichiarazioni patrimoniali →
No scheduled update · listed as planned in the editorial catalogue · temporal coverage not verified in the catalogue · successful import date not documented in the catalogue
- EU High Value Datasets →
No scheduled update · listed as planned in the editorial catalogue · temporal coverage not verified in the catalogue · successful import date not documented in the catalogue
- GLEIF, Legal Entity Identifier →
No scheduled update · listed as planned in the editorial catalogue · temporal coverage not verified in the catalogue · successful import date not documented in the catalogue
Experimental municipal archive index
The score for a municipal page in the catalogue (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): Presence and characteristics of ANAC contracts linked to the municipality record.
- 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 include PNRR projects or final budget reports. Supplier concentration can affect it indirectly through automatic signals, without a separate dimension.
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.
The formula does not normalize for municipality size, period or data coverage. Missing signals may reflect insufficient data: the current calculation still awards the full signals component.
This is an experimental index of the available archive: it combines linked contract characteristics, registry completeness and automatic signals. It does not measure compliance with transparency duties or administrative quality, and it is not validated for comparisons of municipal performance. 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.
Historical component example
Components recorded in the check of 2026-09-02 for three municipalities:
- Narni: 28 + 30 + 0 = 58
- Roma: 29 + 30 + 0 = 59
- Milano: 28 + 30 + 0 = 58
These totals describe that historical check, not the current calculation. Reproducing a result requires the components and input data from the same run; this page does not yet provide a reproducible historical package. Please report inconsistencies in the published data.
What we cover, and what we do not
We publish 7,894 municipal pages considered active in the catalogue. This count does not guarantee complete coverage of current municipalities: the catalogue coverage note documents known differences and official sources (in Italian). Our archive also keeps 19 pages for 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 also publishes 2026 CIG data, which our archive has not yet integrated. A missing search result does not prove that a contract is absent from the official source.
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 attributed to the municipality as implementing body by the link stored in our archive, and 92.26 billion in projects located within its territory. The archive is acquired through the open-data-lake community mirror, with a declared ReGiS extraction date of 2026-06-13. These views do not verify exact equivalence with the official files or the implementing body's tax identity.
These views must not be added together: the implementing-body view uses the municipal link stored in the archive, while the territorial view uses project locations, regardless of the implementing body. The same project may appear in both views.
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 apply fixed numerical rules to ANAC contracts. We do not estimate an expected distribution of comparable contracts or the probability of an offence. There are four signal types:
- High share of direct awards: the rule counts procedure text recorded as direct award or procurement in economy. It does not measure the number of bids or verify the legal regime of each contract. Rule: more than 60% of contracts linked to the municipal record, with at least 5 matching contracts and at least 3 contracts in total.
- 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 numerical references: the rule uses fixed values without selecting contract category, date or legal regime. These values do not establish the applicable legal threshold. Repeated amounts may reflect list prices, lots or source errors. Rule: at least 3 contracts from 95% inclusive to 100% exclusive of a fixed reference (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, across the entire available period.
- 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. Each row represents a group matching a rule, not necessarily one contract. The count depends on data volume, coverage and period. Severity is a conventional class of the rule, not a probability of an offence.
Important note: these are matches to fixed numerical rules, 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.
Cadences recorded in the catalogue
The cadences and classifications below are recorded in the editorial catalogue, as of their respective evidence dates. They include declared frequencies and acquisition methods that have not always been verified separately. A job schedule does not establish execution, success or completeness of an import. See Source status for available evidence and limitations.
Daily
- TED, Tenders Electronic Daily · coverage and use of the data need verification
- EU Sanctions Map · coverage and use of the data need verification
- EUR-Lex · coverage and use of the data need verification
- dati.gov.it, catalogo nazionale AGID · coverage and use of the data need verification
- data.europa.eu, portale dati aperti UE · coverage and use of the data need verification
Weekly
- ENTSO-E Transparency Platform · coverage and use of the data need verification
- Eurostat · coverage and use of the data need verification
- RNDT, Repertorio Nazionale dei Dati Territoriali · coverage and use of the data need verification
- INSPIRE Geoportal · coverage and use of the data need verification
- EEA, Agenzia europea dell’ambiente · coverage and use of the data need verification
- Ministero della Giustizia · coverage and use of the data need verification
- OpenSanctions · coverage and use of the data need verification
- Registro Imprese, InfoCamere · coverage and use of the data need verification
Monthly
- ANAC · classified as active in the editorial catalogue
Manual import, no schedule
- ISTAT, codici e anagrafica dei comuni · classified as active in the editorial catalogue
- IndicePA · coverage and use of the data need verification
Cadence not verified in the catalogue
- Italia Domani (ReGiS) · classified as active in the editorial catalogue
- ANBSC, beni sequestrati e confiscati · classified as active in the editorial catalogue
- DAIT, Anagrafe degli Amministratori Locali · coverage and use of the data need verification
No scheduled update
- OpenAQ · archive acquisition needs verification
- OpenBDAP (MEF) · no successful run documented in the catalogue
- SIOPE / Soldipubblici (Banca d’Italia e RGS) · listed as planned in the editorial catalogue
- ANAC OCDS · listed as planned in the editorial catalogue
- OpenCoesione · listed as planned in the editorial catalogue
- MEF, Portale Partecipazioni · listed as planned in the editorial catalogue
- Camera dei Deputati, XIX legislatura · listed as planned in the editorial catalogue
- Amministrazione Trasparente, dichiarazioni patrimoniali · listed as planned in the editorial catalogue
- EU High Value Datasets · listed as planned in the editorial catalogue
- GLEIF, Legal Entity Identifier · listed as planned in the editorial catalogue
Scores and signals are computed from the data in the archive at the time of each successful run. Nightly scheduling does not establish that a run succeeded or that its input data is recent.
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.