Я собрал 5 409 вакансий с сайтов 164 компаний и узнал, почему отклик застревает по дороге

Я делаю JobToo, сервис по поиску работы в Москве свайпом. Вакансии берём прямо с карьерных сайтов компаний, а наш AI помощник Юпитер откликается там за человека. Рассказываю, что сработало, что нет.

Так выглядит лента: одна вакансия — одно решение.
Так выглядит лента: одна вакансия — одно решение.

Меня зовут Никита, и я делаю JobToo, сервис для поиска работы в Москве. Вакансии там листаются карточками, как в приложениях знакомств: вправо, если интересно, влево, если нет.

Начиналось всё с подработки. Первая версия JobToo была про смены: работодатель выкладывал смену на конкретную дату, человек брал её в пару нажатий. Работодатели публиковали вакансии у нас сами, и довольно быстро стало понятно, что так база растёт медленно, а людям нужна не только подработка, но и постоянная работа.

В сентябре я закрыл раздел смен и развернул продукт целиком: только постоянная работа, только вакансии, которые компании уже выложили у себя на сайтах. Решение далось непросто, потому что смены были тем, с чего всё начиналось.

Сам поиск работы показался мне неудобным. Вакансии разбросаны по площадкам и сайтам компаний, а на популярных площадках у одной вакансии бывает по тысяче откликов. Пробиться через такую очередь трудно: рекрутер физически не успевает открыть каждое резюме. Я решил упростить всё сразу: листать вакансии карточками и откликаться прямо на сайте компании, где откликов меньше и резюме скорее посмотрят. А заполнять анкету на этом сайте должен ИИ-агент. Сейчас мы к этому и идём: цель в том, чтобы он справлялся с анкетой на любом сайте.

Откуда берутся вакансии

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

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

На сайте компании такой путаницы меньше. Если вакансия там висит, её открыл сам работодатель, а анкета на той же странице ведёт прямо к его рекрутерам. Поэтому весь JobToo построен вокруг одного правила: вакансия попадает в ленту, только если мы нашли её у самой компании.

Готового списка карьерных сайтов работодателей нет, его пришлось собирать вручную, компания за компанией. Сейчас сборщик обходит около 500 страниц. Больше всего хлопот доставляет вёрстка: компании её меняют, обычный парсер после этого молча ломается, и вакансии пропадают из ленты, пока кто-нибудь не заметит. Наш сборщик подстраивается сам и находит вакансии на обновлённой странице.

На 14 октября в ленте 5 409 IT-вакансий от 164 компаний. Пока мы сосредоточились на Москве, но дальше планируем расширяться. Отдельно живёт раздел «За рубежом»: 1 554 вакансии от 88 компаний.

Как вакансия попадает в ленту и как уходит отклик.
Как вакансия попадает в ленту и как уходит отклик.

Лента устроена карточками, потому что список из пяти тысяч строк читать тяжело. Карточка показывает одну вакансию и просит одно решение: интересно или нет. Сейчас JobToo — это приложение для Android, веб-приложение для iPhone и мини-приложение в Telegram. Сайт пока просто ведёт в приложение, а искать работу прямо на сайте мы планируем сделать позже. Цифры у нас пока скромные: за последнюю неделю через Юпитера прошло 323 отклика.

Юпитер: помощник, который откликается за вас

Собрать вакансии оказалось половиной дела. Дальше человек нажимает «откликнуться» и попадает на сайт компании, а там у каждой своя анкета, иногда ещё и с регистрацией.

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

Звучит просто, пока не начинаешь проверять на живых сайтах. Бывают анкеты в несколько шагов, бывают поля с придирчивой проверкой формата. Юпитер должен справиться с ними и ничего не испортить.

Поэтому у Юпитера есть правила, которые мы не снимаем ни ради какой цифры.

Он не выдумывает факты о человеке. Ответы на вопросы работодателя берутся только из профиля и резюме. Если в анкете спрашивают то, чего там нет, например «готовы ли к командировкам», вопрос уходит человеку.

