← Scritti

11 luglio 2026 · GeoSuite · Generative Engine Optimization · Case study · Python · FastAPI · LLM

Dietro GeoSuite: come si misura la visibilità di un brand nelle AI

Non puoi fare rank-checking di una risposta di ChatGPT come di una SERP: cambia a ogni domanda, a ogni modello, a ogni sessione. Ecco le decisioni tecniche con cui GeoSuite trasforma quel rumore in un numero — matrice di prompt, orchestrazione multi-modello, estrazione strutturata e statistica.

Quando ho iniziato a costruire GeoSuite la domanda sembrava banale: “quanto un brand viene citato da ChatGPT, Gemini, Claude e Perplexity?”. È la stessa domanda che la SEO si fa da vent’anni per Google — solo che la risposta, qui, non esiste in nessun posto da cui leggerla.

Su Google c’è una SERP: una pagina, un ordine, dieci risultati che puoi grattare e confrontare nel tempo. Un’AI non ti dà una classifica: ti dà un paragrafo in linguaggio naturale, diverso a ogni domanda, diverso a ogni modello, e spesso diverso anche alla stessa domanda posta due volte. Non c’è niente da “scrapare”. La misura te la devi costruire.

Questo è il problema centrale di GeoSuite, ed è dove sta quasi tutta l’ingegneria. Racconto le decisioni, non lo slogan.

Il problema in una riga

Misurare la presenza di un brand nelle risposte AI vuol dire trasformare un output non-deterministico, in testo libero, e diverso tra modelli in una metrica stabile e confrontabile nel tempo. Tre parole, tre problemi separati.

1. La misura parte dalle domande, non dalle risposte

Il primo errore che ho evitato è misurare “a caso”. Se chiedi a un modello “qual è il miglior CRM?” una volta sola, hai un aneddoto, non un dato. La visibilità di un brand è condizionata alla domanda: emergi su certi prompt e sparisci su altri, ed è proprio quella distribuzione che conta.

Così la prima cosa che GeoSuite costruisce non è un crawler: è una matrice di prompt rappresentativa di una categoria — le domande vere che un utente farebbe prima di comprare, declinate per intento (informativo, comparativo, di prodotto). L’audit gratuito ne gira una cinquantina per partire; un monitoraggio continuo molte di più. Il “cosa chiedere” è metà del valore: sbagli il set di prompt e stai misurando con precisione la cosa sbagliata.

2. Quattro modelli, quattro API, un formato solo

I modelli non parlano la stessa lingua, e soprattutto non espongono le stesse cose. Alcuni restituiscono citazioni e fonti (Perplexity ne fa un tratto distintivo), altri no; alcuni hanno un’API pulita, altri vanno interrogati come li interroga un utente. Rate limit diversi, costi diversi, latenze diverse, nessun campo “brand citati” da nessuna parte.

La scelta architetturale è stata isolare tutto dietro un layer di normalizzazione: ogni modello ha il suo adattatore, e a valle esce sempre la stessa struttura — risposta grezza + metadati. Il resto della pipeline non sa, e non deve sapere, se dietro c’è ChatGPT o Gemini. Il backend è Python su FastAPI, e l’orchestrazione è pensata per essere concorrente e resiliente: un modello che va in timeout o in rate limit non deve mandare a monte l’intera misurazione, degrada e si ritenta.

3. Dal testo libero al dato: estrazione, non regex

Qui casca la maggior parte dei tentativi ingenui. Cercare il nome del brand nel testo con una regex è inutile: le AI parafrasano, abbreviano, usano sinonimi, citano un brand per negarlo (“non userei X perché…”). Contare le occorrenze della stringa misura il rumore, non il segnale.

L’estrazione è quindi un passo a sé, fatto con structured output: da ogni risposta si tirano fuori le entità (brand nostro e competitor), la quota di voce relativa, il tono con cui il brand è nominato (raccomandato, citato di passaggio, sconsigliato) e le fonti eventualmente addotte. È il mestiere stesso di GeoSuite — leggere come le AI parlano — applicato dentro GeoSuite.

Con una regola di igiene che ho imparato a mie spese: le citazioni vanno verificate, non credute. I modelli allucinano URL con disinvoltura. Una fonte citata che non esiste, o che non contiene davvero ciò che il modello dice, è un falso positivo che avvelena la metrica. Meglio una fonte in meno che una inventata contata come vera.

4. Il nemico numero uno: la non-determinienza

Anche fissando prompt e modello, la stessa domanda dà risposte diverse. Se costruissi un cruscotto su una singola esecuzione, il grafico ballerebbe da un giorno all’altro senza che il brand abbia fatto nulla — e un cruscotto di cui non ti fidi è peggio di nessun cruscotto.

La risposta è statistica, non magica: si ripete e si aggrega. Ogni prompt gira più volte, e la metrica che finisce a schermo è una tendenza con la sua variabilità, non uno scatto istantaneo. Questo separa il rumore (“oggi il modello era di umore diverso”) dal segnale vero (“da tre settimane la quota di voce cresce”). È la differenza tra un numero che sembra preciso e uno di cui ti puoi fidare per prendere una decisione.

5. Il vincolo che disegna tutto: il costo

Ogni singola misura è prompt × modelli × ripetizioni chiamate a LLM. La matematica esplode in fretta: è la voce di costo dominante del prodotto, non l’infrastruttura. Questo vincolo non è un dettaglio operativo, è un vincolo di design — ha plasmato tutto il resto.

Da qui le scelte che ne discendono: caching aggressivo di ciò che non cambia tra due run, batching e scheduling delle misurazioni fuori dai picchi, e il modello del free audit calibrato su un campione volutamente limitato — abbastanza per dare un segnale onesto, non tanto da regalare un monitoraggio continuo. Progettare per il costo dal primo giorno è ciò che rende la cosa un prodotto e non una demo che va in bancarotta al primo cliente serio.

Cosa rifarei (e cosa no)

Onestà da fondatore che ci sta ancora lavorando: il set di prompt è il vero prodotto. All’inizio ho speso troppa energia sull’orchestrazione e troppo poca sulla curatela delle domande — ed è lì che si vince o si perde la fiducia di chi guarda il report. Se ripartissi, metterei prima il lavoro sul cosa chiedere.

Quello che rifarei identico è il layer di normalizzazione tra i modelli: aver disaccoppiato la pipeline dai singoli provider mi ha già salvato più volte, perché in questo mercato le API cambiano sotto i piedi ogni pochi mesi. Costruire dietro un’astrazione ciò che oggi è instabile è la scelta che paga di più.

In sintesi

GeoSuite non “scrapa” le AI: costruisce una misura dove non ce n’è una. Una matrice di prompt definisce cosa chiedere, un layer multi-modello normalizza quattro provider dietro un formato solo, l’estrazione strutturata trasforma testo libero in quota di voce, tono e fonti verificate, la ripetizione statistica doma la non-determinienza, e ogni scelta è piegata al vincolo di costo degli LLM. È un problema di data engineering travestito da problema di marketing — ed è esattamente il tipo di caos tecnico che mi piace trasformare in qualcosa che scala. Se vuoi vederlo dal lato prodotto, l’audit è gratuito: trygeosuite.it.