Выявляйте новых потенциальных клиентов в сфере продаж с помощью Places Insights.

Традиционные методы генерации лидов в сегменте B2B часто основаны на приобретении статических справочников или отраслевых списков для определения потенциала территории. Однако эти статические наборы данных о достопримечательностях (POI) практически сразу устаревают. Поскольку в них часто отсутствует актуальная информация о текущем состоянии или детальная классификация по типу местоположения, отделы продаж рискуют потратить ценное время на поиск компаний, которые окончательно закрыты, неправильно классифицированы или не соответствуют их идеальному профилю клиента.

Это руководство описывает рабочий процесс для устранения этого пробела с помощью Places Insights и Places API . Сопоставив вашу текущую клиентскую базу с идентификаторами мест , вы можете использовать BigQuery для выделения всех действующих предприятий на территории, которые еще не внесены в вашу базу данных управления взаимоотношениями с клиентами (CRM). Это руководство покажет вам, как создать механизм исключения для предоставления вашим сотрудникам на местах высокоцелевого, проверенного списка потенциальных клиентов.

Диаграмма, демонстрирующая обработку существующих данных CRM с использованием Places API и BigQuery. Places Insights для генерации подтвержденных новых потенциальных клиентов.

Пример приложения

Рассмотрим ситуацию, когда поставщик POS-систем планирует расширение продаж в Нью-Йорке. Обычно организация составляет отчет об общем количестве предприятий общественного питания по почтовым индексам. Такой подход сопряжен с риском того, что торговые представители будут полагаться на устаревшие данные, такие как закрывшиеся заведения, или на нерелевантные лиды, например, частные кейтеринговые кухни без физического присутствия. Представьте себе более современный подход с использованием Places Insights, который использует глобальный масштаб Google Maps и актуальные данные, проверенные из множества источников. Places Insights поддерживает почти 500 категорий мест и более 70 атрибутов, что позволяет с высокой точностью определять потенциальных клиентов на основе конкретных типов бизнеса (например, scandinavian_restaurant ), часов работы и предлагаемых услуг (например, accepts_credit_cards ). Сопоставляя данные Places Insights с вашей внутренней CRM-системой, вы можете предоставить вашей команде продаж высокоцелевой список потенциальных клиентов, с которыми еще не удалось связаться.

Рабочий процесс решения

В этом руководстве представлена ​​техническая основа для создания динамической «Карты потенциальных клиентов», которая автоматически отфильтровывает вашу текущую клиентскую базу, оставляя только новые, оперативные потенциальные клиенты для дальнейшей работы вашей команды продаж.

Четырехступенчатая архитектура

  1. Определите целевые типы мест: сопоставьте профили ваших идеальных клиентов с типами мест.
  2. Выявление перспективных областей: использование функций подсчета мест в BigQuery для создания тепловых карт плотности целевых предприятий.
  3. Нормализация данных CRM по идентификаторам мест: обработка неструктурированных записей CRM с помощью конвейера очистки данных, использующего API проверки адресов, геокодирования и мест, для поиска идентификаторов мест для ваших существующих клиентов.
  4. Исключение пробелов: объедините идентификаторы мест из вашей CRM-системы с данными Places Insights в BigQuery, чтобы динамически отфильтровать существующих клиентов и получить список новых потенциальных клиентов.

Предварительные требования

Прежде чем начать, убедитесь, что у вас есть следующее:

  • Проект Google Cloud:

    • Проект Google Cloud с включенной функцией выставления счетов.
  • Доступ к данным:

    • Подписка Places Insights в BigQuery.
    • Ваш собственный набор данных CRM (например, таблица BigQuery), содержащий названия и адреса существующих компаний-клиентов, может служить списком исключений.
  • Платформа Google Maps:

  • Разрешения IAM:

    • Убедитесь, что у вашей учетной записи пользователя или службы есть следующие роли IAM для выполнения запросов и управления набором данных:
      Роль ИДЕНТИФИКАТОР
      Редактор данных BigQuery roles/bigquery.dataEditor
      Пользователь BigQuery roles/bigquery.user
  • Информирование о затратах:

    • В этом руководстве используются платные компоненты Google Cloud. Обратите внимание на возможные затраты, связанные с:
      • BigQuery: Взимается плата за использованные вычислительные ресурсы или обработанные данные во время выполнения запроса.
      • Places Insights: Оплата производится в зависимости от количества запросов.
      • Платформа Google Maps: плата взимается за каждый запрос к API проверки адресов, API геокодирования и API текстового поиска.

