pg4: le PMI italiane che Apollo e Clay non vedono.

Una pipeline che trova le aziende su PagineGialle e Google Maps, verifica il loro sito, le arricchisce con contatti e dati ufficiali e, se vuoi, ti dice quali vale la pena chiamare.

TypeScriptNode 24PlaywrightNext.jsMCP serverGitHub ActionsMIT
  • 1.2k+test unitari offline
  • 96,2%precisione sui siti aggiunti dal passaggio SERP a pagamento
  • €0di default: le fonti a pagamento sono spente
  • 3ªgenerazione dello stesso progetto
Dashboard Setaccio: il cockpit di pg4
La dashboard Setaccio sul dataset dimostrativo: 480 aziende fittizie, nessun dato reale. Disegnata sul design system Grafite.
01Perché esiste

Il problema non è scrivere l'email. È sapere a chi mandarla.

Apollo e Clay sono costruiti sui dati americani. Su una PMI manifatturiera veneta da trenta persone la copertura crolla: l'azienda non c'è, oppure c'è con il sito sbagliato e un'email che rimbalza.

I dati veri esistono, ma sono sparsi in cinque posti diversi. pg4 li mette insieme e, soprattutto, si rifiuta di indovinare: un sito entra nel database solo se la P.IVA o il telefono dell'azienda compaiono nella pagina, oppure se nome, settore e città tornano tutti.

pg4 è la terza generazione. pg3 era crollato sotto il suo stesso peso operativo: Redis, sidecar, costi che nessuno riusciva a tenere sotto controllo. Dai suoi output reali sono uscite le regole di pg4: la stessa agenzia emessa 10 volte su comuni diversi, 191 "siti" che in realtà erano annunci su immobiliare.it. Ogni errore è diventato un vincolo con il suo test.

Meglio un campo vuoto che un campo sbagliato. Un'email sbagliata costa reputazione del dominio; un campo vuoto costa solo una ricerca in più.

02Come funziona

Quattro passi. L'ultimo è facoltativo.

01

Scoperta

Categoria e provincia in input. Gira comune per comune su PagineGialle e Google Maps, con checkpoint: se si interrompe riprende da dove era rimasto. Deduplica su tutte le fonti, dal telefono al dominio.

02

Verifica del sito

Una scala a cinque gradini, dal sito dichiarato al registro .it. Ogni candidato deve dimostrare di appartenere davvero a quell'azienda.

03

Arricchimento

Email dello stesso dominio, PEC, social, P.IVA validata su VIES, fatturato e dipendenti. L'email inferita entra solo se il controllo MX/SMTP la dà consegnabile.

Opzionale04

Giudizio

Incrocia il potenziale dell'azienda con la sua presenza digitale e indica chi è un target, chi è borderline e chi no. Con le leve da cui partire.

Si usa da:CLIDashboard SetaccioServer MCP per agenti AICampagne notturne
03La scala di verifica

Cinque gradini per trovare il sito giusto. Si sale solo se quello sotto fallisce.

  1. 1

    Il sito dichiarato

    Quello che arriva in input, purché non sia messaggistica, un redirect, una directory o un social.

  2. 2

    La scheda PagineGialle

    Riempie P.IVA, telefono, email e indirizzo. Il sito passa solo se combaciano P.IVA o telefono.

  3. 3

    Il dominio indovinato

    Fino a 60 domini candidati dal nome, filtro DNS, si verificano i 6 migliori.

  4. 4

    La ricerca web

    DuckDuckGo, poi Bing: si verificano i primi 5 risultati. Con il paid acceso anche Serper, Tavily ed Exa, con veto sugli aggregatori.

  5. 5

    Il registro .it

    RDAP: se la P.IVA è nel record del dominio, confidenza 0,9. Altrimenti si confronta il nome.

Verificato · 0,95La P.IVA dell'azienda compare nella pagina.
VerificatoCompaiono le ultime 7 cifre del telefono.
Semantico · 0,8–0,9Nome, settore e città coerenti, e RDAP non li contraddice.
RifiutatoPagina parcheggiata, nome generico, evidenza debole o città in conflitto.
04Il giudizio

