Identificare i nuovi lead di vendita sul campo con Places Insights

La generazione di lead convenzionale da azienda ad azienda spesso si basa sull'acquisto di directory statiche o elenchi di settore per definire il potenziale del territorio. Tuttavia, questi set di dati di punti di interesse (POI) statici diventano obsoleti quasi immediatamente. Poiché spesso mancano di uno stato di attività aggiornato o di una categorizzazione granulare del tipo di luogo, i team di vendita sul campo rischiano di perdere tempo prezioso a cercare attività chiuse definitivamente, classificate in modo errato o irrilevanti per il loro profilo cliente ideale.

Questa guida fornisce un flusso di lavoro per colmare questa lacuna utilizzando Places Insights e la Places API. Mappando il tuo attuale portafoglio clienti con gli ID luogo, puoi utilizzare BigQuery per isolare ogni attività operativa in un territorio che non è già presente nel database del tuo sistema di gestione delle relazioni con i clienti (CRM) . Questa guida ti mostra come creare questo motore di esclusione per fornire ai tuoi rappresentanti sul campo un elenco di lead verificati e con targeting specifico.

Diagramma che mostra i dati CRM esistenti elaborati utilizzando l'API Places e BigQuery
Places Insights per generare nuovi lead verificati.

Esempio di applicazione

Supponiamo che un fornitore di point of sale (POS) stia pianificando un'espansione delle vendite sul campo a New York City. In genere, l'organizzazione estrarrebbe un report sul numero totale di esercizi di ristorazione per codice postale. Questo approccio comporta il rischio che i rappresentanti vendite si affidino a dati inattivi, come le sedi chiuse definitivamente, o a lead irrilevanti, come una cucina di catering privata senza negozio fisico. Immagina invece un approccio modernizzato che utilizza Places Insights, che sfrutta la scalabilità globale di Google Maps e i dati aggiornati convalidati da più fonti. Places Insights supporta quasi 500 categorie di luoghi e oltre 70 attributi, il che ti consente di perfezionare i tuoi potenziali clienti con elevata precisione in base a tipi di attività specifici (ad es. scandinavian_restaurant), orari di apertura e offerte di servizi (ad es. accepts_credit_cards). Incrociando Places Insights con il tuo CRM interno, puoi fornire al tuo team di vendita un elenco di potenziali clienti non contattati e con targeting specifico.

Flusso di lavoro della soluzione

Questa guida fornisce un framework tecnico per creare una "mappa dei lead" dinamica che filtra automaticamente il tuo attuale portafoglio clienti, lasciando solo i nuovi lead operativi che il tuo team di vendita può perseguire.

L'architettura in quattro passaggi

  1. Definisci i tipi di luoghi target: mappa i profili cliente ideali con i tipi di luoghi.
  2. Identifica le aree con un elevato potenziale: esegui le funzioni di conteggio dei luoghi in BigQuery per generare mappe termiche di densità delle attività target operative.
  3. Normalizza i dati CRM con gli ID luogo: elabora i record CRM non strutturati tramite una pipeline di pulizia dei dati, utilizzando le API Address Validation, Geocoding e Places, per trovare gli ID luogo dei tuoi clienti esistenti.
  4. Esegui l'esclusione dello spazio bianco: unisci gli ID luogo del CRM ai dati di Places Insights in BigQuery per filtrare dinamicamente i clienti esistenti e generare un elenco di nuovi lead.

Prerequisiti

Prima di iniziare, assicurati di avere quanto segue:

  • Progetto Google Cloud:

    • Un progetto Google Cloud con la fatturazione abilitata.
  • Accesso ai dati:

    • Abbonamento a Places Insights in BigQuery.
    • Il tuo set di dati CRM (ad es. una tabella BigQuery) contenente i nomi e gli indirizzi delle attività dei clienti esistenti da utilizzare come elenco di esclusione.
  • Google Maps Platform:

  • Autorizzazioni IAM:

    • Assicurati che l'utente o il service account disponga dei seguenti IAM ruoli per eseguire query e gestire il set di dati:
      Ruolo ID
      BigQuery Data Editor roles/bigquery.dataEditor
      Utente BigQuery roles/bigquery.user
  • Consapevolezza dei costi:

    • Questo tutorial utilizza i componenti fatturabili di Google Cloud. Tieni presente i potenziali costi relativi a:
      • BigQuery: addebito per gli slot di calcolo utilizzati o i dati elaborati durante l'esecuzione delle query.
      • Places Insights: addebito in base all'utilizzo delle query.
      • Google Maps Platform: addebito per richiesta per le API Address Validation, Geocoding e Ricerca testuale.