Шаг 1: Определите целевые типы мест.

Places Insights поддерживает почти 500 категорий мест и более 70 атрибутов (таких как часы работы магазина, типы оплаты и статус работы). Запрос ко всему набору данных без разбора неэффективен и затратен.

В качестве базового шага используйте LLM-сервис, например Gemini, для преобразования внутренних профилей клиентов в типы мест , которые используются при построении запроса для Places Insights. Такое определение таксономии на макроуровне гарантирует высокую точность последующих поисков в BigQuery, снижая вычислительные затраты.

Например, если вы разрабатываете рабочий процесс для системы учета продаж, вы можете предоставить Gemini список типов мест и использовать следующую подсказку:

«Выступите в роли аналитика рынка. Из поддерживаемых Google Maps типов мест, какие являются основными целевыми объектами для поставщика POS-систем? Обоснуйте свой выбор».

На основе этого запроса Gemini проанализирует таксономию и вернет целевое подмножество соответствующих типов мест для использования в фильтре types BigQuery:

Основная категория Обоснование Ключевые типы мест
Еда и напитки Требуется быстрая обработка транзакций, управление столиками, оформление заказов и обработка чаевых. restaurant , bar , cafe , coffee_shop
Покупки Необходимы надежная система отслеживания запасов, сканирование штрих-кодов, обработка возвратов и интеграция с программами лояльности. clothing_store , grocery_store , supermarket , convenience_store
Услуги и здоровье и благополучие Требуется интегрированная система записи на прием, планирования, создания профилей клиентов и отслеживания комиссионных выплат. hair_salon , beauty_salon , spa , massage
Развлечения, отдых и спорт Требуется оперативное реагирование на наплыв покупателей, сканирование билетов в цифровом формате и быстрое обслуживание в буфете. movie_theater , amusement_park , bowling_alley , stadium

В рамках данного руководства мы сосредоточимся на предлагаемых типах заведений в категории «Еда и напитки» .

Шаг 2: Извлечение данных о количестве предприятий для выявления перспективных районов.

Чтобы точно определить перспективные области, сначала необходимо получить общее представление о плотности бизнеса. Этого можно добиться, выполнив функции подсчета мест (например, PLACES_COUNT_PER_H3 или PLACES_COUNT_PER_GEO ) в BigQuery.

Хотя вы можете напрямую запрашивать данные из набора данных, функции подсчета мест представляют собой предопределенные, оптимизированные SQL-запросы, которые не устанавливают стандартный порог агрегации в 5 минимальных мест (стандартные прямые запросы будут пропускать строки с 1–4 предприятиями; однако эти функции позволяют точно определить местонахождение даже одного потенциального клиента). Важно отметить, что эти функции возвращают массив до 250 идентификаторов мест для каждой географической области, используя столбец sample_place_ids . Это обеспечивает как статистическую тепловую карту для ваших специалистов по планированию территорий, так и базовые идентификаторы, необходимые для генерации лидов.

Следующий запрос демонстрирует, как динамически получить сложный полигон (всю границу Нью-Йорка) с помощью общедоступного набора данных, а затем передать эту географию в функцию Places Count. Используя пространственный индекс H3 с более широким разрешением ( 8 ) по всему городу, можно создать карту плотности макроуровня.

Кроме того, при выборе всех столбцов ( SELECT * ) функция возвращает столбец geography , представляющий собой многоугольник, соответствующий ячейке H3. Это позволяет немедленно импортировать результаты BigQuery в инструменты бизнес-аналитики (например, Looker Studio ) для создания визуализаций в виде заполненных карт, наглядно демонстрирующих ключевые рыночные зоны.

-- 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;

Визуализация карты, показывающая зеленые шестиугольники H3 различной прозрачности над Нью-Йорком, указывающие на высокую плотность деловой активности на Манхэттене.