Тексты для анкет помогает писать нейросеть. Профиль и резюме нейросеть видит только ради подачи отклика, и это прописано в политике обработки данных и пользовательском соглашении.

При разборе анкет мы нашли кое-что неприятное. Примерно в каждой четвёртой рядом с обязательным согласием на обработку данных стоит ещё одна галочка: согласие попасть в «кадровый резерв», получать рассылку или передать данные третьим лицам. Юпитер такие галочки не ставит: человек пришёл откликнуться на вакансию, в рассылку он не просился.

Если откликаетесь на сайтах компаний сами, из нашей разведки можно вынести два практических вывода. Анкета там обычно короче, чем кажется: в среднем четыре поля, и на неё уходит пара минут. А перед отправкой стоит прочитать подписи у всех галочек внизу формы. Согласие на обработку данных для отклика нужно, а «кадровый резерв», рассылку и передачу данных третьим лицам можно не отмечать, если вы этого не хотите.

Честные цифры

Красивых цифр у меня здесь нет, поэтому начну с некрасивой.

На 13 октября мы посчитали, сколько откликов Юпитер доводит до конца сам или с одним касанием человека. Одно касание здесь значит одно короткое действие с его стороны, например пройти капчу. Вышло 27,5%. Почти три отклика из четырёх где-то застревали, и человеку приходилось доделывать их руками. Мы стали разбирать, где именно, и нашли четыре причины.

Первая причина в капче. Она стоит на 122 карьерных сайтах из 607, которые мы проверили, то есть на каждом пятом. Обходить её мы не стали и проходить её должен сам человек. Юпитер в таких случаях останавливается и просит человека решить капчу в приложении.

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

Третья: анкеты на скриптах. На многих сайтах форма появляется только после того, как отработает JavaScript, а кнопка «Откликнуться» открывает окно вместо ссылки. Простой HTTP-клиент такую анкету вообще не видит: для него на странице пусто.

Что поменяли и что получилось

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

Экран откликов на демо-аккаунте: где Юпитер отправил сам, а где ждёт человека.
Экран откликов на демо-аккаунте: где Юпитер отправил сам, а где ждёт человека.

За последние четыре дня ушло 55 откликов из 106, это 52%. Сравнивать в лоб с 27,5% не стану: то был другой замер, за неделю, в которую попали и дни до исправлений. Честное сравнение покажет тот же счётчик через неделю, когда в него попадут только новые дни.

Цель 80%. Простые случаи мы уже закрыли, так что каждый следующий процент, подозреваю, дастся тяжелее.

Что не получилось

Остаётся капча. Пока она стоит на каждом пятом сайте, часть откликов будет требовать действия от человека, будем искать способы сделать процесс проще.

Четыре дня мало. 52% я считаю хорошим знаком, а результатом назову, если цифра удержится месяц.

Разбор вакансии с цитатами

Одна функция появилась из разговора в Threads. Эксперт по найму, с которым мы там переписывались, сказал, что главная боль соискателя в том, что он «продаёт себя вслепую»: не знает, что на самом деле важно работодателю.

После этого мы сделали разбор вакансии: на что в тексте обратить внимание и что подчеркнуть в отклике. Правило у разбора одно: нет цитаты из вакансии, нет и вывода. Каждый пункт привязан к фразе работодателя, так что человек может сам проверить, откуда взялся вывод, и не верить нейросети на слово.

Что дальше

Ближайшая задача: довести долю откликов, которые уходят сами или с одним касанием, до 80%. Параллельно добавляем компании в сборщик.

Ещё в работе расчётная зарплата для вакансий, где работодатель её не указал: вилка по похожим вакансиям, с честной пометкой «расчётная». И капча в одно касание прямо из уведомления, без лишних переходов.

Вопрос к вам

Если вы откликались на сайте компании напрямую, что там раздражало больше всего? Регистрация, длинная анкета, капча, тишина после отправки? И как вы думаете, где граница: что можно доверить программе, а что человек должен сделать сам? Пишите в комментариях.

44