Un acquirente entra in agenzia con una lista di desideri: tre camere, giardino, budget massimo 250.000 euro, zona nord-est della città. Tre settimane dopo, non gli avete ancora proposto nulla di pertinente. Lui si è già rivolto a un competitor. Il problema non è la mancanza di immobili in portafoglio: è l’assenza di un sistema che faccia incontrare automaticamente la domanda con l’offerta. Noi, di Meteora Web, lo vediamo ogni giorno nei software gestionali che ci commissionano: il match automatico non è un lusso, è il motore che trasforma una banca dati in vendite.
In questa guida vi mostriamo come costruire un sistema di matching che funzioni davvero: dietro le quinte, con logica, dati puliti e due righe di codice che fanno la differenza.
Come funziona il match automatico tra richieste e immobili?
Il match automatico è un processo software che confronta i criteri di ricerca di un cliente (richiesta) con le caratteristiche di ogni immobile in archivio e calcola un punteggio di affinità. Il sistema presenta poi all’agente gli immobili con il punteggio più alto, oppure invia una notifica automatica al cliente se la corrispondenza supera una soglia.
Sponsored Protocol
La logica di base è semplice: più criteri corrispondono, più il punteggio sale. Ma la semplicità si ferma qui. Nella pratica, i criteri hanno pesi diversi: la zona è quasi sempre più importante del numero di bagni. Un budget sforato del 5% può essere negoziabile; un piano terra senza ascensore per un cliente con mobilità ridotta è un no definitivo.
Ecco una struttura tipica di regole che usiamo nei nostri progetti:
- Criteri bloccanti (esclusione diretta): budget massimo, tipo immobile (appartamento vs villa), zona obbligatoria. Se non corrispondono, l’immobile viene scartato subito.
- Criteri pesati (punteggio): superficie, numero stanze, piano, presenza ascensore, giardino, box auto, anno di costruzione, classe energetica.
- Criteri bonus (moltiplicatori): stesso quartiere esatto, disponibilità immediata, prezzo inferiore al budget.
Un errore comune è trattare tutti i criteri allo stesso modo. Noi partiamo sempre da un’analisi dei dati storici: quali caratteristiche hanno portato a una vendita effettiva? Quelle diventano i pesi dominanti.
Sponsored Protocol
Cosa fa la differenza rispetto a un semplice filtro?
Un filtro tradizionale (tipo “casa con giardino E budget < 250k”) dà zero risultati anche se esiste un immobile con giardino a 255k. Un sistema a punteggio lo mostrerebbe comunque con un punteggio leggermente inferiore, lasciando all’agente la decisione. È questo che vende di più.
Esempio operativo: Prendiamo la richiesta reale di un cliente: trilocale, 80-100 mq, centro storico, budget 200.000 €. Nel database ci sono due immobili:
- Immobile A: trilocale, 85 mq, centro storico, 195.000 € → punteggio 100%
- Immobile B: trilocale, 90 mq, a 500 m dal centro storico (zona adiacente), 210.000 € → punteggio 75% (perde zona e supera budget del 5%)
Con un filtro booleano, B non verrebbe mai proposto. Con il matching pesato, l'agente vede B e può valutare se il cliente accetterebbe la zona adiacente in cambio di 5 mq in più. Spesso funziona.
Quali dati servono per un matching efficace?
Il matching automatico vale quanto i dati che lo alimentano. Se l’archivio immobili ha campi vuoti, dati incoerenti o formati diversi, il sistema produce risultati inaffidabili. Noi lo abbiamo imparato gestendo il sistema ERP di un negozio di abbigliamento: senza dati di magazzino puliti, le giacenze erano sbagliate e gli ordini cliente andavano persi. Per il matching immobiliare è lo stesso.
Sponsored Protocol
Ecco la checklist minima di campi che ogni immobile deve avere strutturati:
- Indirizzo o coordinate geografiche (lat/lon o poligoni di zona)
- Tipologia (appartamento, villa, attico, loft, …) – usa una tassonomia chiusa, non testo libero
- Superficie in mq, con tolleranza accettata (es. ±10%)
- Numero camere da letto e bagni
- Piano e presenza ascensore
- Classe energetica (da A4 a G)
- Prezzo richiesto e prezzo minimo accettato (per negoziazione)
- Data disponibilità
- Caratteristiche extra (giardino, box, terrazzo, climatizzazione, arredato, ecc.) – da normalizzare come flag booleani
Sul fronte richieste cliente, servono gli stessi campi più un grado di flessibilità per ciascun parametro (es. “budget fino a 220k”, “zona anche limitrofa”, “piano terra o primo piano”).
Sponsored Protocol
Come normalizzare i dati geografici per il match di zona
La zona è spesso il criterio più importante. Un modo robusto per gestirlo è assegnare a ogni immobile un codice di zona gerarchico (quartiere → macrozona → città) e fare il match non solo sulla zona esatta ma anche su quelle adiacenti con peso ridotto. In SQL, puoi usare una tabella di adiacenza:
-- Tabella zone con adiacenze
CREATE TABLE zone_adiacenze (
zona_id INT,
zona_adiacente_id INT,
peso DECIMAL(3,2) DEFAULT 0.5 -- peso per match su zona adiacente
);
-- Query di match: restituisce gli immobili della zona richiesta o adiacenti
SELECT i.*,
CASE WHEN i.zona_id = r.zona_id THEN 1.0
ELSE COALESCE(za.peso, 0)
END AS peso_zona
FROM immobili i
JOIN richieste r ON ...
LEFT JOIN zone_adiacenze za ON i.zona_id = za.zona_adiacente_id
AND r.zona_id = za.zona_id
WHERE i.prezzo <= r.budget_max * 1.1; -- tolleranza 10%
Questo approccio è semplice, veloce e manutenibile. Se vuoi ancora più precisione, integra un servizio di geocoding (es. Google Maps API) e calcola la distanza in metri tra due punti.
Come implementare un sistema di matching senza commettere errori?
L’errore più comune è pensare che basti un software “chiavi in mano”. In realtà, il matching automatico richiede un’evoluzione continua: i pesi vanno calibrati sui dati reali, le soglie di cutoff vanno testate, e il feedback dell’agente (perché un match è stato scartato?) va registrato per migliorare l’algoritmo.
Sponsored Protocol
Noi, di Meteora Web, abbiamo costruito una piattaforma proprietaria per la gestione di clienti multipli (non immobiliare, ma la logica è analoga). Il punto chiave è stato rendere visibile il punteggio a chi opera: l’agente deve capire perché quel punteggio è 75 e non 100. Senza trasparenza, il sistema viene ignorato.
Algoritmo di base a punteggio pesato (pseudocodice)
def calcola_punteggio(immobile, richiesta):
punteggio = 0
peso_totale = 0
# Criteri bloccanti: se non passano, return 0
if immobile.prezzo > richiesta.budget_max * (1 + richiesta.tolleranza_prezzo):
return 0
if immobile.tipo not in richiesta.tipi_accettati:
return 0
# ... altri criteri bloccanti
# Criteri pesati
criteri = [
(immobile.superficie, richiesta.superficie_min, richiesta.superficie_max, 20),
(immobile.n_camere, richiesta.n_camere_min, richiesta.n_camere_max, 15),
(immobile.piano, richiesta.piano_min, richiesta.piano_max, 10),
(richiesta.ascensore_richiesto, immobile.ascensore, 10), # binario
(richiesta.giardino_richiesto, immobile.giardino, 5),
# ... aggiungi altri
]
for valore, min, max, peso in criteri:
if min <= valore <= max:
punteggio += peso
elif valore < min:
punteggio += peso * (valore / min) # penalità proporzionale
else:
punteggio += peso * (max / valore)
peso_totale += peso
# Bonus: zona esatta
if immobile.zona == richiesta.zona:
punteggio += 30
peso_totale += 30
return (punteggio / peso_totale) * 100 if peso_totale > 0 else 0
Attenzione: questo è un esempio didattico. In produzione, gestisci anche la distanza geografica, la data di disponibilità, e usa pesi normalizzati rispetto ai dati storici delle conversioni.
La qualità dei dati è il vero collo di bottiglia
Se l’immobile ha il campo “superficie” scritto come “100 mq” e un altro come “100”, il confronto numerico fallisce. Noi abbiamo visto casi in cui il 40% degli immobili aveva campi vuoti o inconsistenti. Senza pulizia, qualsiasi algoritmo è inutile.
Checklist di verifica dati (mensile):
- Controlla che tutti i campi numerici siano effettivamente numerici e non testo
- Valida i valori anomali (es. prezzo 1.000.000.000 per un monolocale)
- Verifica che le zone siano codificate nello stesso identico modo (usa un dropdown, non un input libero)
- Imposta campi obbligatori per almeno 8 caratteristiche fondamentali
Quali strumenti usare per implementare il match?
Non serve un sistema di intelligenza artificiale. Un buon SQL, un backend PHP o Python e un po’ di logica sono sufficienti. Se usi un CRM immobiliare esistente, verifica se espone webhook o API per leggere immobili e richieste. Noi abbiamo integrato sistemi con Laravel + Livewire per la UI e code SQL per il matching batch.
Se preferisci una soluzione pronta, valuta piattaforme come Rethink o Luxury Presence (per il mercato US), ma attento ai costi ricorrenti e alla proprietà dei dati. Come diciamo sempre: possedere il proprio stack batte affittarlo.
Per chi vuole approfondire l’algoritmo di matching con approccio vettoriale (cosine similarity), consigliamo la lettura della documentazione ufficiale di scikit-learn cosine_similarity – utile se hai molti attributi categorici da confrontare.
Cosa fare adesso
- Audit dei dati esistenti: Scarica l’elenco di tutti gli immobili e verifica la completezza e la coerenza dei campi. Crea un report dei campi mancanti.
- Definisci i criteri bloccanti e i pesi con il tuo team commerciale: cosa rende un immobile assolutamente non proponibile? Quali sono i 3 fattori che contano di più per i tuoi clienti tipici?
- Implementa un prototipo di matching a punteggio su un sottoinsieme di dati (es. solo 50 immobili e 10 richieste). Testa i risultati manualmente con gli agenti.
- Raccogli feedback per ogni match non accolto: “perché non hai chiamato il cliente per questo immobile?”. Registra il motivo e aggiusta i pesi.
- Automatizza il processo con una notifica (email o push) all’agente quando un nuovo immobile ottiene un punteggio > 80% su una richiesta aperta.
Il match automatico non è magia: è disciplina dei dati e logica ben calibrata. Noi, di Meteora Web, lo applichiamo da anni nei software che sviluppiamo per agenzie e retailer. Se vuoi vederlo funzionare in un contesto reale, dai un’occhiata alla nostra pagina dedicata ai software per agenzie immobiliari.
Zenith Real Estate è la piattaforma all-in-one per gestire la tua attività — clienti, agenda, scadenze, fatturazione e promemoria WhatsApp, tutto da browser. Senza installare nulla.
Scopri Zenith Real Estate →