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, editorial choices, and limitations.
Primary sources
Trasparenza.ai relies exclusively on 8 Italian and European public sources. No scraping of private sites, no paywalled data, no proprietary sources.
- ANAC →
Public procurement contracts (4.6M records since 2008)
- OpenBDAP (MEF) →
Budget reports of all municipalities (Italian Treasury)
- Italia Domani →
PNRR projects (335,926 records, EU recovery fund)
- IndicePA →
Public entity registry (PEC emails, contacts)
- ENTSO-E →
Electricity mix, day-ahead prices, cross-border flows
- ISTAT →
Municipal population, demographics
- Eurostat →
EU regional statistics (NUTS2)
- TED (EU) →
Public procurement above EU threshold
Municipal transparency score
Each municipality's score (0-100) is calculated across 5 dimensions:
- ANAC coverage (30 points): % of municipal contracts correctly registered with CIG (a unique identifier required by law).
- PNRR coverage (20 points): % of PNRR (EU recovery fund) projects in the territory already allocated and spent.
- Supplier diversification (20 points): no single supplier should exceed 60% of contract amounts.
- Budget availability (15 points): final accounts published on OpenBDAP within legal deadlines.
- Statistical anomalies (15 points, deducted): suspicious patterns flagged by algorithms.
The score updates with each sync (weekly). It's not an ethical judgment: it measures how much transparency has actually been exposed, based on legal obligations.
Mayor's salary
Calculated by law per Italian Law-Decree 17/2022 art. 9:
- Monthly base by population tier (9 brackets: from €2,760 up to 3,000 inhabitants → €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 don't have this individual information, so we always show the maximum possible value for that municipality.
Anomaly detection
Statistical algorithms search for deviations from expected patterns:
- Artificial fragmentation: many contracts in the same municipality just below mandatory tender thresholds (€40k, €150k, €215k, €750k, €1M, €5.38M)
- Supplier concentration: one supplier wins > 60% of a municipality's contracts (with at least 50 contracts for statistical significance)
- Direct entrustment abuse: > 60% of contracts assigned via direct award (`affidamento diretto`) instead of public tender
- Suspicious timing: 5+ contracts published on the same day
- Identical amounts: 4+ contracts with identical amounts (possible fragmentation)
Important note: anomalies are statistical deviations, not confirmed irregularities. They may have legitimate explanations (specific local economy, unique territorial expertise, etc.). We publish them as leads for investigation, not as accusations.
Update frequency
- Daily (UTC): TED, EU sanctions, EUR-Lex, dati.gov.it, Italia Domani
- Weekly (Monday UTC): ENTSO-E, Eurostat, business registry, RNDT, INSPIRE, EEA, justice ministry
- Monthly (1st of month): ANAC contracts, OpenBDAP budgets
- Algorithmically generated (post-sync): civic stories, anomalies, transparency scores
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.
Open source code on GitHub. Methodology questions: contato@trasparenza.ai · WhatsApp: +55 64 99237-5458.