Как видно из полученной визуализации, на Манхэттене наблюдаются отчетливо выраженные зоны высокой плотности целевых предприятий. В оставшейся части этого документа мы сосредоточим наши усилия по привлечению потенциальных клиентов на одной из этих зон с высоким потенциалом: районе рядом с Юнион-сквер .

Шаг 3: Нормализуйте данные вашей CRM-системы, приведя их к идентификаторам мест.

Для проведения анализа исключений сначала необходимо преобразовать записи CRM в идентификаторы мест (Place ID ). Поскольку данные CRM часто неструктурированы, передача необработанного текста в поисковые API приводит к низким показателям соответствия. Используйте этот двухэтапный конвейер для очистки адресов, учета регионального охвата API и гарантированного извлечения правильных идентификаторов мест для BigQuery.

Предположим, в вашей CRM-системе есть следующие 5 клиентов-ресторанов, расположенных в Нью-Йорке:

Название места Адрес
Бушери Юнион-сквер 225 Park Ave S, Нью-Йорк, штат Нью-Йорк 10003, США
Грамерси Таверн 42 E 20th St, New York, NY 10003, United States
Барн Джу Юнион Сквер 35 Union Square W, Нью-Йорк, штат Нью-Йорк, 10003, США
ЛОС ТАКОС №1 200 Park Ave S, Нью-Йорк, NY 10003, США
Кафе Юнион-сквер 101 E 19th St, New York, NY 10003, United States

Поскольку эти записи представляют собой неструктурированный текст, вы не можете напрямую объединить их с данными Places Insights в BigQuery. Вместо этого обработайте каждую строку с помощью следующего алгоритма, чтобы стандартизировать текст и извлечь идентификатор места (Place ID).

Шаг 3а: Очистка адресов и прямое сопоставление.

Сначала стандартизируйте свои адресные данные. Выбирайте API в зависимости от целевой страны:

Вариант 1: API проверки адреса

Для поддерживаемых регионов передайте в API объединенные название и адрес компании CRM. Проверьте массив result.geocode.placeTypes в ответе:

  • Соответствие по типу предприятия: Если поле содержит establishment или point_of_interest , API успешно определил бизнес-объект. Добавьте этот placeId в свой набор данных и перейдите к следующей записи CRM. Для этой записи дополнительные вызовы API не требуются.
  • Несоответствие типам предприятий: если данные не содержат указанные типы предприятий, API не сможет однозначно подтвердить принадлежность предприятия. Возвращаемый идентификатор места (Place ID) представляет собой географический объект (например, здание, улицу или город). Не используйте этот идентификатор места для BigQuery, так как он приведет к ошибке при использовании исключений. Вместо этого сохраните result.address.formattedAddress и перейдите к шагу 3b.

Вариант 2: API геокодирования

Для регионов, не поддерживаемых проверкой адресов, передавайте в API геокодирования только адрес CRM. Не включайте название компании, так как API геокодирования может возвращать непредсказуемые результаты. Извлеките полученный formattedAddress и перейдите к шагу 3b.

Расширенная архитектура: обработка неструктурированных данных с помощью LLM-систем.

Если ваши данные в CRM крайне некачественные, например, названия и адреса компаний смешаны в одном текстовом поле для заметок, предварительно обработайте записи с помощью LLM-системы, такой как Gemini . Вы можете настроить Gemini на корректное извлечение названия компании из местоположения перед передачей данных в этот конвейер обработки.

Шаг 3b: Разрешение вопросов, связанных с бизнес-субъектом.

Если на шаге 3a возвращается только очищенный адрес, объедините его с исходным названием компании в CRM и передайте в API текстового поиска . Стандартизация адреса перед использованием значительно повышает вероятность совпадения.

Для оптимизации производительности и стоимости используйте маску поля ( X-Goog-FieldMask: places.id ) и установите значение "pageSize": 1 чтобы гарантировать возврат только наиболее подходящего идентификатора места.

Пример запроса на поиск текста:

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'

Выходные данные конвейера

После обработки записей вашей CRM-системы с помощью этого двухэтапного конвейера, независимо от того, был ли идентификатор успешно извлечен на шаге 3a или определен с помощью текстового поиска на шаге 3b, ваша конечная цель — добавить новый столбец place_id в ваш набор данных. Полученная таблица теперь готова к загрузке в BigQuery в качестве списка исключений.

