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.
- Codici da conoscere. I settori sono descritti da un vocabolario europeo di 9.454 codici (CPV) e il tipo di avviso da 150 codici di scheda. Un tema come «comunicazione scientifica» non ha un codice.
- Un servizio con regole proprie. Le parole di una ricerca sono messe in alternativa tra loro e i risultati sono ordinati per rilevanza e non per data; le pagine si scorrono con un gettone, non con un numero; un CIG scritto male non dà errore, restituisce avvisi che non c’entrano.
- Un avviso può non comparire. ANAC può oscurare quelli che non superano i suoi controlli.
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.
1 · «Quali bandi sull’intelligenza artificiale sono ancora aperti?»
2 · «Questo CIG è scritto bene?»
3 · «Che cos’è un avviso di tipo AD3?»
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à
È 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
- Sceglie i codici. Cerca nel vocabolario CPV i codici vicini al tema (pubbliche relazioni, pubblicità e marketing, eventi, produzione video, formazione, ricerca): 23 codici.
- Rete 1, per codice. Scarica gli avvisi del 2026 che portano uno di quei codici.
- 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.
- 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.
- Aggancia importi e aggiudicatari con il comando che estrae una riga per lotto.
- 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
| Oggetto | Committente | Scheda | Importo |
|---|
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
| Data | Oggetto | Committente | Aggiudicatario | Importo | Rete |
|---|
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.