Passaggio 1: definisci i tipi di luoghi target

Places Insights supporta quasi 500 categorie di luoghi e oltre 70 attributi (ad es. orari di apertura, tipi di pagamento e stato operativo). Eseguire query sull'intero set di dati in modo indiscriminato è inefficiente e costoso.

Come passaggio fondamentale, utilizza un LLM come Gemini per tradurre i profili cliente interni in tipi di luoghi, utilizzati durante la creazione di una query per Places Insights. Questa definizione della tassonomia a livello macro garantisce che le successive ricerche BigQuery siano altamente mirate, riducendo il sovraccarico di elaborazione del calcolo.

Ad esempio, se stai progettando un flusso di lavoro per un sistema point of sale, puoi fornire a Gemini l'elenco dei tipi di luoghi e utilizzare il seguente prompt:

"Sei un analista di mercato. Tra i tipi di luoghi di Google Maps supportati, quali sono i target principali per un fornitore di sistemi point of sale? Giustifica la tua decisione."

In base a questo prompt, Gemini analizzerà la tassonomia e restituirà un sottoinsieme mirato di tipi di luoghi pertinenti da utilizzare nel filtro types di BigQuery:

Categoria principale Giustificazione Tipi di luoghi chiave
Cibo e bevande Richiede l'elaborazione rapida delle transazioni, la gestione dei tavoli, l'emissione di biglietti per gli ordini e la gestione delle mance. restaurant, bar, cafe, coffee_shop
Shopping Necessita di un monitoraggio robusto dell'inventario, della scansione dei codici a barre, dell'elaborazione dei resi e delle integrazioni di fidelizzazione. clothing_store, grocery_store, supermarket, convenience_store
Servizi e salute e benessere Richiede la prenotazione, la pianificazione, i profili cliente e il monitoraggio delle commissioni integrati degli appuntamenti. hair_salon, beauty_salon, spa, massage
Intrattenimento, svago e sport Richiede una gestione rapida delle corse dei clienti, la scansione dei biglietti digitali e la vendita rapida di concessioni. movie_theater, amusement_park, bowling_alley, stadium

Ai fini di questa guida, ci concentreremo sui tipi di luoghi suggeriti per la categoria Cibo e bevande.

Passaggio 2: estrai i conteggi delle attività per identificare le aree con un elevato potenziale

Per individuare le aree di opportunità, devi prima avere una visione macro della densità delle attività. Puoi farlo eseguendo le funzioni di conteggio dei luoghi (ad es. PLACES_COUNT_PER_H3 o PLACES_COUNT_PER_GEO) in BigQuery.

Sebbene tu possa eseguire query direttamente sul set di dati, le funzioni di conteggio dei luoghi sono query SQL predefinite e ottimizzate che non applicano la soglia di aggregazione standard di un minimo di 5 luoghi (le query dirette standard ometteranno le righe con 1-4 attività; tuttavia, queste funzioni ti consentono di vedere esattamente dove esiste anche un singolo potenziale cliente). Fondamentalmente, queste funzioni restituiscono un array di un massimo di 250 ID luogo per area geografica utilizzando la colonna sample_place_ids. In questo modo, i pianificatori del territorio dispongono sia della mappa termica statistica sia degli identificatori di base necessari per la generazione di lead.