Название места Адрес Идентификатор места
Бушери Юнион-сквер 225 Park Ave S, Нью-Йорк, штат Нью-Йорк 10003, США ChIJc1Vf7KFZwokR1YL2Rn9oxi8
Грамерси Таверн 42 E 20th St, New York, NY 10003, United States ChIJvSQIgqFZwokRFYQbJdzceSs
Барн Джу Юнион Сквер 35 Union Square W, Нью-Йорк, штат Нью-Йорк, 10003, США ChIJQ7XpyqNZwokRQpVfvGEViWM
ЛОС ТАКОС №1 200 Park Ave S, Нью-Йорк, NY 10003, США ChIJFZh0PABZwokRVzoJu0o-mLY
Кафе Юнион-сквер 101 E 19th St, New York, NY 10003, United States ChIJxTHke6JZwokRCLWVd99eDBw

Шаг 4: Выполните анализ исключения пробелов в BigQuery.

Привязав существующих клиентов к идентификаторам мест, используйте функции подсчета мест , чтобы найти новых потенциальных клиентов.

В этом примере мы будем искать целевые предприятия (рестораны, бары, кафе и кофейни) в радиусе 850 метров от Юнион-сквер (40.73595, -73.99043). Для получения более детального представления о маршрутизации на уровне улиц мы увеличим разрешение функции PLACES_COUNT_PER_H3 до 10.

Поскольку функция возвращает идентификаторы мест в виде массива в столбце sample_place_ids , нам необходимо выполнить операцию UNNEST для размещения каждого потенциального предприятия в отдельной строке. Затем мы выполняем операцию LEFT JOIN по известным идентификаторам мест расположения наших клиентов.

Чтобы продемонстрировать работоспособность логики исключения, в приведенном ниже запросе используется оператор CASE для пометки результатов, а не для их полного исключения. Кроме того, он явно сортирует существующих клиентов в самый верх таблицы результатов, чтобы вы могли убедиться в успешном сопоставлении.

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;

Результаты запроса

Ниже приведён фрагмент результатов запроса, демонстрирующий, как существующие клиенты успешно идентифицируются и отделяются от новых потенциальных клиентов в рамках одной и той же детализированной ячейки H3.

Обратите внимание, как запрос использует оператор CONCAT для создания кроссплатформенного URL-адреса Google Maps , используя place_id . Это автоматически генерирует столбец actionable_maps_url , предоставляя вашей команде продаж мгновенную, кликабельную ссылку для загрузки информации о конкретном предприятии в мобильном приложении Google Maps или в браузере.

h3_cell_index place_id lead_status actionable_maps_url
8a2a100d2767fff ChIJQ7XpyqNZwokRQpVfvGEViWM Существующие клиенты (исключаются из списка) https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJQ7XpyqNZwokRQpVfvGEViWM
8a2a100d20effff ChIJvSQIgqFZwokRFYQbJdzceSs Существующие клиенты (исключаются из списка) https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJvSQIgqFZwokRFYQbJdzceSs
8a2a100d2397fff ChIJc1Vf7KFZwokR1YL2Rn9oxi8 Существующие клиенты (исключаются из списка) https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJc1Vf7KFZwokR1YL2Rn9oxi8
8a2a100d2397fff ChIJFZh0PABZwokRVzoJu0o-mLY Существующие клиенты (исключаются из списка) https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJFZh0PABZwokRVzoJu0o-mLY
8a2a100d23b7fff ChIJxTHke6JZwokRCLWVd99eDBw Существующие клиенты (исключаются из списка) https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJxTHke6JZwokRCLWVd99eDBw
8a2a1072c96ffff ChIJ6atD-WRZwokRULgcZ4TWin8 Новый потенциальный клиент https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJ6atD-WRZwokRULgcZ4TWin8
8a2a1072c96ffff ChIJ09yg-llZwokRKAgp0jg6TCU Новый потенциальный клиент https://www.google.com/maps/search/?api=1&query=Place&query_place_id=ChIJ09yg-llZwokRKAgp0jg6TCU

