Кейс
Мониторинг вакансий как сервис: отчёт каждый месяц и кабинеты для клиентов заказчика
Разовый отчёт устаревает через месяц, а клиенту, который платит за аналитику, нужно видеть свежие цифры без ручной выгрузки и быть уверенным, что они совпадают с сайтами.
После первого отчёта о зарплатах мерчендайзеров заказчик решил продавать такую аналитику своим клиентам. Разовая выгрузка превратилась в сервис: данные собираются каждый месяц, у каждого клиента свой кабинет, а мы отвечаем за то, чтобы цифры в отчёте совпадали с сайтами.
Заказать анализ вакансий
Это продолжение кейса «Мониторинг рынка вакансий». Там мы собрали 15 113 объявлений мерчендайзеров и супервайзеров с пяти площадок и сделали один отчёт на дату среза. Заказчик, компания из аутсорсинга мерчандайзинга, разрешил рассказать, что было дальше, без названия компании. Datamill держит этот сервис на своём сервере: отчёт обновляется 1-го числа каждого месяца.
Задача
Заказчик решил продавать мониторинг рынка труда своим клиентам, кадровым агентствам. Для этого разового отчёта мало. Нужно было, чтобы данные обновлялись сами, чтобы каждый клиент видел свой срез по ссылке и паролю, а отчёт выходил под логотипом заказчика.
Что мешало
Отчёт устаревает за месяц. Вакансии закрываются, суммы меняются. Чтобы клиент видел рынок, а не архив, сбор и расчёт нужно повторять без участия человека.
Источники ведут себя по-разному. Часть площадок отдаёт данные через официальный API, часть только на публичных страницах. Один источник показывает вакансии только обычному браузеру и регулярно просит пройти проверку «я не робот». Обходить её мы не стали.
Клиенту нужно доверять цифрам. Через месяц после запуска заказчик написал, что суммы в отчёте не всегда бьются с сайтами. Для сервиса, за который платят, это главный вопрос.
Как устроен ежемесячный сбор
1-го числа в 01:00 по Москве запускается расписание. Сборщики проходят площадки, классификатор отделяет мерчендайзеров и супервайзеров от чужих отраслей и склеивает дубли, затем сохраняется снимок месяца и строятся отчёты для каждого кабинета.
В расчёт идут только объявления не старше 35 дней. Если какой-то источник не обновился, он выпадает из месяца целиком, а не подмешивает старые данные.
Источник, который требует проверку «я не робот», мы собираем отдельно, в последнюю неделю месяца, в обычном браузере на отдельном устройстве. Проверку проходит человек. К 1-му числу файл уже лежит на сервере.
Если отчёт не собрался, кабинеты продолжают показывать прошлый месяц, а нам приходит сообщение в Telegram.

Кабинеты для клиентов заказчика
Каждый клиент заказчика получает свой адрес на нашем сайте, логин и пароль. Внутри отчёт под логотипом заказчика: фильтры по ролям, регионам и типам работодателей, карта, таблица вакансий и динамика по месяцам.
Что видит кабинет, задаёт профиль: например, обе роли по всей стране или только мерчендайзеры в Москве и области. Первые два кабинета работают с 20 октября 2026 года.
Кабинеты закрыты от поисковиков, ссылок на них на сайте нет. Журнал входов ведётся без IP-адресов, и веб-сервер не записывает адреса кабинетов в свой журнал.
Когда цифры не совпали с сайтами
21 октября заказчик прислал 32 строки, в которых, по его словам, суммы расходились с сайтами. Совпали 15. В 11 из остальных 17 строк причина нашлась сразу, ещё одна ошибка была в самом сборе:
- До вычета налога. Одна площадка публикует часть зарплат до вычета налога, а отчёт пересчитывал их на руки. В 7 строках сумма отличалась ровно на эти 13 %.
- Склейка размещений. Одна позиция размещена несколько раз с разными суммами. Отчёт показывал вилку по всем размещениям, а ссылка вела на одно из них. Так было в 2 строках.
- Вакансия изменилась после сбора. 2 строки, данные месячной давности.
- Сломанный разбор одной площадки. Объявления одного источника в отчёт не попадали вовсе. Это нашлось при той же сверке.
Что изменили:
- В колонке «З/п от/до» теперь ровно та сумма, которая опубликована на странице, куда ведёт ссылка. Вилка по всем размещениям вынесена в отдельные колонки.
- Появилась колонка «До вычета налогов» там, где площадка это указывает. В отчёте по умолчанию суммы как на сайте, а галочка пересчитывает их на руки, вместе с медианами.
- Разбор сломанной площадки исправили.
После исправлений мы проверили 150 случайных строк: 110 совпали с сайтами, у 7 размещение изменилось после сбора, 3 вакансии закрылись. Ещё 30 строк с площадки, которую можно проверить только в браузере, сверили вручную: 28 совпали, одна нет, одна снята. Контрольная проверка 22 октября: 39 из 40 строк совпали, одна вакансия закрылась.

