[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-95219":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":13,"stars7d":13,"stars30d":13,"stars90d":16,"forks30d":16,"starsTrendScore":17,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":24,"readmeContent":25,"aiSummary":10,"trendingCount":16,"starSnapshotCount":16,"syncStatus":14,"lastSyncTime":26,"discoverSource":27},95219,"DoveVannoINostriSoldi","Italian-Builders-Org\u002FDoveVannoINostriSoldi","Italian-Builders-Org","Raccogliamo e analizziamo i dati sulla spesa pubblica italiana per individuare, grazie all’AI, dove è possibile migliorare l’efficienza e l’utilizzo delle risorse pubbliche.","https:\u002F\u002Fwww.dovevannoinostrisoldi.com\u002F",null,"TypeScript",116,11,2,6,0,33,69.84,"MIT License",false,"main",true,[],"2026-08-24 04:01:23","# DoveVannoINostriSoldi\n\nDoveVannoINostriSoldi è un progetto civico open source per capire come vengono usati i soldi pubblici italiani.\n\nRiunisce dati ufficiali che oggi si trovano in portali diversi. Ogni numero mostra la fonte, il periodo a cui si riferisce e i limiti da conoscere. Un valore insolito può indicare dove controllare meglio, ma non dimostra da solo uno spreco o un illecito.\n\nL'AI serve a confrontare dati omogenei, trovare scostamenti e ordinare i casi da verificare. Non decide se esiste uno spreco e non attribuisce responsabilità.\n\n## Cosa puoi consultare\n\n| Sezione | Che cosa mostra | Fonte |\n| --- | --- | --- |\n| Home | Pagamenti dei Comuni, mappa regionale, andamento mensile e dati OpenCoesione | SIOPE, IPA, OpenCoesione |\n| Soldi | Pagamenti effettuati dai Comuni: voci di uscita e flusso mese per mese, distinti dalle tasse dei residenti | SIOPE |\n| Invalidità civile | Spesa nazionale, prestazioni vigenti e nuove pensioni per regione | INPS |\n| Sanità | Conto Economico consuntivo 2024 degli enti SSN: personale, servizi e voci di prestazioni di lavoro | OpenBDAP |\n| Territori | Pagamenti comunali, conti territoriali e redditi\u002FIRPEF dichiarati, con perimetri separati | SIOPE, IPA, CPT, MEF |\n| Fondi e progetti | Costo previsto e pagamenti OpenCoesione; traccia PNRR per asili con CUP, gare e aggiudicatari | OpenCoesione, Italia Domani |\n| Enti e società | Ministeri, enti pubblici, uffici e contatti; per i Comuni riconosciuti, pagamenti, dati fiscali e approfondimenti disponibili | IPA, SIOPE, MEF, OpenCivitas, Italia Domani |\n| Spese dello Stato | Pagamenti per funzione, amministrazione e tipo di spesa | RGS, OpenBDAP |\n| Fabbisogni comunali | Spesa storica, spesa standard e servizi dei Comuni nel 2022 | OpenCivitas |\n| Partecipazioni | Società e organizzazioni partecipate dichiarate dalle amministrazioni | MEF |\n| Parlamento | Consuntivo e bilancio della Camera | Camera dei deputati |\n| Controlli | Dati che meritano verifiche più approfondite, con spiegazioni e fonti | ANAC, MEF, Corte dei conti e altre fonti ufficiali |\n| Fonti | Stato dei collegamenti e date di aggiornamento | Registro interno delle fonti |\n\nPer ANAC è disponibile uno snapshot verificato sui dodici file mensili CIG 2025; non è ancora una ricerca live per singolo CIG o fornitore. Per il PNRR è operativo il perimetro asili e prima infanzia di Italia Domani: non include i pagamenti ReGiS e non viene esteso artificialmente al resto del Piano. Il sito dichiara questi limiti e non usa numeri dimostrativi per riempire gli spazi mancanti.\n\nIl backend espone inoltre:\n\n- `GET \u002Fapi\u002Fenti\u002Fc_a783`, con la scheda IPA invariata e il campo additivo `municipalityProfile` quando codice fiscale, Codice IPA e codici territoriali permettono collegamenti esatti; copertura, regole e limiti sono in [docs\u002FMUNICIPALITY_PROFILE.md](docs\u002FMUNICIPALITY_PROFILE.md);\n- `GET \u002Fapi\u002Fincarichi`, con statistiche nazionali ufficiali di Consulenti Pubblici dal 2023;\n- `GET \u002Fapi\u002Fspese\u002Fcomuni\u002Ffabbisogni?anno=2022`, con il confronto OpenCivitas per 6.557 Comuni delle Regioni a statuto ordinario;\n- `GET \u002Fapi\u002Fspese\u002Fstato?anno=2024`, con il consuntivo annuale OpenBDAP quando disponibile; in sua assenza, l'ultimo rilascio mensile dell'anno;\n- `GET \u002Fapi\u002Fspese\u002Fstato\u002Famministrazioni\u002F2?anno=2024`, con missioni e categorie di una singola amministrazione;\n- `GET \u002Fapi\u002Fopere?cup=I39B05000060005`, con stato, date, costi e finanziamenti di un'opera pubblica OpenBDAP;\n- `GET \u002Fapi\u002Fpnrr\u002Fasili?region=Lazio&limit=20`, con progetti Italia Domani, localizzazioni, finanziamenti, gare e aggiudicatari; la ricerca esatta usa `cup`;\n- `GET \u002Fapi\u002Fparlamento`, con i dati strutturati verificati della Camera; il monitor segue anche i nuovi documenti del Senato senza pubblicare valori non ancora estraibili in modo affidabile;\n- `GET \u002Fapi\u002Fcontrolli`, con indicatori classificati, scenari separati e regole per il loro uso.\n- `GET \u002Fapi\u002Fcontrolli\u002Fspesa-comuni?anno=2022`, con screening derivato OpenCivitas paginato per la differenza di spesa per abitante; formula e limiti sono in [docs\u002FCONTROLLI_SPESE_COMUNI.md](docs\u002FCONTROLLI_SPESE_COMUNI.md).\n- `GET \u002Fapi\u002Fspese\u002Finvalidita?anno=2024&regione=Calabria`, con spesa nazionale e nuove pensioni di invalidità civile per la granularità pubblica verificata.\n- `GET \u002Fapi\u002Fspese\u002Fsanita?anno=2024&regione=Calabria`, con aggregati del Conto Economico consuntivo OpenBDAP SSN e dettaglio paginato per ente; le voci contabili restano distinte dai pagamenti SIOPE.\n- `GET \u002Fapi\u002Fspese\u002Fcomuni\u002Fdistribuzione?anno=2026`, con quote e quantili compatti soltanto dopo un refresh raw SIOPE completo verificato; non restituisce righe comunali.\n- `GET \u002Fapi\u002Fterritori\u002Ffisco?anno=2023&regione=Calabria`, con entrate, spese e saldo contabile CPT nello stesso perimetro PA consolidato.\n- `GET \u002Fapi\u002Fterritori\u002Firpef?anno=2024&livello=regione`, con contribuenti, redditi, imposta netta dichiarata e addizionali MEF; Province e Comuni sono filtrati e paginati.\n\n## MCP per assistenti AI\n\nIl sito include un server [Model Context Protocol](https:\u002F\u002Fmodelcontextprotocol.io\u002F) pubblico e in sola lettura. Un client MCP compatibile può scoprire e interrogare i dataset del portale senza dover conoscere ogni API separatamente.\n\nEndpoint di produzione:\n\n```text\nhttps:\u002F\u002F\u003Cdominio-del-sito>\u002Fapi\u002Fmcp\n```\n\nIn locale è `http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fmcp`. La pagina `\u002Fmcp` mostra l'indirizzo corretto del deployment e il catalogo corrente.\n\nIl server espone:\n\n- `list_datasets`, per elencare dataset, filtri, freschezza e cautele interpretative;\n- `query_dataset`, per interrogare snapshot verificati e fonti ufficiali live; filtri e paginazione\n  sono disponibili soltanto quando dichiarati dal dataset;\n- la risorsa `dvns:\u002F\u002Fdatasets`, che contiene il catalogo machine-readable.\n- la risorsa `dvns:\u002F\u002Frelated-mcp-services`, che segnala servizi pubblici complementari senza\n  confonderli con gli adapter gestiti dal portale.\n\nTra i dataset c'è `anac_cig_snapshot`: espone copertura annuale, conteggi, procedure, fasce di importo, hash degli input e cautele della replica CIG 2025. `pnrr_asili` restituisce progetti Italia Domani per CUP con localizzazioni, quadro finanziario, gare e aggiudicatari collegati per chiavi esatte. `inps_invalidita_civile` tiene separate spesa nazionale, stock di prestazioni e nuove decorrenze regionali, senza inferire dati comunali o responsabilità individuali. `cpt_finanza_regionale` espone entrate, spese e saldo territoriale 2000-2023, con valori pro capite solo dove il denominatore ISTAT è coerente. `mef_irpef_comunale` espone il rilascio comunale 2024 come dato dichiarativo, conserva celle soppresse e riga non attribuita e non lo tratta come gettito o saldo di cassa. `opencoesione_progetti` include anche quota del costo pubblico, rapporto pagamenti\u002Fcosto e costo medio per progetto per tema, natura e stato.\n\nPer il dettaglio civico per singolo Comune segnaliamo anche il MCP pubblico di\n[Cruscotto Italia](https:\u002F\u002Fcruscotto-italia.dati.gov.it\u002Fabout.html#accesso-mcp), gestito da AgID:\n\n```text\nhttps:\u002F\u002Fcruscotto-italia-mcp.agid.workers.dev\u002Fmcp\n```\n\nÈ un servizio esterno pubblico, al momento senza autenticazione o tariffa dichiarata, da collegare\ndirettamente al proprio client. DVNS non ne inoltra le chiamate, non ne duplica le pipeline e non\nne presenta gli aggregati come dati validati localmente. Il percorso consigliato è\n`search_comune`, poi `comune_kpi`; `comune_dashboard` va usato solo quando servono serie o elenchi\ndi dettaglio. Codice e architettura sono nel\n[repository ufficiale AgID](https:\u002F\u002Fgithub.com\u002FAgID\u002Fcruscotto-italia).\n\nEsempio di configurazione per un client che accetta server HTTP remoti:\n\n```json\n{\n  \"mcpServers\": {\n    \"dove-vanno-i-nostri-soldi\": {\n      \"type\": \"http\",\n      \"url\": \"https:\u002F\u002F\u003Cdominio-del-sito>\u002Fapi\u002Fmcp\"\n    }\n  }\n}\n```\n\nVerifica rapida del protocollo:\n\n```bash\ncurl -X POST http:\u002F\u002Flocalhost:3000\u002Fapi\u002Fmcp \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -H 'Accept: application\u002Fjson, text\u002Fevent-stream' \\\n  --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools\u002Flist\"}'\n```\n\nL'accesso senza account o autenticazione è intenzionale perché il server espone esclusivamente dati pubblici e operazioni read-only. Le richieste hanno input limitati, paginazione massima dove prevista e controlli sugli header `Origin` e `Host`; eventuali origini browser aggiuntive si configurano con `MCP_ALLOWED_ORIGINS`, mentre i domini pubblici ammessi si dichiarano in `MCP_ALLOWED_HOSTS`. I filtri estranei al dataset vengono rifiutati esplicitamente, senza produrre risultati che sembrino filtrati ma non lo siano. Non vengono esposte credenziali di ingestione.\n\nIl repository non simula un rate limit distribuito con memoria locale: sul deployment la regola edge\nper `\u002Fapi\u002Fmcp` va attivata e verificata separatamente. Finché non è attiva, questa protezione non va\nconsiderata presente; la configurazione proposta è documentata in [docs\u002FMCP.md](docs\u002FMCP.md).\n\nPer aggiungere una fonte all'MCP si registra la descrizione in `src\u002Flib\u002Fmcp\u002Fcatalog.ts` e l'adapter in `src\u002Flib\u002Fmcp\u002Fdatasets.ts`. Gli strumenti restano gli stessi, quindi i client non devono essere riconfigurati quando il catalogo cresce. Dettagli e checklist sono in [docs\u002FMCP.md](docs\u002FMCP.md).\n\nPer Manufact, ChatGPT e Claude si collega lo stesso endpoint pubblico: non si effettua un secondo\ndeploy del server. Challenge di dominio, pagine pubbliche, starter prompt e test di submission sono\ndocumentati in [docs\u002FMCP_DISTRIBUTION.md](docs\u002FMCP_DISTRIBUTION.md).\n\n### Assistente testuale deterministico\n\nLa pagina [\u002Fassistente](\u002Fassistente) offre una prima interfaccia testuale in sola lettura. Risponde\nsoltanto a pochi intenti allowlisted in italiano e richiama direttamente gli adapter pubblici già\nverificati; non usa provider LLM o voce, non salva il prompt e non accetta URL, SQL o dataset scelti\ndal testo. Il contratto, i limiti HTTP e la roadmap sono in [docs\u002FASSISTENTE.md](docs\u002FASSISTENTE.md).\n\nIl form di consulenza usa configurazione email fail-closed, richieste same-origin limitate e invii\nidempotenti. Honeypot e validazione non vengono presentati come rate limit: la regola WAF e la\nprocedura di cancellazione restano controlli operativi del deployment, descritti in\n[docs\u002FCONSULTING.md](docs\u002FCONSULTING.md).\n\nPer OpenCivitas, la differenza tra spesa storica e spesa standard non viene chiamata spreco. L'API restituisce anche i valori per abitante, il confronto sui servizi e i limiti territoriali della fonte.\n\nPer le opere pubbliche, l'API può segnalare date da controllare, crescita dei costi, finanziamenti ancora da trovare o problemi di qualità del dato. Sono indicazioni per scegliere cosa approfondire, non prove automatiche di spreco.\n\nLa sezione Controlli tiene separate sette letture: esiti di controlli ufficiali, concorrenza ridotta, ritardi, debiti, crediti difficili da riscuotere, misure da valutare e ipotesi di miglioramento. Gli scenari non vengono sommati ai dati osservati.\n\nNon confrontiamo come prezzi unitari gli importi totali di contratti con lo stesso codice CPV. Per parlare di anomalia di prezzo servono anche quantità, unità di misura, specifiche, durata e perimetro compatibili. Finché questi campi non sono disponibili, il sito non pubblica classifiche basate sul solo rapporto tra importo minimo e massimo.\n\nLa replica sui microdati CIG 2025, con formula, filtri e limiti, è documentata in [docs\u002Fresearch\u002FANAC_2025_REPLICATION.md](docs\u002Fresearch\u002FANAC_2025_REPLICATION.md). Quando il risultato ricalcolato non coincide con l'aggregato della relazione ANAC, mostriamo la differenza invece di correggere il dato a mano.\n\nPer l'invalidità civile, fonti, riconciliazioni e limiti territoriali sono documentati in [docs\u002FINPS_INVALIDITA.md](docs\u002FINPS_INVALIDITA.md). La voce ufficiale più recente è 23,616 miliardi di euro nel 2025 per l'insieme delle prestazioni di invalidità civile, non per le sole pensioni.\n\nPer la sanità, `openbdap_ssn_conto_economico` espone il consuntivo 2024 del Conto Economico\ndegli enti SSN. Il nazionale e le Regioni sono letti dai rispettivi dataset ufficiali; il dettaglio\nespone 232 enti e non le 21 righe aggregate `codeSsn=999`, usate solo per una verifica\nanti-doppio-conteggio. `BA2080` è `Totale Costo del personale`; `BA1350` e `BA1750` mantengono\nle descrizioni ufficiali di consulenze, collaborazioni, interinale e altre prestazioni di lavoro,\nrispettivamente sanitarie\u002Fsociosanitarie e non sanitarie. Non sono sinonimi di “gettonisti” o\n“cooperative”, non misurano organico o qualità e non sono pagamenti di cassa.\n\n## Scegliere l'anno\n\nLa home e le pagine Soldi e Territori permettono di scegliere il 2024, 2025 o 2026. La scelta resta nell'indirizzo della pagina, per esempio:\n\n```text\n\u002F?anno=2025\n\u002Fspese?anno=2025\n\u002Fterritori?anno=2025\n```\n\nI dati SIOPE, OpenBDAP e la serie annuale OpenCoesione cambiano con l'anno scelto. Per OpenBDAP una query annuale senza mese preferisce il consuntivo ufficiale `PBS_SPE_RND_*`; una query con mese e lo storico usano esclusivamente i rilasci mensili `PBS_SPE_Mxx_*`. Se un indicatore non esiste per quel periodo, viene mostrato come non disponibile. Non riutilizziamo un dato di un altro anno o di un'altra serie contabile.\n\nLe classifiche territoriali usano il valore per abitante come default e conservano il totale come confronto. Le due graduatorie comunali sono calcolate separatamente sull'intero insieme osservato, non riordinando una lista già tagliata per volume. Provincia e Regione mostrate accanto al Comune provengono rispettivamente dall'anagrafica SIOPE e dalla sede legale pubblicata in IPA.\n\n## Regole del progetto\n\n- Nessun numero senza fonte e data.\n- Nessun dato inventato o dimostrativo nelle pagine pubbliche.\n- Pagamenti, costi previsti, debiti e ipotesi restano separati.\n- Un segnale non viene presentato come una colpa.\n- I confronti usano solo casi e misure compatibili.\n- Se una fonte non risponde, il problema resta visibile.\n\nLe regole complete sono in [docs\u002FLEGAL_AND_ETHICS.md](docs\u002FLEGAL_AND_ETHICS.md) e [docs\u002FARCHITECTURE.md](docs\u002FARCHITECTURE.md).\n\n## Avvio locale\n\nRichiede Node.js 22.19 o successivo.\n\n```bash\nnpm ci\nnpm run dev\n```\n\nApri [http:\u002F\u002Flocalhost:3000](http:\u002F\u002Flocalhost:3000).\n\n## Controlli prima di una modifica\n\n```bash\nnpm run lint\nnpm test\nnpm run typecheck\nnpm run design:check\nnpm run build\nnpm run test:browser:e2e\nnpm run test:lighthouse\n```\n\nGli ultimi due comandi richiedono il build di produzione in esecuzione su\n`http:\u002F\u002F127.0.0.1:3000`. La CI li esegue su quattro viewport responsive e conserva il report\nLighthouse come artefatto privato del job. Le metriche Lighthouse sono misure di laboratorio e\nproxy dei Core Web Vitals, non dati real-user. La verifica automatica deve terminare senza avvisi\nESLint, errori TypeScript, regressioni Browser o budget Lighthouse falliti.\n\n## Aggiornamento dei dati\n\nGli script in `scripts\u002Fetl\u002F` scaricano le fonti ufficiali, controllano il formato e producono file piccoli usati dal sito.\n\n```bash\npython3 scripts\u002Fetl\u002Fsiope_municipal_snapshot.py --year 2025 \\\n  --output src\u002Fdata\u002Fgenerated\u002Fsiope-municipal-2025.json\npython3 scripts\u002Fetl\u002Fopencoesione_snapshot.py --check\npython3 scripts\u002Fetl\u002Fmef_participations_snapshot.py --check\npython3 scripts\u002Fetl\u002Fconsulenti_snapshot.py --check\npython3 scripts\u002Fetl\u002Fopencivitas_snapshot.py --check\npython3 scripts\u002Fetl\u002Fparliament_sources.py --check\npython3 scripts\u002Fetl\u002Fmef_irpef_municipal_snapshot.py --check \\\n  --spec scripts\u002Fetl\u002Fspecs\u002Fmef-irpef-2024.source.json \\\n  --meta-output src\u002Fdata\u002Fgenerated\u002Fmef-irpef-2024.meta.json \\\n  --data-output src\u002Fdata\u002Fgenerated\u002Fmef-irpef-2024.data.json\npython3 scripts\u002Fetl\u002Fpnrr_childcare_snapshot.py --check\n```\n\nLe attività automatiche controllano periodicamente la presenza di nuovi dati. Un'interruzione di una fonte esterna non viene confusa con un errore del codice.\n\nDettagli generali: [docs\u002FFRESHNESS_AND_REFRESH.md](docs\u002FFRESHNESS_AND_REFRESH.md). Contratto, join e limiti del tracciato PNRR: [docs\u002FPNRR_CHILDCARE.md](docs\u002FPNRR_CHILDCARE.md).\n\n## Struttura essenziale\n\n```text\nsrc\u002Fapp\u002F                 pagine e servizi web\nsrc\u002Fcomponents\u002F          grafici, mappa e controlli dell'interfaccia\nsrc\u002Flib\u002F                 lettura, controllo e collegamento dei dati\nsrc\u002Flib\u002Fmcp\u002F             catalogo e adapter del server MCP\nsrc\u002Fdata\u002Fgenerated\u002F      copie ridotte e verificate usate dal sito\nscripts\u002Fetl\u002F             aggiornamento delle fonti\ntests\u002F                   controlli automatici\ndocs\u002F                    metodo, architettura e note legali\n```\n\nIl registro delle fonti è in [src\u002Flib\u002Fsources.ts](src\u002Flib\u002Fsources.ts). Le regole operative sono in [src\u002Flib\u002Fdata\u002Fsource-policy.ts](src\u002Flib\u002Fdata\u002Fsource-policy.ts).\n\nLe richieste arrivate dopo il lancio, con fonte, limite e stato di lavorazione, sono raccolte in [docs\u002FCOMMUNITY_FEEDBACK.md](docs\u002FCOMMUNITY_FEEDBACK.md).\n\n## Contribuire\n\nSono utili segnalazioni di fonti mancanti, correzioni alle spiegazioni, controlli sulla qualità dei dati e miglioramenti di accessibilità.\n\nPrima di aprire una pull request, leggi [CONTRIBUTING.md](CONTRIBUTING.md): contiene i contratti minimi per fonti, claim, UI, API e MCP e i gate locali richiesti.\n\nPer proporre una nuova fonte, apri una issue con:\n\n- ente che pubblica il dato;\n- collegamento ufficiale;\n- licenza;\n- formato e frequenza di aggiornamento;\n- identificativi utili, come Codice IPA, codice fiscale, CIG o CUP.\n\n## Contributori\n\n- [@fragiannicola](https:\u002F\u002Fx.com\u002Ffragiannicola)\n- [@dom_gag_96](https:\u002F\u002Fx.com\u002Fdom_gag_96)\n\n## Licenza\n\nIl codice è distribuito con licenza MIT. I dati e gli elementi di terze parti mantengono le licenze indicate dalle rispettive fonti. Le attribuzioni sono raccolte in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).\n","2026-08-23 02:30:09","CREATED_QUERY"]