AEO Engine
Aiuta le aziende a comparire nelle risposte di ChatGPT e di Google
Incasso mensile: 154.000 USD (fonte indicata nella scheda)
Cosa fa
Agenzia che lavora sulla visibilità delle aziende nelle risposte degli assistenti AI (ChatGPT, Google AI Overviews) oltre che su Google classico.
Come guadagna
Servizio mensile per le aziende clienti: è un'agenzia, non solo un software.
Rendilo tuo
- Parti con un report che misura cosa dicono gli assistenti AI di un'azienda, ripetuto ogni settimana.
- Specializzati sulle piccole attività locali italiane, ignorate dalle agenzie grandi.
- Mai promettere posizioni garantite: nessuno può farlo.
Le frasi da scrivere all'AI
1. Base del sito e grafica
Crea un'app web in italiano chiamata "Citami": mostra alle piccole aziende se ChatGPT e gli altri assistenti AI le consigliano quando un cliente fa una domanda, e come cambia ogni settimana. Usa React, Vite, TypeScript e Tailwind CSS.
Pagine da creare:
1. Pagina iniziale con la domanda "ChatGPT consiglia la tua azienda?", tre vantaggi, un esempio di report e i prezzi
2. Registrazione e accesso
3. Pannello con le aziende monitorate
4. Pagina del report di un'azienda con grafico settimanale
5. Pagina per aggiungere un'azienda (nome, settore, città, 3 concorrenti)
Stile: serio e affidabile come un'app di analisi: sfondo bianco, blu scuro #1B2A4A per i testi, verde #16A34A per i dati positivi, rosso #DC2626 per quelli negativi, carattere "Inter", grafici puliti. Nessuna immagine generica di stock.
Tutto deve funzionare perfettamente da telefono. Tutti i testi in italiano, chiari e senza parole tecniche.
2. Database, account e sicurezza
Collega il progetto a Supabase e attiva la registrazione con email e password.
Crea queste tabelle:
- "aziende": nome, settore, città, elenco dei concorrenti, collegata all'utente
- "domande": le domande che farebbe un cliente, collegate all'azienda
- "controlli": ogni risposta degli assistenti AI con data, motore, se l'azienda è citata, in che posizione e quali concorrenti compaiono
Regole di sicurezza obbligatorie:
- ogni utente vede e modifica solo le proprie aziende, domande e controlli
- i controlli li scrive solo il sistema (Edge Function), mai il browser
- il profilo con piano e crediti non si modifica dal browser
Usa esattamente il codice SQL che trovi nei "Dettagli tecnici" di questa scheda: eseguilo nel SQL Editor di Supabase prima di continuare, poi collega le pagine alle tabelle.
3. Domande e controllo settimanale
Quando l'utente aggiunge un'azienda, chiama la Edge Function "genera-domande" (nei Dettagli tecnici) che usa Claude per scrivere 20 domande realistiche che un cliente farebbe in quella città e in quel settore (es. "miglior commercialista a Bologna"), e salvale nella tabella "domande". L'utente può modificarle o toglierle.
Crea poi la Edge Function "controllo" che, per ogni azienda dei clienti Pro, pone ogni domanda a un assistente AI con ricerca web, e per ogni risposta registra in "controlli": se l'azienda è citata, in che posizione nell'elenco, quali concorrenti compaiono e il testo della risposta. Programma il controllo ogni lunedì alle 6 con pg_cron (codice nei Dettagli tecnici).
Le domande devono restare le stesse settimana dopo settimana: è l'unico modo per confrontare l'andamento.
4. Il report e gli avvisi
Nella pagina dell'azienda mostra:
- la percentuale di risposte in cui l'azienda è citata, grande, con la variazione rispetto alla settimana prima (freccia verde o rossa);
- un grafico a linee delle ultime 12 settimane, con l'azienda e i concorrenti;
- la classifica delle aziende citate più spesso al posto del cliente;
- l'elenco delle domande, con ✓ o ✗ e la possibilità di leggere la risposta completa.
Dopo ogni controllo settimanale manda un'email solo se qualcosa è cambiato di almeno 10 punti ("Questa settimana sei sparito da 3 risposte su 20"). In fondo al report aggiungi sempre la nota: "Le risposte degli assistenti AI cambiano ogni volta: conta l'andamento, non la singola risposta".
5. Pagamenti con Stripe
Aggiungi un abbonamento a 39 € al mese. Gratis l'utente ha: una sola azienda e un controllo al mese. Con il piano Pro sblocca: fino a 5 aziende, controllo ogni settimana e avvisi via email.
A pagamento riuscito il webhook porta l'utente al piano Pro; se l'abbonamento viene disdetto o non rinnovato lo riporta al piano gratuito.
Per la sessione di pagamento e il webhook segui la guida "Pagamenti con Stripe" di Fattibile.
6. Controlli specifici di questo progetto
Oltre ai controlli della guida "Controllo finale", verifica in particolare:
1. Onestà: in nessun testo del sito deve esserci scritto che garantisci di far comparire l'azienda su ChatGPT. Il sito misura, non promette.
Correggi quello che non va e scrivimi cosa hai cambiato.
Dettagli tecnici
Tabelle del database
Le aziende monitorate, le domande fisse e i risultati di ogni controllo.
create table aziende (
id uuid primary key default gen_random_uuid(),
utente_id uuid not null references auth.users(id) on delete cascade,
nome text not null,
settore text not null,
citta text not null,
concorrenti text[] not null default '{}',
creato_il timestamptz not null default now()
);
create table domande (
id uuid primary key default gen_random_uuid(),
azienda_id uuid not null references aziende(id) on delete cascade,
utente_id uuid not null references auth.users(id) on delete cascade,
testo text not null
);
create table controlli (
id uuid primary key default gen_random_uuid(),
domanda_id uuid not null references domande(id) on delete cascade,
utente_id uuid not null references auth.users(id) on delete cascade,
motore text not null, -- es. 'chatgpt', 'gemini'
citata boolean not null,
posizione int, -- null se non citata
concorrenti_citati text[] not null default '{}',
risposta text not null,
eseguito_il timestamptz not null default now()
);
alter table aziende enable row level security;
create policy "le mie righe" on aziende
for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);
alter table domande enable row level security;
create policy "le mie righe" on domande
for all using (auth.uid() = utente_id) with check (auth.uid() = utente_id);
-- I controlli si leggono ma li scrive solo la Edge Function
alter table controlli enable row level security;
create policy "leggo i miei controlli" on controlli
for select using (auth.uid() = utente_id);Andamento settimanale
Calcola, settimana per settimana, in quante risposte l'azienda è stata citata: è il numero del grafico.
select
date_trunc('week', c.eseguito_il) as settimana,
round(100.0 * count(*) filter (where c.citata) / count(*), 1) as percentuale_citata
from controlli c
join domande d on d.id = c.domanda_id
where d.azienda_id = 'ID-DELLA-AZIENDA'
group by 1
order by 1;Controllo programmato ogni lunedì
Fa partire da solo il controllo ogni lunedì alle 6. Richiede le estensioni pg_cron e pg_net attive in Supabase.
select cron.schedule(
'controllo-settimanale',
'0 6 * * 1', -- ogni lunedì alle 6:00
$
select net.http_post(
url := 'https://TUO-PROGETTO.supabase.co/functions/v1/controllo',
headers := jsonb_build_object('Authorization', 'Bearer TUA-CHIAVE-CRON')
);
$
);Istruzioni per l'AI: genera-domande
Le istruzioni fisse che la Edge Function "genera-domande" dà a Claude, che risponde in JSON. Il resto della funzione (accesso, crediti, rimborso se l'AI rifiuta) è uguale per tutti i progetti: è nella guida "Chiamare l'AI dal server".
Scrivi 20 domande che un potenziale cliente farebbe a un assistente AI per trovare un'azienda come quella descritta, nella sua città. Domande brevi e naturali, in italiano. Rispondi solo con un JSON: {"domande": ["..."]}.
Pezzi comuni a tutti i progetti
- Pagamenti con Stripe
- Profili, piano e crediti
- Chiamare l'AI dal server
- Controllo finale prima di pubblicare
Glossario
- Cron
- Un'operazione programmata che parte da sola a orari fissi, per esempio ogni lunedì mattina.