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