Cerca le perle silenziose: aziende forti che online quasi non esistono.

A, il potenziale: premi, brevetti, marchio storico, stampa, registro. Conta solo se è confermato da città, provincia, P.IVA o dominio.

B, la presenza digitale: sito, social, recensioni e gli altri canali propri. Un canale è assente solo se è stato cercato davvero; altrimenti resta sconosciuto e l'azienda finisce borderline.

La soglia: A ≥ 0,60 e distacco A−B ≥ 0,30 è un target. A ≥ 0,50 e distacco ≥ 0,20 è borderline. Chiuse, rivenditori puri e aziende in liquidazione sono squalificate prima.

Le leve, in ordine:

Posizionamento→Acquisizione→Conversione→Misurazione

I due giudici sono deterministici. Un LLM, se c'è, rifinisce solo ciò che è stato osservato; un critico finale controlla che A e B non si citino a vicenda e che nessuno stato sia inventato.

05Di notte

Le campagne girano da sole. E quando si rompono, provano a ripararsi.

  1. Provincia × settore

    La campagna lavora per celle e salta quelle già verificate. Un watchdog la rilancia se il processo muore.

  2. Una cella si rompe a metà

    Di solito perché PagineGialle ha cambiato qualcosa. Parte un workflow di recovery: un LLM scrive la patch allo scraper.

  3. La patch passa tre controlli

    Tocca solo 9 file dello scraper, niente segreti, rete, exec o cancellazioni, con un test di regressione obbligatorio. Poi typecheck e test verdi. Poi un secondo LLM, indipendente, deve approvarla.

  4. Merge e si riparte

    La PR entra in un ambiente protetto, lo scrape riprende e la cella viene riverificata.

  5. Stesso errore due volte: serve una persona

    Dopo due cicli con lo stesso errore la cella si blocca. L'automazione sa quando fermarsi.

06Regole fisse

Quattro regole che il codice non può aggirare.

Lista di esclusione GDPR

Chi ha chiesto di non essere contattato sparisce in scoperta, arricchimento e giudizio. La repo non contiene dati raccolti e include un kit GDPR: valutazione del legittimo interesse e informativa art. 14.

€0 di default

Le fonti a pagamento richiedono flag, chiave e --enable-paid. Prima di ogni chiamata si ricontrolla il tetto per lead e per run, e una chiamata fallita si registra al suo costo reale. Nato da un incidente: un tetto di €0,10 arrivato a €0,229.

Fail-closed

Se fatturato e dipendenti appartengono a un'altra entità, il dato si scarta. I campi già pieni non vengono mai sovrascritti.

Niente di inventato

Sconosciuto non vuol dire assente. I quasi-duplicati si segnalano, non si fondono. Ogni run dichiara se è completo o parziale.

07Come si usa

Una CLI, una dashboard, un server per agenti. Una pipeline sotto.

Comandi

pnpm scrape
Scoperta su PagineGialle e Maps, riprende dal checkpoint.
pnpm enrich
Verifica del sito e arricchimento. Solo fonti gratuite, se non dici altrimenti.
pnpm run pipeline
Scoperta e arricchimento sotto un unico run. Rifiuta di arricchire uno scrape incompleto.
pnpm judge
Il giudizio a due assi su un CSV arricchito.
pnpm lookup
Ritrova un'azienda già processata per P.IVA o telefono.
pnpm coverage
Mappa dei buchi di copertura: settore × territorio contro i dati ISTAT.
pnpm mcp
Server MCP: gli agenti AI usano la pipeline come strumento, dentro una sandbox.

Un esempio

pnpm run pipeline \
  --category "agenzie immobiliari" \
  --province BL \
  --out output/campaign

Si prova anche offline, senza chiavi né browser: pnpm demo apre la dashboard su 480 aziende fittizie. Si guida da tastiera: ⌘K trova viste, mercati e aziende. Ogni riga in output ha uno stato e un motivo, e ogni euro speso finisce nel ledger.

08Sotto il cofano

Gli alberi decisionali completi, per chi vuole i dettagli.

Ti serve un sistema così sul tuo mercato? Parliamone.

Scrivimi Repo