HR под капотом

@channel_hr_under_hood
Фото Парсер для оперативной оценки проплаченности сотрудников на данных hh и sj Почему квартальные обзоры не отвечают😭 Основная система сопоставляет зарплату каждого сотрудника с данными провайдеров и пересчитывается раз в квартал. Для плановой оценки проплаченности этого достаточно, для вопроса руководителя нет. Квартальный срез не видит, что месяц назад в городе открылся крупный склад и начал переманивать водителей. А по массовым позициям в небольших городах у провайдеров мало наблюдений, и цифра неустойчива. Почему ручной просмотр HH ничего не доказывает Руководитель обычно сам открывает HeadHunter и видит три заметных оффера, а не рынок. В поиске по «водителю» оказываются курьеры и штабелёры, одна вакансия размещена десять раз, среди них наши собственные, а вилка «от 40 до 200 тысяч» ничего не говорит. Аналитик мог собрать выборку аккуратно, но на это и уходили те самые 3 часа. Как устроен парсер🦍 Это настольное приложение, которое забирает вакансии с HeadHunter и SuperJob через официальный API. Ключевой элемент это пресет, сохранённая референтная группа по позиции: ключевые слова, проф. роли, регион, опыт, тип занятости. Для типовых массовых должностей пресеты настроены заранее, аналитику остаётся выбрать должность и город. За счёт пресетов ответ одинаковый, кто бы из C&B ни делал проверку. При очистке парсер убирает дубли и наши вакансии, переводит валюту в рубли, отсекает зарплаты ниже МРОТ и экстремумы по городу. Результат выгружается в привычный Excel: вилка, среднее, перцентили, маркер выброса и при необходимости текст вакансии. Если нужно, подтягиваются и резюме: видно, сколько кандидатов на рынке и сколько они просят. На том же массиве можно сравнить нашу отрасль с соседней. Путь от заявления до решения: Сотрудник: «ухожу, в городе платят больше» │ ▼ Руководитель -> C&B: «он недооплачен?» │ ▼ Парсер: пресет должность + город │ ▼ Сбор вакансий HH и SuperJob (API) │ ▼ Очистка: дубли, наши вакансии, чужие профессии, выбросы │ ▼ Медиана, среднее, перцентили по городу │ ▼ Зарплата сотрудника: ниже / в рынке / выше │ ▼ Решение руководителя │ ├── Ниже рынка, │ нужен, есть │ бюджет: │ повышение │ └── В рынке или нет бюджета: не удерживаем Руководитель получает не «кажется, недоплачиваем», а позицию: например, сотрудник на 25-м перцентиле по городу, до медианы не хватает 8 тысяч рублей. Дальше он решает, нужен ли человек и есть ли бюджет на удержание. Где парсер работает, а где нет😎 Только на массовых позициях: там много вакансий и зарплата почти всегда указана. По экспертным и управленческим ролям оплату на HH часто скрывают, и там мы опираемся на провайдеров. Вторая граница: вакансия показывает предложение работодателя, а не фактическую оплату. Для сценария «ухожу на чужой оффер» это как раз правильный срез. Ошибки, которые мы совершили☠ Настраивали референтные группы «на глаз»: грязная выборка сдвигала медиану сильнее любой погрешности расчёта. Отсюда выверенные пресеты. Смешивали город и область, хотя это разные рынки. Теперь считаем отдельно. Верили вилке «от-до». Теперь выбросы отсекаются до расчёта перцентилей. Поздно начали сохранять срезы. Задним числом историю вакансий не выгрузить, за первые месяцы динамики нет. Что ещё даёт парсер Сохранённые срезы показывают динамику. Если по роли в городе появляются офферы сильно выше медианы, это сигнал, что конкурент начал агрессивный найм, и оплату можно пересмотреть до волны уходов. Итоговый рынок по массовым ролям взвешиваем из трёх источников: провайдеры, парсер и локальная картина от HR BP. Что получили🥇 При сотне проверок в месяц экономия около 275 часов, почти 1,7 ставки аналитика. Но главное: решение об удержании принимается под цифру и бюджет, а не под громкость заявления. Вывод Для оперативной оценки проплаченности массовых позиций не понадобились ни вендор, ни ИТ-проект. Хватило узкого инструмента в HR, который отвечает на один вопрос про одного сотрудника, но быстро и одинаково для всех.
Если у вас установлено приложение,
вы можете сразу перейти в канал