Теперь такая проверка запускается сама 1-го числа после построения отчётов: берёт случайные строки, открывает живые страницы и присылает итог нам в Telegram.
Что получил заказчик
- Отчёт по вакансиям мерчендайзеров и супервайзеров, который обновляется сам каждый месяц.
- Кабинеты для своих клиентов, каждый со своим срезом и паролем, под своим логотипом.
- Динамику по месяцам: история срезов начинается с сентября 2026 года.
- Ежемесячную проверку сумм с сайтами: если что-то разошлось, мы узнаём об этом в тот же день.
Ограничения
Совпадение с сайтом — на момент сбора. Вакансии меняются и закрываются каждый день. Между сбором и проверкой проходит время, и часть расхождений неизбежна.
Не все площадки знают, до вычета налога сумма или на руки. Там, где признака нет, сумма показана как опубликована, без пересчёта.
Один источник зависит от человека. Если в последнюю неделю месяца проверку «я не робот» никто не прошёл, источник выпадет из месяца по правилу 35 дней.
Персональных данных в отчёте нет. Контакты работодателей и имена мы не собираем, поэтому отчёт отвечает на вопрос о рынке, а не о конкретных людях.
Если нужен такой же сервис
Метод не зависит от профессии: меняются площадки, список должностей и признаки, которые нужно вытащить из описаний. Условия на странице «Анализ вакансий», а как устроен первый отчёт, мы разобрали в кейсе «Мониторинг рынка вакансий».
Частые вопросы
Почему в кейсе не названа компания заказчика?
Заказчик разрешил рассказать о работе, но без названия компании. Его клиенты видят отчёт под его логотипом, и Datamill в этой связке остаётся исполнителем.
Видят ли клиенты заказчика данные друг друга?
Нет. У каждого кабинета свой адрес, логин и пароль, и в нём только тот срез, который для него настроен: например, все регионы и обе роли или только Москва и область.
Что будет, если в месяц что-то не соберётся?
Если отчёт не собрался, кабинеты показывают прошлый, а мы получаем сообщение об ошибке. Источник, который не обновлялся больше 35 дней, в отчёт не попадает, чтобы старые объявления не смешивались с новыми.
Почему зарплата в отчёте может не совпадать с сайтом?
Обычно по трём причинам: площадка показывает сумму до вычета налога, вакансия изменилась или закрылась после сбора, или одна позиция размещена несколько раз с разными суммами. В отчёте теперь видно, какая сумма откуда, а проверка запускается сама каждый месяц.
Ещё примеры
Читайте также
Мониторинг рынка вакансий
Заказчик просил «собрать вакансии с нескольких сайтов в Excel». За этой просьбой стояли сорок с лишним признаков по каждой вакансии, половина которых нигде не лежит готовым полем. Собрали мы всю страну — 87 регионов на срезе 23 сентября 2026 года. В кейсе для наглядности разбираем один город из них, Москву.
Статистика сайта без счётчиков
9 октября мы убрали со своего сайта счётчик Метрики и форму заявки: сайт не должен собирать данные посетителей. Знать, что читают и откуда приходят, всё равно нужно. Мы построили статистику по журналу сервера, который nginx пишет и без нас, и заодно увидели, сколько в трафике роботов.
Аудит цен бренда на WB и Ozon
Мы взяли 15 самых популярных товаров бренда натуральной косметики MIX*** и за один день посмотрели, кто ещё продаёт их на Wildberries и Ozon и по какой цене. Демпинга почти не нашлось. Нашлись сотни предложений в разы дороже бренда и три разные цены одного крема в трёх каналах.