Il problema del monitoraggio manuale

I portali immobiliari hanno sistemi di alert rudimentali. L'email arriva in ritardo, spesso per annunci irrilevanti, e richiede comunque di aprire il sito, fare lo scroll, leggere le descrizioni per capire se vale la pena approfondire. Il risultato è un ciclo frustrante: o controlli spesso e perdi tempo, o controlli poco e rischi di perdere l'occasione.

Il vero problema non è la velocità — è il filtraggio. Il prezzo può essere nei parametri, ma la zona reale no. L'annuncio può dichiarare "vicino al centro" e essere a 12 km. I filtri del portale non leggono le descrizioni: l'AI sì.

L'architettura in 5 componenti

PropertyFinder è un workflow n8n con cinque componenti principali che si attivano ogni 6 ore:

  1. Scheduler: trigger n8n ogni 6 ore, tutto il giorno
  2. HTTP Request: chiama le API di Subito.it con filtri preconfigurati (zona, prezzo minimo/massimo, superficie)
  3. Gemini AI: legge la descrizione completa di ogni annuncio e risponde "pertinente / non pertinente" con motivazione
  4. Deduplication: Google Sheets come registro degli annunci già notificati negli ultimi 30 giorni
  5. Telegram: notifica con link diretto, prezzo, zona e summary generato da Gemini

I componenti 3 e 4 sono quelli che fanno la differenza rispetto a qualsiasi alert nativo del portale.

Il ruolo dell'AI nel filtro

Questa è la parte che trasforma il sistema da un semplice scraper a qualcosa di utile. Il prompt a Gemini è semplice e diretto:

Sei un agente immobiliare. Valuta questo annuncio in base ai miei criteri: zona [X], massimo [Y] €, almeno [Z] mq, non seminterrato, non piano terra se su strada trafficata. Rispondi solo "pertinente" o "non pertinente" con una riga di motivazione.

Il modello legge l'intera descrizione dell'annuncio, non solo i metadati. Distingue tra "quartiere residenziale tranquillo" e "adiacente alla tangenziale". Capisce quando un box auto è incluso nel prezzo o venduto separatamente. Filtra i box-auto presentati come appartamenti (sì, succede).

Solo gli annunci classificati come "pertinenti" arrivano su Telegram. Nessun falso positivo, nessun rumore.

La deduplication su Google Sheets

Ogni annuncio su Subito ha un ID univoco nell'URL. Prima di inviare qualsiasi notifica, il workflow controlla se quell'ID è già presente nel foglio Google. Se c'è: skip. Se non c'è: notifica + aggiunta al foglio con timestamp.

Il foglio funziona come una coda a finestra scorrevole: ogni mese pulisco le righe più vecchie di 30 giorni. Questo permette di rinotificare annunci che nel frattempo sono stati aggiornati con un prezzo diverso, senza continuare ad accumulare dati.

Google Sheets è la scelta più pragmatica qui. Potrebbe essere un database SQLite, ma Sheets mi permette di guardare la lista degli annunci già visti dal telefono, senza aprire nessuno strumento.

Risultati dopo 3 mesi

2.400
Annunci monitorati
47
Notifiche ricevute
11
Annunci visitati
2
Trattative avviate
0
Ore/settimana

Il tasso di filtraggio è circa 98%: su 2.400 annunci passati, solo 47 sono arrivati su Telegram. Di quelli, 11 valevano una visita. Tempo dedicato alla ricerca ogni settimana: solo quello di leggere le notifiche quando arrivano.

Come replicarlo

Il workflow JSON è disponibile nel repository pubblico su GitHub. I prerequisiti sono: n8n self-hosted (va bene anche su un Raspberry Pi), una Gemini API key (il tier gratuito copre abbondantemente il volume di richieste), accesso a Google Sheets API.

Il setup iniziale richiede circa 2 ore, prevalentemente per configurare i filtri Subito e le credenziali Google. Dopodiché il sistema gira da solo — l'unica manutenzione ricorrente è pulire il foglio Sheets una volta al mese.

Il vantaggio non è la velocità — è l'attenzione selettiva. Ricevo solo ciò che conta, quando conta. L'AI non trova la casa: ti fa risparmiare il tempo di cercarla nel posto sbagliato.