Визуализируйте потенциальных клиентов с помощью набора элементов пользовательского интерфейса Places UI Kit.

Вместо того чтобы указывать прямой URL-адрес Maps, вы можете передавать place_ids непосредственно в Places UI Kit , чтобы создать многофункциональную внутреннюю панель управления для генерации лидов для вашей команды продаж. Доступные на всех платформах, готовые компоненты можно использовать для веб-версии , Android и iOS . Эти компоненты автоматически отображают подробные данные о POI, такие как фотографии, рейтинги и часы работы, без необходимости написания кода пользовательского интерфейса или ручной обработки ответов API.

Ограничения на объем данных

Функция подсчета мест возвращает максимум 250 идентификаторов мест на каждую географическую ячейку в массиве sample_place_ids . Если территория очень густонаселена, сгенерированный список потенциальных клиентов для этой конкретной ячейки будет ограничен 250. Чтобы гарантировать охват всех потенциальных клиентов на рынках с высокой плотностью населения, рассмотрите следующие стратегии:

  • Используйте специальные фильтры запросов: вместо того, чтобы группировать несколько типов в один запрос (как в примере выше), выполняйте отдельные запросы для каждого типа места.
  • Уменьшите пространственный охват: сократите общую область поиска, используя меньший geography_radius , или разделите область на более мелкие, более детализированные сегменты, увеличив разрешение H3 (до разрешения 11).
  • Настройка разрешения в зависимости от плотности населения: При анализе территорий с различной плотностью населения динамически корректируйте размер поиска, чтобы избежать превышения лимита в 250 идентификаторов мест. Используйте более широкое разрешение H3 (например, 6 или 7) или больший geography_radius в сельской местности, где предприятия расположены на значительном расстоянии друг от друга. И наоборот, используйте высокодетализированное разрешение (например, 10 или 11) в густонаселенных городских районах, чтобы гарантировать охват всех потенциальных клиентов, не сокращая при этом список.

Производственный запрос

После того, как вы убедитесь в успешной идентификации существующих клиентов, вы можете вернуться к рабочей версии запроса. Замените последний блок SELECT следующим условием WHERE , чтобы навсегда отфильтровать вашу существующую клиентскую базу:

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

Архитектурное управление и соответствие нормативным требованиям

Для обеспечения высокой производительности и соответствия требованиям необходимо придерживаться следующих стандартов:

  1. Идентификаторы мест в качестве постоянного идентификатора: помимо идентификаторов мест, условия использования Google Maps запрещают хранение или кэширование данных отдельных объектов POI, возвращаемых API мест (таких как номера телефонов и контактная информация). Используйте идентификаторы мест в качестве постоянного идентификатора для анализа повторяющихся пустых пространств.
  2. Обеспечьте актуальность атрибутов с помощью вызовов API в реальном времени: используйте идентификаторы мест для выполнения «оперативных» вызовов к API сведений о местах, чтобы ваш менеджер по продажам имел самую актуальную информацию о компании и контактные данные для данного места. В качестве альтернативы, как показано в результатах запроса, вы можете динамически создавать URL-адреса Google Maps, чтобы предоставить вашей команде продаж прямые ссылки на профили компаний на Google Maps.

Заключение

Стандартизация идентификатора места (Place ID) в качестве первичного ключа позволила успешно преодолеть разрыв между высокоуровневым анализом рынка и практическими операциями по продажам на местах. Эта архитектура позволяет обойти неточности традиционного таргетирования на основе численности населения, использует бессерверные хранилища данных для ресурсоемких вычислительных операций объединения и строго придерживается лучших практик управления затратами и соответствия требованиям на уровне API.

Следующие действия

  • Запросите доступ к образцу набора данных Places Insights.
  • Для доступа к примерам или полным данным по странам подпишитесь на набор данных Places Insights, используя списки обмена данными BigQuery.
  • Ознакомьтесь со справочником параметров фильтра, чтобы точно настроить SQL-запросы BigQuery на основе бизнес-атрибутов и типов.
  • Внедрите динамический поиск по API Places в вашу CRM-систему или приложение для маршрутизации продаж, чтобы предоставлять актуальные и соответствующие требованиям контактные данные для сгенерированных новых потенциальных клиентов.

Авторы