La query seguente mostra come recuperare dinamicamente un poligono complesso (l'intero confine di New York City) utilizzando un set di dati pubblico e quindi passare la geografia alla funzione di conteggio dei luoghi. Utilizzando l'indice spaziale H3 con una risoluzione più ampia (8) in tutta la città, puoi generare una mappa di densità a livello macro.

Inoltre, selezionando tutte le colonne (SELECT *), la funzione restituisce la colonna geography, un poligono che rappresenta la cella H3. In questo modo, puoi importare immediatamente i risultati di BigQuery negli strumenti di business intelligence (ad es. Looker Studio) per creare visualizzazioni di mappe riempite che rivelano visivamente gli hotspot di mercato.

-- Illustrative logic: Extracting target business counts per H3 cell across New York City
DECLARE geo GEOGRAPHY;

-- Get the geography for New York City using the Overture Maps public dataset
SET geo = (SELECT geometry FROM `bigquery-public-data.overture_maps.division_area`
  WHERE country = 'US' AND subtype = 'locality' AND names.primary = 'New York' LIMIT 1);

SELECT *
FROM `YOUR_PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_H3`(
  JSON_OBJECT(
      'geography', geo,
      'h3_resolution', 8,
      'types',['restaurant', 'bar', 'cafe', 'coffee_shop'],
      'business_status', ['OPERATIONAL']
  )
)
ORDER BY count DESC;

Visualizzazione della mappa che mostra esagoni H3 verdi di varia opacità su New York
City, che indicano un'elevata densità di attività a Manhattan.

Come si vede nella visualizzazione risultante, ci sono aree di attività target con una densità nettamente elevata in tutta Manhattan. Per il resto di questo documento, ci concentreremo su una di queste zone con un elevato potenziale: l'area vicino a Union Square.

Passaggio 3: normalizza i dati CRM con gli ID luogo

Per eseguire un'analisi di esclusione, devi prima tradurre i record CRM in ID luogo. Poiché i dati CRM sono spesso non strutturati, il passaggio di testo non elaborato alle API di ricerca produce tassi di corrispondenza bassi. Utilizza questa pipeline in due passaggi per pulire gli indirizzi, tenere conto della copertura API regionale e assicurarti di estrarre gli ID luogo degli esercizi corretti per BigQuery.

Supponiamo di avere i seguenti 5 clienti di ristoranti nel tuo CRM con sede a New York City:

Nome luogo Indirizzo
Boucherie Union Square 225 Park Ave S, New York, NY 10003, Stati Uniti
Gramercy Tavern 42 E 20th St, New York, NY 10003, Stati Uniti
Barn Joo Union Square 35 Union Square W, New York, NY 10003, Stati Uniti
LOS TACOS No.1 200 Park Ave S, New York, NY 10003, Stati Uniti
Union Square Cafe 101 E 19th St, New York, NY 10003, Stati Uniti

Poiché questi record sono costituiti da testo non strutturato, non puoi unirli direttamente ai dati di Places Insights in BigQuery. Elabora invece ogni riga tramite la seguente pipeline per standardizzare il testo ed estrarre l'ID luogo.

Passaggio 3a: pulizia degli indirizzi e corrispondenza diretta

Standardizza prima i dati degli indirizzi. Scegli l'API in base al paese target:

Opzione 1: API Address Validation

Per le regioni supportate, passa il nome dell'attività e l'indirizzo CRM concatenati all'API. Esamina l'array result.geocode.placeTypes della risposta:

  • Corrispondenza con l'esercizio: se contiene establishment o point_of_interest, l'API ha risolto correttamente l'attività. Aggiungi questo placeId al set di dati e passa al record CRM successivo. Non sono necessarie ulteriori chiamate API per questa voce.
  • Corrispondenza non con l'esercizio: se non contiene questi tipi di attività, l'API non è riuscita a confermare in modo definitivo l'organizzazione aziendale. L'ID luogo restituito rappresenta un elemento geografico (ad es. un edificio, una strada o una città). Non utilizzare questo ID luogo per BigQuery, perché le unioni di esclusione non andranno a buon fine. Salva invece result.address.formattedAddress e procedi al passaggio 3b.

Opzione 2: Geocoding API

Per le regioni non supportate da Address Validation, passa solo l'indirizzo CRM all'API Geocoding. Non includere il nome dell'attività, perché l'API Geocoding potrebbe restituire risultati imprevedibili. Estrai il formattedAddress risultante e procedi al passaggio 3b.

Architettura avanzata: gestione dei dati non strutturati con LLM

Se i dati CRM sono di qualità estremamente scarsa, ad esempio nomi e indirizzi delle attività mescolati in un unico campo di note di testo libero, pre-elabora i record con un LLM come Gemini. Puoi chiedere a Gemini di analizzare in modo pulito il nome dell'attività dalla località prima di inserirli in questa pipeline.

Passaggio 3b: risolvi l'entità dell'attività

Se il passaggio 3a restituisce solo un indirizzo pulito, concatenalo con il nome dell'attività CRM originale e passalo a API di ricerca testuale. La standardizzazione dell'indirizzo migliora notevolmente il tasso di corrispondenza.

Per ottimizzare le prestazioni e i costi, utilizza una maschera di campo (X-Goog-FieldMask: places.id) e imposta "pageSize": 1 per assicurarti che venga restituito solo l'ID luogo della corrispondenza principale.

Esempio di richiesta di ricerca testuale:

curl -X POST -d '{
  "textQuery" : "Gramercy Tavern 42 E 20th St, New York, NY 10003-1324, USA",
  "pageSize": 1
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: places.id' \
'https://places.googleapis.com/v1/places:searchText'

Output della pipeline

Dopo aver elaborato i record CRM tramite questa pipeline in due passaggi, indipendentemente dal fatto che l'ID sia stato estratto correttamente nel passaggio 3a o risolto utilizzando la Ricerca testuale nel passaggio 3b, l'obiettivo finale è aggiungere una nuova colonna place_id al set di dati. La tabella risultante è ora pronta per essere caricata in BigQuery come elenco di esclusione.

Nome luogo Indirizzo ID luogo
Boucherie Union Square 225 Park Ave S, New York, NY 10003, Stati Uniti ChIJc1Vf7KFZwokR1YL2Rn9oxi8
Gramercy Tavern 42 E 20th St, New York, NY 10003, Stati Uniti ChIJvSQIgqFZwokRFYQbJdzceSs
Barn Joo Union Square 35 Union Square W, New York, NY 10003, Stati Uniti ChIJQ7XpyqNZwokRQpVfvGEViWM
LOS TACOS No.1 200 Park Ave S, New York, NY 10003, Stati Uniti ChIJFZh0PABZwokRVzoJu0o-mLY
Union Square Cafe 101 E 19th St, New York, NY 10003, Stati Uniti ChIJxTHke6JZwokRCLWVd99eDBw

Passaggio 4: esegui l'analisi di esclusione dello spazio bianco in BigQuery

Con i clienti esistenti mappati con gli ID luogo, utilizza le funzioni di conteggio dei luoghi per trovare i nuovi lead.

In questo esempio, cercheremo le attività target operative (ristoranti, bar, caffè e caffetterie) in un raggio di 850 metri da Union Square (40.73595, -73.99043). Per ottenere una visualizzazione più granulare per il routing a livello di strada, aumenteremo la funzione PLACES_COUNT_PER_H3 alla risoluzione 10.

Poiché la funzione restituisce gli ID luogo come array nella colonna sample_place_ids, dobbiamo UNNEST l'array per inserire ogni potenziale attività nella propria riga. Quindi, eseguiamo un LEFT JOIN con gli ID luogo dei clienti noti.

Per dimostrare che la logica di esclusione funziona per questa dimostrazione, la query seguente utilizza un'istruzione CASE per contrassegnare i risultati anziché filtrarli completamente. Ordina anche in modo esplicito i clienti esistenti nella parte superiore della tabella dei risultati in modo da poter verificare che siano stati abbinati correttamente.

La query SQL

WITH existing_customers AS (
  -- 1. Simulate the uploaded CRM table
  SELECT * FROM UNNEST([
    'ChIJc1Vf7KFZwokR1YL2Rn9oxi8', -- Boucherie Union Square
    'ChIJvSQIgqFZwokRFYQbJdzceSs', -- Gramercy Tavern
    'ChIJQ7XpyqNZwokRQpVfvGEViWM', -- Barn Joo Union Square
    'ChIJFZh0PABZwokRVzoJu0o-mLY', -- LOS TACOS No.1
    'ChIJxTHke6JZwokRCLWVd99eDBw'  -- Union Square Cafe
  ]) AS place_id
),

target_area_businesses AS (
  -- 2. Query Places Insights for target businesses in the radius
  SELECT
    h3_cell_index,
    place_id
  FROM `places_insights___us.PLACES_COUNT_PER_H3`(
    JSON_OBJECT(
      'geography', ST_GEOGPOINT(-73.99043, 40.73595),
      'geography_radius', 850,
      'h3_resolution', 10,
      'types',['restaurant', 'bar', 'cafe', 'coffee_shop'],
      'business_status', ['OPERATIONAL']
    )
  ),
  UNNEST(sample_place_ids) AS place_id
)

-- 3. The "Proof" Output: Flag them instead of filtering them out
SELECT
  t.h3_cell_index,
  t.place_id,
  -- Flag whether the LEFT JOIN found a match in the CRM table
  CASE
    WHEN e.place_id IS NOT NULL THEN 'Existing Customer (To Be Excluded)'
    ELSE 'Net-New Lead'
  END AS lead_status,
  CONCAT('https://www.google.com/maps/search/?api=1&query=Place&query_place_id=', t.place_id) AS actionable_maps_url
FROM target_area_businesses t
LEFT JOIN existing_customers e
  ON t.place_id = e.place_id
ORDER BY
  -- Explicitly sort the existing customers to the top (0 comes before 1)
  CASE WHEN e.place_id IS NOT NULL THEN 0 ELSE 1 END ASC;

Risultati query

Ecco un estratto dell'output della query, che mostra come i clienti esistenti vengono identificati e separati correttamente dai nuovi lead all'interno delle stesse celle H3 granulari.

Nota come la query utilizza un'istruzione CONCAT per creare un URL di Maps multipiattaforma, utilizzando place_id. In questo modo viene generata automaticamente la colonna actionable_maps_url, che fornisce al tuo team di vendita un link immediato su cui fare clic per caricare l'attività esatta nell'app mobile Google Maps o in un browser.

h3_cell_index place_id lead_status actionable_maps_url
8a2a100d2767fff ChIJQ7XpyqNZwokRQpVfvGEViWM Cliente esistente (da escludere) https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJQ7XpyqNZwokRQpVfvGEViWM
8a2a100d20effff ChIJvSQIgqFZwokRFYQbJdzceSs Cliente esistente (da escludere) https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJvSQIgqFZwokRFYQbJdzceSs
8a2a100d2397fff ChIJc1Vf7KFZwokR1YL2Rn9oxi8 Cliente esistente (da escludere) https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJc1Vf7KFZwokR1YL2Rn9oxi8
8a2a100d2397fff ChIJFZh0PABZwokRVzoJu0o-mLY Cliente esistente (da escludere) https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJFZh0PABZwokRVzoJu0o-mLY
8a2a100d23b7fff ChIJxTHke6JZwokRCLWVd99eDBw Cliente esistente (da escludere) https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJxTHke6JZwokRCLWVd99eDBw
8a2a1072c96ffff ChIJ6atD-WRZwokRULgcZ4TWin8 Nuovo lead https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJ6atD-WRZwokRULgcZ4TWin8
8a2a1072c96ffff ChIJ09yg-llZwokRKAgp0jg6TCU Nuovo lead https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJ09yg-llZwokRKAgp0jg6TCU

Visualizza i lead con Places UI Kit

Anziché fornire un URL di Maps non elaborato, puoi passare direttamente gli place_ids a Places UI Kit per creare una dashboard di generazione di lead interna e completa per il tuo team di vendita. Disponibile su tutte le piattaforme, puoi inserire i componenti predefiniti per web, Android, e iOS. Questi componenti mostrano automaticamente dati POI completi, come foto, valutazioni e orari di apertura, senza richiedere la scrittura di codice UI frontend o la gestione manuale delle risposte API.

Limiti dei dati

Le funzioni di conteggio dei luoghi restituiscono un massimo di 250 ID luogo per cella geografica nell'array sample_place_ids. Se un'area è estremamente densa, l'elenco di lead generato per quella cella specifica sarà limitato a 250. Per assicurarti di acquisire tutti i lead nei mercati ad alta densità, ti consigliamo di seguire una delle strategie riportate di seguito:

  • Utilizza filtri di query specifici: anziché raggruppare più tipi in una query (come nell'esempio precedente), esegui query separate per ogni tipo di luogo.
  • Riduci l'ambito spaziale: riduci l'area di ricerca complessiva utilizzando un geography_radius più piccolo oppure dividi l'area in bucket più piccoli e granulari aumentando la risoluzione H3 (fino alla risoluzione 11).
  • Regola la risoluzione in base alla densità: quando analizzi territori con densità di popolazione variabili, regola dinamicamente le dimensioni della ricerca per evitare di raggiungere il limite di 250 ID luogo. Utilizza una risoluzione H3 più ampia (ad es. 6 o 7) o un geography_radius più grande nelle aree rurali in cui le attività sono distribuite. Al contrario, utilizza una risoluzione molto granulare (ad es. 10 o 11) nelle aree urbane dense per assicurarti di acquisire ogni potenziale lead senza troncare l'elenco.

Query di produzione

Una volta verificato che i clienti esistenti siano stati identificati correttamente, puoi ripristinare la versione di produzione della query. Sostituisci il blocco SELECT finale con la seguente clausola WHERE per filtrare in modo permanente il tuo attuale portafoglio clienti:

SELECT
  t.h3_cell_index,
  t.place_id,
  CONCAT('https://www.google.com/maps/search/?api=1&query=Place&query_place_id=', t.place_id) AS actionable_maps_url
FROM target_area_businesses t
LEFT JOIN existing_customers e
  ON t.place_id = e.place_id
WHERE e.place_id IS NULL; -- Filters out the CRM matches

Governance e conformità dell'architettura

Per mantenere un sistema conforme e con prestazioni più elevate, rispetta questi standard:

  1. ID luogo come identificatore persistente: oltre all'ID luogo, i Termini di servizio di Google Maps vietano di archiviare o memorizzare nella cache i singoli dati POI restituiti dall'API Places (ad es. numeri di telefono e dettagli di contatto).Utilizza gli ID luogo come identificatore persistente per l'analisi ricorrente dello spazio bianco.
  2. Assicurati che gli attributi siano aggiornati con le chiamate API in tempo reale: utilizza gli ID luogo per effettuare chiamate "just-in-time" all'API Place Details per assicurarti che il tuo venditore disponga delle informazioni di contatto e sull'attività più aggiornate per il luogo. In alternativa, come mostrato nell'output della query, puoi creare dinamicamente gli URL di Google Maps per fornire al tuo team di vendita link diretti ai profili dell'attività su Google Maps.

Conclusione

Standardizzando l'ID luogo come chiave primaria, hai colmato con successo il divario tra l'analisi di mercato di alto livello e le operazioni di vendita pratiche a livello di base. Questa architettura aggira le imprecisioni del targeting convenzionale basato sulla popolazione, utilizza il data warehousing serverless per le unioni di calcolo pesanti e rispetta rigorosamente le best practice di gestione dei costi e conformità a livello di API.

Azioni successive

  • Richiedi l'accesso al set di dati di esempio di Places Insights sample dataset.
  • Abbonati al set di dati di Places Insights utilizzando gli elenchi di scambio di dati BigQuery per accedere ai dati di esempio o completi del paese.
  • Consulta il riferimento dei parametri di filtro per perfezionare le query SQL di BigQuery in base agli attributi e ai tipi di attività.
  • Implementa le ricerche dinamiche dell'API Places nella tua applicazione CRM o di routing delle vendite per esporre i dettagli di contatto aggiornati e conformi per i nuovi lead generati.

Collaboratori