Live MVP: https://ragosint.vercel.app/
RAGOSINT e' un sistema operativo OSINT/RAG per trasformare fonti pubbliche italiane in intelligence operativa: monitora normativa, bandi, gare d'appalto e PNRR, estrae segnali utili, pubblica due feed RSS e genera un brain Obsidian scaricabile per esplorare il grafo locale.
Questo non e' un semplice scraper: e' una pipeline viva che recupera fonti ufficiali, normalizza i contenuti, estrae scadenze/importi/CIG/CUP/requisiti/beneficiari, costruisce un vector store e rende tutto consultabile come feed, report, API semantica e vault Obsidian.
Nel canale bandi il monitor esclude i bandi scaduti quando la scadenza e' rilevabile. I segnali senza scadenza esplicita restano solo se recenti, cosi' il feed non diventa un archivio di opportunita gia' chiuse.
Provalo subito:
- MVP live: https://ragosint.vercel.app/
- Feed bandi: https://ragosint.vercel.app/feed/bandi.xml
- Feed normativa: https://ragosint.vercel.app/feed/normativa.xml
- Brain Obsidian: https://ragosint.vercel.app/api/brain.zip
- Ricerca semantica: https://ragosint.vercel.app/api/semantic?q=pnrr%20cloud&channel=bandi
Il sistema genera una vault Obsidian completa in ZIP: scarichi il brain, lo apri in locale e navighi il grafo di bandi, normativa, fonti e tag.
RAGOSINT e' una pipeline OSINT/RAG-ready per un gruppo di ingegneri che vuole trasformare fonti pubbliche italiane in intelligence operativa.
- Normativa:
/feed/normativa.xml - Bandi:
/feed/bandi.xml - Aggregato:
/feed.xml
Il feed Normativa serve per monitorare aggiornamenti giuridici e regolatori che possono impattare appalti, PNRR, Pubblica Amministrazione, privacy, lavoro, digitale, regioni, regolamenti e giurisprudenza. Non e' pensato come feed generico di leggi: e' un radar compliance/opportunita per capire chi e' colpito da una novita, cosa deve fare, entro quando, quale rischio corre e quale servizio o progetto puo' nascere.
-
Intelligenza artificiale
- AI Act UE, Regolamento UE 2024/1689;
- linee guida europee su GPAI, sistemi ad alto rischio e pratiche vietate;
- linee guida AgID per sviluppo, adozione e procurement di IA nella PA;
- provvedimenti del Garante Privacy su AI, scraping, biometria, riconoscimento facciale, chatbot e sistemi predittivi.
-
Cybersecurity e NIS2
- ACN, CSIRT e normativa nazionale di derivazione NIS/NIS2;
- obblighi per soggetti essenziali e importanti;
- misure base, notifiche incidenti, registrazione, scadenze e determinazioni tecniche.
-
Privacy digitale e GDPR operativo
- Garante Privacy, EDPB e provvedimenti su AI, cookie, profilazione, trasferimenti extra UE, videosorveglianza, sanita digitale, scuola digitale, PA, data breach e sanzioni.
-
Digitalizzazione della Pubblica Amministrazione
- AgID, Dipartimento per la Trasformazione Digitale, Piano Triennale per l'Informatica nella PA, CAD, interoperabilita, cloud PA, identita digitale, pagoPA, app IO, ANPR, SEND e fascicoli digitali.
-
Accessibilita digitale
- AgID, European Accessibility Act, linee guida, obblighi per siti, app, servizi digitali, e-commerce, banche, trasporti e software.
-
Conservazione digitale e documenti informatici
- CAD, AgID, linee guida su formazione, gestione e conservazione dei documenti informatici, firme elettroniche, PEC, domicilio digitale, protocollo informatico, eIDAS 2.0 e identita digitale europea.
-
DORA e finanza digitale
- DORA, ESMA, EBA, EIOPA, Banca d'Italia, Consob e IVASS su ICT risk, outsourcing ICT, incident reporting, cloud provider, banche, assicurazioni, fintech e fornitori critici.
-
Crypto, MiCA e antiriciclaggio digitale
- MiCA, ESMA, EBA, Consob, Banca d'Italia, OAM, UIF, AML package UE, travel rule, stablecoin, CASP, tokenizzazione, exchange e wallet provider.
Il vero valore non e' solo leggere la norma. Ogni aggiornamento dovrebbe diventare un alert operativo:
- chi e' colpito;
- cosa deve fare;
- entro quando;
- rischio se non agisce;
- opportunita economica collegata;
- possibili servizi da vendere o progetti da proporre.
I feed RSS si aggiornano automaticamente, ma il progetto non usa un database persistente: ogni feed viene generato dalla pipeline serverless quando viene richiesto.
Flusso attuale:
- Un client apre un feed RSS:
/feed/bandi.xml/feed/normativa.xml/feed.xml
- Vercel esegue la raccolta dalle fonti configurate, normalizza gli alert e genera l'XML RSS.
- Il risultato viene tenuto in cache per 30 minuti:
revalidate = 1800s-maxage=1800
- Le chiamate verso le fonti esterne usano una cache fino a circa 1 ora.
In pratica gli aggiornamenti reali sono nell'ordine di 30-60 minuti, a seconda della cache Vercel e della disponibilita' delle fonti originali.
Esiste anche un cron Vercel giornaliero:
{
"path": "/api/refresh",
"schedule": "0 6 * * *"
}Questo cron chiama /api/refresh ogni giorno alle 06:00 UTC, cioe' circa alle 08:00 in Italia durante l'ora legale e alle 07:00 durante l'ora solare. Serve soprattutto a scaldare la pipeline e verificare i canali: non salva dati su database.
Refresh manuale:
curl "https://ragosint.vercel.app/api/refresh"Per un monitor piu' aggressivo si puo' passare a un cron orario:
{
"path": "/api/refresh",
"schedule": "0 * * * *"
}Le notifiche Slack possono essere collegate al refresh configurando SLACK_WEBHOOK_URL e SLACK_NOTIFY_ON_REFRESH=true.
Vercel genera una vault Obsidian completa in formato ZIP. Scaricala, estraila e apri la cartella con Obsidian per visualizzare grafo, tag, backlink, fonti e cluster.
- Brain completo:
/api/brain.zip - Brain normativa:
/api/brain/normativa.zip - Brain bandi:
/api/brain/bandi.zip
Ogni ZIP contiene:
- note Markdown per alert, fonti, tag e canali;
- frontmatter YAML;
- link interni
[[...]]per il grafo Obsidian; - configurazione
.obsidian/con grafo e plugin base.
API equivalenti:
/api/rss/normativa/api/rss/bandi/api/alerts?channel=normativa/api/alerts?channel=bandi/api/report?channel=normativa/api/search?q=cloud&channel=bandi/api/semantic?q=cloud%20software&channel=bandi/api/vector-store?channel=all/api/notify/slack?channel=bandi
- Gazzetta Ufficiale - Serie Generale
- Gazzetta Ufficiale - Corte Costituzionale
- Gazzetta Ufficiale - Unione Europea
- Gazzetta Ufficiale - Regioni
- AgID - Notizie, linee guida e PA digitale
- Dipartimento Trasformazione Digitale - Notizie
- Garante Privacy - News RSS
- Garante Privacy - AI e protezione dati
- Garante Privacy - Provvedimenti
- EDPB - News e linee guida privacy UE
- Commissione Europea - AI Office e AI Act
- Commissione Europea - Quadro regolatorio AI Act
- ESMA - DORA e resilienza operativa digitale
- ESMA - MiCA e digital finance
Fonti normative candidate gia' tracciate ma non abilitate nel refresh automatico:
- ACN - Portale cybersecurity e NIS2, da stabilizzare per evitare blocchi bot/serverless;
- Banca d'Italia - DORA, da stabilizzare su endpoint ufficiale fetch-friendly;
- Consob - MiCA, da stabilizzare su endpoint ufficiale fetch-friendly.
- Gazzetta Ufficiale - 5a Serie Speciale Contratti Pubblici
- ANAC - Piattaforma Contratti Pubblici via Developers Italia
- ANAC OCDS - Open Contracting Data Registry
- Acquisti in Rete PA - MEPA
- Italia Domani - Amministrazioni Titolari
- Italia Domani - Soggetti Attuatori
- PNRR Cultura - Bandi e Avvisi
- Commissione Europea Digital Strategy - Funding, calls e tenders
- Regione Lombardia - Bandi
- START Toscana - Gare e Appalti
- Regione Toscana - Bandi di Gara e Contratti
- Universita di Bologna - Bandi
- Universita di Bologna - Gare di appalto
- Comune di Bologna - Bandi di Gara
- ESTAR Toscana - START Sanita Bandi
- AUSL Bologna - Bandi di Gara
- EuroHPC JU - AI Factories Access Calls
- EuroHPC JU - Supercomputers Access Calls
- EuroHPC JU - Research and Innovation Calls
- EuroHPC JU - AI for Science and Collaborative EU Projects
- IT4LIA AI Factory - Opportunita e servizi
- IT4LIA AI Factory - News
- IT4LIA AI Factory - Repository
La pipeline monitora anche opportunita europee digitali: funding e tenders di Commissione Europea Digital Strategy, access call EuroHPC, AI Factories, bandi di ricerca e innovazione, grant collegati a Horizon Europe/Digital Europe e segnali IT4LIA utili per startup, PMI, PA, universita e ricerca.
Nota operativa: le pagine dirette ANAC dati.anticorruzione.it/opendata e ocds_it sono mantenute in configurazione come riferimento, ma disattivate dal refresh automatico perche' possono rispondere alle fetch serverless con Request Rejected/HTTP 403. Il monitor attivo usa quindi fonti pubbliche alternative e stabili per PCP/OCDS, evitando falsi errori nel feed.
Nota sulle fonti con protezione o timeout: alcune pagine istituzionali utili, come ACN, pagine dirette ANAC, portali appalti UniBO ed ESTAR Toscana, possono bloccare fetch automatiche o andare in timeout da ambienti serverless. RAGOSINT le mantiene in configurazione come candidate, ma le tiene disabilitate finche' non viene scelto un endpoint piu' stabile o una strategia dedicata.
Le fonti sono configurate in src/data/sources.json.
flowchart LR
A[Fonti pubbliche RSS/HTML] --> B[Fetcher OSINT]
B --> W[Webclaw opzionale per HTML pulito]
B --> C[Normalizer + extractor]
W --> C
C --> D[Deduplica + scoring]
D --> E[Knowledge JSON]
D --> F[Vector store]
D --> G[Obsidian vault ZIP]
D --> H[RSS feed]
F --> I[Ricerca semantica API]
G --> J[Download da Vercel]
J --> K[Obsidian locale + grafo]
H --> L[Feed normativa/bandi]
D --> M[Slack digest opzionale]
Il flow passa quindi anche da Obsidian: Vercel genera una vault Markdown pronta da scaricare, tu la apri in locale e visualizzi il grafo. La parte semantica resta esposta come API/Vercel e ogni nota del vault contiene un link alla ricerca semantica per trovare alert simili.
RAGOSINT puo' usare Webclaw come strato di estrazione per le fonti HTML: invece di passare alla pipeline pagine piene di menu, footer, script e boilerplate, Webclaw puo' restituire markdown, JSON e testo LLM-ready piu' puliti. Questo migliora la qualita' degli input verso estrazione campi, chunking, vector store e ricerca semantica.
L'integrazione e' opzionale e non incorpora codice Webclaw nella repository MIT di RAGOSINT: viene chiamato come servizio/API esterna quando configurato. Se Webclaw non e' configurato o fallisce su una fonte in mode: "auto", RAGOSINT torna al fetch nativo senza rompere feed, sito o brain Obsidian.
Variabili supportate:
WEBCLAW_API_KEY=wc_...
WEBCLAW_API_URL=https://api.webclaw.io/v1/scrape
WEBCLAW_TIMEOUT_MS=25000
WEBCLAW_AUTO_HTML=falseConfigurazione per fonte in src/data/sources.json:
"webclaw": {
"enabled": true,
"mode": "auto",
"formats": ["markdown", "llm", "json"],
"onlyMainContent": true
}Uso consigliato:
mode: "auto"per produzione: Webclaw ottimizza se disponibile, fallback nativo se non lo e';mode: "required"solo per fonti dove vuoi fallire esplicitamente se Webclaw non risponde;WEBCLAW_AUTO_HTML=trueper provare Webclaw su tutte le fonti HTML senza modificare ogni fonte.
Ogni alert viene arricchito con:
- scadenze e termini;
- importi;
- CIG;
- CUP;
- requisiti;
- soggetti beneficiari.
Questi campi finiscono in:
- JSON API;
- report Markdown;
- note Obsidian;
- vector store;
- ricerca semantica.
Lo script di ingest genera:
data/knowledge/items.jsondata/knowledge/bandi.jsondata/knowledge/normativa.jsondata/knowledge/index.jsondata/knowledge/vector-store.jsonbrain/RAGOSINT - Index.mdbrain/RAGOSINT - Bandi.mdbrain/RAGOSINT - Normativa.md
data/knowledge/index.json contiene chunk gia' pronti per un retriever. data/knowledge/vector-store.json contiene embeddings locali deterministici, dependency-free, utili come baseline per ricerca semantica e sostituibili in seguito con OpenAI embeddings, pgvector, Qdrant, Weaviate o altro vector database.
La vault scaricabile viene invece generata runtime da src/lib/obsidian.ts e compressa da src/lib/zip.ts, senza database e senza storage persistente.
Endpoint:
curl "https://ragosint.vercel.app/api/semantic?q=pnrr%20cloud&channel=bandi"
curl "https://ragosint.vercel.app/api/vector-store?channel=all"Il modello ragosint-hash-embedding-v1 e' una baseline locale: indicizza titolo, sintesi, tag e campi estratti. Serve per avere subito un vector store gratuito su Vercel; per produzione si puo' sostituire src/lib/vector.ts con embeddings esterni.
Configurare su Vercel:
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/...
SLACK_NOTIFY_SECRET=un-segreto-lungo
SLACK_NOTIFY_ON_REFRESH=falseInvio manuale:
curl "https://ragosint.vercel.app/api/notify/slack?channel=bandi&secret=$SLACK_NOTIFY_SECRET"Invio durante refresh:
curl "https://ragosint.vercel.app/api/refresh?notify=slack&secret=$CRON_SECRET"pnpm install
pnpm run ingest
pnpm run devpnpm run typecheck
pnpm run lint
pnpm run buildImpostare:
NEXT_PUBLIC_SITE_URL=https://ragosint.vercel.appvercel.json contiene un cron giornaliero su /api/refresh, compatibile con il piano Hobby gratuito.
RAGOSINT e' rilasciato con licenza MIT. Puoi forkare, modificare, riusare e distribuire liberamente il progetto, mantenendo la nota di copyright e la licenza nei lavori derivati.
Vedi LICENSE.
- aggiungere parser dedicati per portali complessi ANAC/MEPA e singole centrali acquisto;
- sostituire gli embeddings locali con un provider embedding esterno quando serve ranking piu' fine;
- generare alert personalizzati per profili aziendali o aree di competenza;
- integrare notifiche Telegram o email oltre Slack.
