Одна вакансия конкурента — ещё не рынок. Как я собираю картину для HRD
HRD почти всегда приносит одну вакансию конкурента: «у них оклад выше» или «у них ДМС с первого дня». Это не конкурентный анализ рынка труда. Это одна строка.
Я — Артём Стельмахов, HR-аналитик. Резюме на hh.ru. На работе веду два контура. HR Rocket — медиапланы и CPL отклик на Avito и hh.ru. HR Stats — как раз рынок: зарплаты, каналы, бенефиты конкурентов, сводки для HRD. Роль у меня продуктовая: требования, сценарии, приёмка. Я не штатный «аналитик рынка» с личным SLA перед клиентом и не DS, который обучает модель.
Сайт hrstats.ru — SPA. Серверный HTML почти пустой, витринных процентов оттуда я не снимаю и не выдумываю. Ниже — что продукт делает по внутренним формулировкам и что я принимаю как аналитик. Живые цифры зарплат в этой статье не подставляю: срез зависит от запроса, города и даты. Пощупать механику среза можно в демо аналитики рынка труда — это портфельный стенд на HeadHunter API, не выгрузка клиента HR Stats.
Чем конкурентный анализ рынка труда не является
Три частые подмены.
Не бенчмарк по одной ссылке. Конкурент мог выложить вилку «от» без «до», указать доход «на руки» в одном городе и «гросс» в другом, смешать оклад и премию в одной строке. Одна карточка hh.ru не равна политике оплаты всей сети.
Не то же самое, что CPL. CPL отвечает: сколько мы платим за отклик на нашу вакансию. Рынок отвечает: какую вилку, какой пакет и какой канал видит кандидат снаружи. Если смешать, получится отчёт «мы дороже рынка», хотя сравнивали стоимость лида с чужим окладом.
Не скоринг резюме. HR Rocket резюме не считает. HR Stats разбирает вакансии и пакет, не ранжирует кандидатов. Если в разговоре всплывает «ИИ оценит резюме» — это другой контур, его сюда не тащу.
| Вопрос HRD | Какой это анализ | Где у меня |
|---|---|---|
| Сколько стоит отклик на нашу вакансию? | Эффективность каналов, CPL | HR Rocket, статья про CPL |
| Какую вилку видит кандидат у конкурентов? | Мониторинг зарплат | HR Stats / срез hh, Avito |
| Чем их оффер сильнее нашего, кроме оклада? | Total rewards, таблица бенефитов | HR Stats, приёмка таблицы |
| Куда они кладут бюджет — hh или Avito? | Каналы и форматы публикаций | HR Stats + медиаплан |
| Почему люди уходят после выхода? | Текучка, не рынок вакансий | Отдельный контур, не эта статья |
Кто такой HR-аналитик в моей рамке — человек, который не даёт этим вопросам склеиться в один слайд «нужно поднять зарплату».
Сначала рамка среза, потом цифра
Пока не зафиксированы должность, география, канал, опыт и период, любая медиана — декорация. Я собираю срез как таблицу фильтров, не как «среднюю по рынку».
| Ось | Что фиксирую | Что ломает сравнение |
|---|---|---|
| Роль / профиль | Не title вакансии, а класс: кассир, сборщик, системный аналитик | «Менеджер» без расшифровки |
| География | Город или явный remote, не «вся Россия» | Смесь Москвы и регионов в одной медиане |
| Канал | hh.ru, Avito, карьера на сайте | Вилка с корпоративного сайта против вилки Avito |
| Опыт и график | 1–3 / 3–6, смена, удалёнка | Стажёр рядом с сеньором |
| Период | Неделя или 30 дней, одна дата среза | «Я смотрел зимой, они — вчера» |
| Единица денег | Гросс / нетто, оклад / оклад+премия | «до 180» без базы |
Практическое правило: одна вакансия конкурента может быть выбросом. Сеть могла задрать вилку на одну точку, закрыть дыру на складе или ошибиться в карточке. Рынок — это распределение: минимум, нижний квартиль, медиана, верхний квартиль, хвост. Если HRD приносит одну ссылку, я кладу её на это распределение, а не наоборот.
В Excel это выглядит скучно и правильно: строки — роль × регион, столбцы — перцентили, отдельная колонка «сколько вакансий с зарплатой». Без знаменателя медиана врёт так же, как CPL без откликов.
Данные для такого среза собираю сам: SQL, Python, ETL. Для разового спора на планёрке часто хватает сводной. Для регулярного мониторинга HRD — кастомный дашборд, чтобы ту же логику не собирали руками каждый понедельник.
Зарплаты: что я прошу от среза
Мониторинг зарплат в HR Stats — регулярная сводка, не разовый скрин. Данные рынка — hh, Avito и другие площадки. Я ставил состав полей и логику сводок: должность, регион, канал, вилка, наличие цифры в карточке.
Что обязательно оказывается на листе, который я готов подписать:
- Знаменатель. Сколько вакансий в срезе и сколько из них с зарплатой. На hh.ru большая доля карточек без вилки. Медиана «по тем, кто указал» — это уже смещение, и его надо назвать.
- Перцентили, не одно среднее. Среднее тянет хвост вахты и «до 400 для редкого профиля». HRD обычно принимает решение около медианы и верхней квартили: «ниже рынка» vs «в рынке, но не в топе».
- Разделение оклада и обещания. «Доход до» часто включает премию, которую кандидат не увидит в первый месяц. Если в карточке это не разделено, я помечаю строку как грязную, а не как факт оклада.
- Сопоставимый график. Ночная смена, вахта и пятидневка — разные товары. Склеивать их в одну вилку «сотрудник склада» — самый короткий путь к войне с операционным директором.
Чего в этой статье нет: готовых вилок «кассир / Москва / 2026». Я их не выдумываю. Актуальный срез считается запросом, не абзацем блога.
Демо аналитики рынка труда как раз для этого: живой запрос в HeadHunter API, медиана и перцентили, топ навыков, работодатели, ИИ-сводка. Это портфель, не клиентский кабинет. Цифры на экране — ответ API на ваш запрос в этот день, не «официальная вилка HR Stats».
Каналы: где висит вакансия, не «где мы привыкли»
Конкурентный анализ без канала слепой. Линейный найм часто живёт на Avito сильнее, чем на hh.ru. IT и офис — наоборот. Если смотреть только привычную площадку, получится картинка «рынок пустой», хотя соседний канал забит.
Что я раскладываю по каналу и формату:
- где конкурент держит объявление: hh, Avito, карьерный сайт;
- копирует ли одно и то же описание или меняет заголовок и вилку;
- как часто переиздаёт (свежесть влияет на выдачу сильнее, чем кажется на планёрке);
- какой график и город в карточке — иногда «удалёнка» в заголовке и офис в тексте.
Это стыкуется с медиапланом. Если рынок по кассирам в городе сидит на Avito, а мы крутим только hh, CPL отклик будет «дорогим» не потому, что вилка слабая, а потому что канал чужой. Сначала карта рынка, потом бюджет.
Формат публикации — отдельная ось: короткое объявление с цифрой vs длинное без вилки, с фото точки vs без, с адресом vs «сеть по стране». Я не публикую конверсии форматов: у меня нет открытой витринной статистики HR Stats, а чужие проценты с лендингов в статью не переношу. Могу сказать только принцип: формат сравнивают внутри одной роли и одного города, не «по всем вакансиям компании».
Таблица бенефитов: total rewards минус красивый оклад
Оклад — часть оффера. Кандидат сравнивает пакет. HRD сравнивает пакет, только если ему приносят таблицу, а не скрин «у них есть ДМС».
В HR Stats отдельный сценарий агента: разобрать описания вакансий конкурентов → вытащить бенефиты → собрать сводную таблицу ключевых бенефитов по компаниям в выборке. Я формализовал требования к извлечению и критерии приёмки: диалог по заготовленным веткам, полнота таблицы, чтобы строки можно было сравнить между собой.
Что должно стать колонками, иначе таблица не живёт:
| Колонка | Зачем | Типичная грязь |
|---|---|---|
| Компания / бренд | Единица сравнения | Франшиза и управляющая компания как одна строка |
| ДМС | Есть / с какого дня / на членов семьи | «соцпакет» без расшифровки |
| Премия / бонус | Формула или хотя бы периодичность | «высокий доход» без базы |
| График и переработки | Смена, вахта, учёт | «удобный график» |
| Питание, проезд, жильё | Особенно линейный найм | Льгота только в одной точке сети |
| Обучение / ДМС+ | То, чем закрывают слабую вилку | Курс «для галочки» |
Приёмка здесь жёсткая. Если агент написал «есть ДМС», а в тексте вакансии — «после испытательного», строка фейлится. Если две компании попали в одну ячейку из-за похожего названия — фейл. Если бенефит выдуман из общих слов «забота о сотрудниках» — фейл.
Это тот же навык, что ручная таблица в Sheets. Разница только в масштабе: агент закрывает выборку, которую руками за вечер не разметить. Логика сравнения одна. ЛЛМ не отменяет знаменатель: таблица без списка исходных вакансий — это мнение, не бенчмарк.
ИИ-слой HR Stats устроен как оркестратор и намерения: рекрутер спрашивает про рынок, вилку, город, пакет — диалог не должен уезжать в свободный чат. Нагрузку на рекрутеров по типовым вопросам рынка мы снимали этим контуром; отдельную витринную цифру «минус N% у всех клиентов» я здесь не ставлю — это не публичный KPI сайта.
Как не перепутать вакансию, компанию и рынок
Короткий протокол, который я кладу перед любой цифрой.
Шаг 1. Назвать объект. «Вакансия №… конкурента X в городе Y» ≠ «политика X» ≠ «рынок роли в Y».
Шаг 2. Собрать выборку. Не меньше нескольких десятков карточек на роль и гео, если рынок живой. Если карточек мало, я так и пишу: рынок тонкий, медиана неустойчива. Не добираю соседние роли, чтобы «набрать статистику».
Шаг 3. Почистить единицу денег и графика. Вынести в отдельный лист то, что нельзя сопоставить.
Шаг 4. Показать распределение и знаменатель. Одна ссылка HRD — точка на этом графике, с датой.
Шаг 5. Отдельно пакет. Вилка может быть равной, а оффер — нет: ДМС, премия, график, срок выплаты.
Шаг 6. Отдельно канал. Если конкурент закрывает роль на Avito дешевле по вниманию кандидата, это не повод автоматически поднять оклад. Иногда надо сменить площадку и заголовок.
Типичные ошибки, которые я отлавливаю на приёмке и на планёрке:
- сравнили нашу вилку «на руки» с их «до вычета»;
- взяли вакансию из Москвы как аргумент для региона;
- усреднили IT и линейный найм в одном слайде «рынок вырос»;
- приняли переиздание за новую потребность;
- объяснили дорогой CPL «рынком зарплат», не проверив канал.
Что я отдаю HRD, чтобы на этом можно было решить
Не дашборд «ради дашборда». Три листа или три экрана.
Первый — вилки: роль × регион × канал, перцентили, число вакансий с зарплатой, дата среза. Вывод одной фразой: мы ниже нижней квартили / в рынке / держим верх.
Второй — пакет: таблица бенефитов по компаниям выборки. Вывод: где наш оффер дырявый при похожей вилке.
Третий — каналы: где висят объявления конкурентов и в каком формате. Вывод: куда смотреть медиаплан, прежде чем спорить про оклад.
Если после этого решение — поднять вилку, это решение на данных. Если решение — сменить канал или переписать заголовок, оклад могли не трогать. Конкурентный анализ рынка труда как раз для того, чтобы эти развилки не склеивались.
Стек, которым это собирается без магии, я разбираю отдельно: Excel, SQL, Яндекс DataLens. Здесь важно другое: инструмент не спасает, если объект сравнения не назван.
Дисклеймер по цифрам и демо
В этой статье нет зарплатных вилок, конверсий канала и «средней экономии по рынку». Их нельзя честно взять ни с SPA hrstats.ru, ни из головы.
Что можно проверить руками:
- механику среза hh — демо аналитики рынка труда: запрос, фильтры опыта и графика, медиана, перцентили, навыки, работодатели, ИИ-сводка. Данные — ответ HeadHunter API в момент запроса;
- механику CPL и пилота — Свод Avito + hh.ru, синтетика, NDA на клиентские абсолюты;
- продуктовую рамку HR Rocket (CPL, baseline, стратегии Эконом / Оптимальная / Агрессивная) — лендинг продукта, не моя личная P&L-таблица.
HR Stats я описываю как продукт, на котором ставлю сценарии и принимаю таблицу бенефитов. Клиентские объёмы и внутренние SLA аккаунта — не моя публичная отчётность.
Если нужен портрет роли, а не рынок — кто такой HR-аналитик. Если нужен вход в воронку после отклика — соседний цикл про метрики найма. Рынок и воронка встречаются на одном столе у HRD, но считаются разными знаменателями.
Открыть демо аналитики рынка труда — живой запрос, не одна чужая вакансия.
Дальше по теме
Открыть демо аналитики рынка труда