Для локального мастера заявка из чужого города — это не половина клиента, а ноль, который вдобавок отъел внимание. Электрик из Казани, которому упало «ищу натяжные потолки в Москве», теряет не деньги напрямую — он теряет минуту, доверие к уведомлениям и через неделю начинает пролистывать их не глядя. Поэтому вопрос «понимает ли система, что этот чат и это сообщение про мой город» — не техническая деталь, а граница между потоком заявок и потоком шума.
Разберу, как ФайндЛид определяет географию: без общих слов про «умный алгоритм», а по механике — что именно происходит с названием города, когда бот читает сообщение.
Два уровня географии: чат и сообщение
География в ФайндЛид живёт на двух уровнях, и путать их — типичная ошибка при настройке.
Первый уровень — сам чат. Городская барахолка, «Подслушано <город>», локальный чат ЖК или района — такие чаты система помечает как привязанные к конкретному городу. Второй уровень — отдельное сообщение: человек в федеральном чате пишет «нужен мастер в Екатеринбурге», и география берётся уже из текста, а не из чата.
Разница принципиальная, потому что настраиваются эти уровни по-разному. К самой частой ошибке на этом стыке вернусь ближе к концу.
Почему «Мск», «Москва» и «мск» — это один город
Живой чат не пишет «Москва» по паспорту. Пишут «мск», «Мск», «в мск», «мск.», «по Москве и области», иногда с опечаткой. Если система ищет ровно строку «Москва», она пропустит половину реальных упоминаний и поймает только официоз.
Поэтому гео-разметка работает не по одной строке, а по справочнику городов. Основное, официальное название бот ищет всегда — как отдельное слово, по границе: строка «Москва» внутри другого слова случайно не сработает. А падежи и разговорные формы добираются алиасами, и они матчатся по префиксу: алиас «москв» накрывает и «москва», и «москве», и «московский». Так «СПб», «Питер», «Санкт-Петербург», «спб», «в питере» сводятся к одному городу. Это тот же принцип точного и подстрочного совпадения, что и в синтаксисе фильтра ФайндЛид, только применённый к названиям городов, а не к ключевым словам.
Совпадение по букве — ловушка: город в живой переписке почти никогда не пишут так, как он записан в справочнике.
Авто-тегирование: фиксированные уровни уверенности
Алиасы отвечают на вопрос «как написан город». Но прежде чем разбирать отдельные сообщения, ФайндЛид решает вопрос уровнем выше — привязан ли к городу сам чат. За это отвечает авто-тегирование: оно присваивает чату фиксированный уровень уверенности.
Когда чат выглядит локальным — «Барахолка Казань», «Подслушано <город>», чат ЖК или района, — система читает его название и описание и ищет там город по тому же справочнику. Уверенность здесь не вычисляется как вероятность — бот присваивает заранее заданный уровень: совпадение по основному названию города — 95, по алиасу вроде «Мск» или «спб» — 75, по тематической категории чата — 80. Ниже фиксированного порога в 70 привязка не проставляется.
Ключевое: это уверенность привязки именно чата к городу, а не оценка каждого отдельного сообщения. И механизм тут не статистический — справочник срабатывает по границам слов и раздаёт готовые уровни, а не считает вероятность на лету. Поэтому привязка не «плавает»: либо в описании чата нашёлся город по названию или алиасу выше порога — и тег стоит, либо нет. Пограничный чат бот скорее оставит без гео-тега, чем повесит его наугад.
Где словарной разметки уже не хватает
С отдельными сообщениями сложнее, и здесь важно не приписывать словарной разметке того, чего она не делает. Найти в тексте строку «Ростов» мало: «Ростов» — это и Ростов-на-Дону, и Ростов Великий, два разных города в разных концах страны. «Еду в Москву на выставку» — упоминание города, но не заявка местному подрядчику. «Москва-Сити» — вообще про деловой центр, а не про геолокацию клиента. «Переезжаю из Казани, ищу бригаду на новом месте» — для казанского мастера это уходящий клиент, а не входящий.
Словарная разметка все эти случаи видит одинаково — как совпадение подстроки или слова целиком. Она не разбирает предлоги, не отличает «в <город>» от «из <город>» и не понимает, что «Москва-Сити» — не про клиента. Различить упоминание и заявку, направление и омонимы — работа не разметки и не гео-уверенности, а смыслового слоя, который читает сообщение целиком. К нему вернусь отдельно.
Словарные группы фильтра — и почему город задаётся не ими
Словарный фильтр ФайндЛид собран из нескольких групп. Связаны они между собой по И, а внутри каждой группы слова работают по ИЛИ — достаточно одного. Разберём по порядку.
«Что ищет клиент» (в коде — words) — базовая группа: сюда идёт только услуга или объект, без слов-просьб. «Натяжные потолки», «навесной потолок», «потолок под ключ». Сработает, если в сообщении есть хотя бы одно слово отсюда.
«Как клиент просит» (key_words) — продающая добавка, слова-просьбы: «нужен», «ищу мастера», «посоветуйте», «кто делал». Группа заполнена по умолчанию и работает в связке с первой: чтобы сообщение прошло, в нём должно быть хотя бы одно слово из «Что ищет клиент» И хотя бы одно из «Как клиент просит». Так «продам натяжные потолки оптом» отсекается — объект есть, а просьбы нет.
«Уточнение — тема или предмет» (в коде — city_words, и вопреки имени это не поле для городов) — необязательная вторая продающая добавка. Заполнили — добавляется ещё одно условие по И: нужно совпадение и отсюда. Оставили пустым — группа в фильтре не участвует. Уточнять ею можно любую грань запроса: материал, тип объекта, срочность.
«Минус-слова» (negative_words) работают наоборот: любое слово отсюда в сообщении — и оно отсеивается целиком, независимо от остальных групп.
Собирается это так: (любое из «Что ищет клиент») И (любое из «Как клиент просит», если заполнена) И (любое из «Уточнение», если заполнена) И НЕ (любое из «Минус-слов»). Внутри группы — ИЛИ, любое одно слово; И появляется только между группами.
И вот главная поправка к расхожему совету «добавьте город в словарь»: город в этих группах не задаётся вообще. География для клиента настраивается отдельными каталожными полями — «Только из городов» и «Только из стран», где город выбирается из справочника, а не вписывается словом. Именно каталог, а не словарь, связывается с гео-тегом чата и разобранными выше уровнями уверенности. Вписать город словом в любую из словарных групп — распространённая ошибка: география превращается в ещё одно хрупкое строковое совпадение вместо каталожной привязки.
Это ровно тот механизм сужения, о котором речь в разборе, почему несколько узких фильтров работают лучше одного широкого: «Что ищет клиент» задаёт тему, «Как клиент просит» и «Уточнение» сужают до реальной просьбы, минус-слова отсекают мусор, а каталог «Только из городов» режет по географии. Каждая ось точности — своим инструментом, и география здесь не словарём.
Главная ошибка — требовать город словом в собственном городском чате
Вот где настройка ломается у локального бизнеса чаще всего. Человек вписывает «Москва» словом — в «Что ищет клиент» или в «Уточнение» — и вешает это на все чаты подряд, включая московскую барахолку. Потом удивляется, что заявок почти нет.
В своём городском чате люди не пишут «ищу мастера в Москве». Они и так в московском чате, город очевиден, его просто не называют. Реальная заявка звучит как «посоветуйте электрика, срочно, кто делал — отзовитесь». Требование обязательного города такую заявку убьёт.
Требовать название города внутри городского чата — всё равно что просить человека представляться по имени-отчеству при входе в собственный подъезд.
Правильно наоборот: в локальном чате опирайтесь на гео самого чата и каталожное «Только из городов», а не требуйте город в тексте. Каталог сам подхватит привязку чата — людям не нужно называть город, чтобы пройти фильтр. В федеральном чате город в тексте всё равно понадобится, но и там его читает гео-слой и тот же каталог, а не строка в словаре. Разные типы чатов — разные настройки под них. Какие именно чаты слушать под ваш город и нишу — отдельная работа, её я разбираю на странице про мониторинг чатов Telegram.
AI-слой поверх географии
Алиасы дают полноту — ловят все написания города. Привязка чата к городу задаёт контекст там, где город в тексте не называют. Но ни то, ни другое не отличает «нужен мастер в Москве» от «был вчера отличный мастер в Москве, делюсь контактом» и не понимает, что «уезжаю из Москвы» — это про отъезд, а не про заказ. Поэтому поверх словаря и географии работает смысловой классификатор: он читает сообщение целиком, отсекает самопиар, пересланную рекламу и обсуждения, разбирается с направлением и омонимами, оценивает, действительно ли это запрос на услугу, — и уже с учётом географии решает, тянет ли сообщение на живую заявку.
Комбинация и даёт результат. Алиасы ловят все написания города. Привязка чата к городу проставляет географию там, где её не пишут в тексте. Смысловой слой отделяет заявку от болтовни о городе, живого клиента — от уезжающего. По отдельности каждый механизм дырявый — вместе они дают локальный поток без географического шума.
Кому гео критично, а кому почти всё равно
Для онлайн-услуг, доставки по стране и цифровых продуктов география — почти шум: клиент откуда угодно одинаково хорош, и жёсткая привязка «Только из городов» им скорее вредит, обрезая нормальные заявки. Здесь гео стоит держать мягким или не трогать вовсе.
Для локальных услуг всё ровно наоборот. Натяжные потолки, ремонт, клининг, репетитор с выездом, доставка воды — тут заявка без правильного города не «чуть хуже», она бесполезна. И если вы неделями получаете уведомления, половина которых про другие регионы, дело не в том, что «в чатах нет клиентов». Дело в том, что боту не объяснили, где ваш город, — а это как раз настраивается за один вечер.