←

PDE · Appalti pubblici

Gli appalti pubblici italiani, in linguaggio naturale

Dall’inizio del 2026 la piattaforma ANAC ha pubblicato oltre 760.000 avvisi di gara. Trovare quelli che interessano richiede di conoscere codici, formule e limiti del servizio. Qui un assistente AI, collegato direttamente alla fonte ufficiale, risponde a domande in italiano e indica da dove viene ogni dato.

Cosa vedi qui. Una demo su una sola fonte, con un campione di avvisi del 2026 e le risposte esattamente come sono state ottenute: comandi, risultati e limiti. L’orchestrazione di più fonti insieme è l’obiettivo del progetto PDE e non è ancora in questa pagina. Dati e script sono nel repository e si possono rifare da zero.

Il problema

I dati sugli appalti sono pubblici per legge, ma chi li cerca deve già sapere come funzionano. È un ostacolo per chi ne ha più bisogno: le piccole imprese che cercano gare a cui partecipare, i giornalisti e i ricercatori che verificano come si spende il denaro pubblico, gli uffici studi, le stesse amministrazioni.

Cosa fa il connettore

Il connettore (anac-pl-pp-cli, con server MCP, open source) interroga l’API pubblica di ANAC, di sola lettura e senza chiavi. L’assistente AI lo usa per tradurre una domanda in italiano in chiamate al servizio ufficiale e per rendere esplicito ciò che il servizio non dice. Quattro esempi, con profili diversi, risultati reali e limiti dichiarati.

  • bid manager
  • ricerca per frase

1 · «Quali bandi sull’intelligenza artificiale sono ancora aperti?»

  • due diligence
  • controllo senza chiamare il servizio

2 · «Questo CIG è scritto bene?»

  • giornalismo e cittadinanza
  • spiegare un codice

3 · «Che cos’è un avviso di tipo AD3?»

  • ricerca e analisi di mercato
  • due reti di ricerca

4 · «Chi compra comunicazione scientifica in Italia, a quanto e chi vince?»

Il caso più completo, perché il tema non ha un codice: lo trovi qui sotto, passo per passo.

Un esempio in profondità

«Chi compra comunicazione scientifica in Italia, a quanto e chi vince?»

È la domanda che si pone chi fa divulgazione prima di candidarsi a un incarico. Non ha un codice CPV, quindi l’assistente usa due reti e poi un filtro.

Come arriva alla risposta

  1. Sceglie i codici. Cerca nel vocabolario CPV i codici vicini al tema (pubbliche relazioni, pubblicità e marketing, eventi, produzione video, formazione, ricerca): 23 codici.
  2. Rete 1, per codice. Scarica gli avvisi del 2026 che portano uno di quei codici.
  3. Rete 2, per frase esatta. Cerca cinque frasi («comunicazione scientifica», «divulgazione scientifica», «ufficio stampa», «comunicazione istituzionale», «formazione in comunicazione») su bandi, esiti e affidamenti diretti. Trova gli avvisi catalogati sotto un altro codice.
  4. Filtra per tema, con una regola dichiarata. Tiene gli avvisi il cui oggetto parla di comunicazione (comunicazione, divulgazione, ufficio stampa, pubbliche relazioni, social media, campagne, giornalisti…) e ha un riferimento scientifico (scientifico, scienza, ricerca, ricercatori); esclude gli appalti di lavori.
  5. Aggancia importi e aggiudicatari con il comando che estrae una riga per lotto.
  6. Aggrega per committente, importo e aggiudicatario.

I comandi, esattamente come sono stati lanciati

anac-pl-pp-cli cpv search "relazioni pubbliche"        # esempio di scelta dei codici

# Rete 1: 23 codici CPV, avvisi dal 01/01/2026
anac-pl-pp-cli cerca-avanzata --cpv 79416000,79416100,79416200,79340000,79341000,79341100,79341200,79341400,79342000,79952000,79952100,79950000,92111000,92111100,92111200,92111260,92400000,80530000,79300000,79320000,73110000,73210000,79411000 \
  --from 01/01/2026 --size 100 --pages 40 --agent

# Rete 2: ogni frase, su bandi, esiti e affidamenti diretti
anac-pl-pp-cli cerca --query "divulgazione scientifica" --mode esatta -t affidamenti-diretti \
  --published-from 01/01/2026 --size 100 --pages 5 --agent

# Importi e aggiudicatari per lotto
anac-pl-pp-cli affidamenti -q "divulgazione scientifica" --mode esatta -t affidamenti-diretti \
  --published-from 01/01/2026 --size 100 --pages 6 --agent

I file grezzi sono in data/raw; lo script che li trasforma nei numeri di questa pagina è scripts/build_dataset.py.

Il risultato

Le due reti a confronto

Degli avvisi che rispondono alla domanda, quanti ne ha trovati ciascuna rete:

La rete per codice trova pochissimo perché gli affidamenti diretti piccoli sono catalogati con codici CPV molto vari, o senza codice. La frase esatta li trova perché legge l’oggetto dell’avviso.

Alcuni avvisi che il solo filtro per codice non vedeva

OggettoCommittenteSchedaImporto

Chi compra

Enti che hanno speso di più in questo campione (somma degli importi aggiudicati):

Chi vince

Aggiudicatari con gli importi più alti:

Tutti gli avvisi del campione

DataOggettoCommittenteAggiudicatarioImportoRete

Limiti noti

  • È un campione: avvisi del 2026, con un numero limitato di pagine per ricerca. Non va letto come il totale della spesa italiana in comunicazione scientifica.
  • La regola del tema è un’euristica sul testo dell’oggetto: tiene anche avvisi marginali (per esempio la fornitura di tovaglie per un evento di divulgazione) e può perderne altri. È scritta qui sopra perché si possa discutere.
  • La rete per codice usa solo i 23 codici scelti; la rete per frase usa solo cinque frasi. Altre formulazioni darebbero altri avvisi.
  • Con il testo libero il servizio ordina per rilevanza, non per data, e il numero di risultati dichiarato è una stima.
  • Gli importi vengono dal comando che estrae una riga per lotto: per gli avvisi trovati solo dalla rete per codice possono mancare.
  • ANAC può oscurare un avviso che non supera i suoi controlli, e un avviso oscurato può non comparire in ricerca. Nel campione non risulta nessun avviso oscurato.
  • Non ci sono bandi ancora aperti nel campione.
  • L’AI può sbagliare: per le cifre che contano si verifica l’avviso sul portale ANAC, indicato dall’identificativo.

Il passo successivo

Questa demo risponde a domande su una sola fonte. Il valore di PDE sta nel combinare fonti diverse con lo stesso metodo: per esempio, la spesa in appalti di una provincia per settore, rapportata alla popolazione residente, unirebbe questi dati al registro territoriale ISTAT (SITUAS) e alle statistiche demografiche SDMX. L’orchestrazione tra fonti è l’obiettivo del progetto in corso e non è ancora in queste pagine.

Provalo

La CLI è open source, senza chiavi. Installazione e aggiornamento nel repository. Dopo l’installazione:

anac-pl-pp-cli cerca --query "divulgazione scientifica" --mode esatta -t affidamenti-diretti --published-from 01/01/2026 --size 20 --agent

Per usarla da un assistente AI con il protocollo MCP, il repository include il server anac-pl-pp-mcp.