Сырой xlsx в понедельник ничего не решает
В понедельник нужен ответ, куда двигать бюджет размещений. Выгрузка из кабинета этот ответ не даёт. Она даёт файл. Файл ещё надо разложить.
HR-аналитика здесь предметная область. Должность другая: данные, витрина, отчёт. На HR Rocket я смотрю, куда ставить вакансию и какой канал окупается. На HR Stats рядом лежат вилки и условия, которые кандидат видит снаружи. Резюме я не скорю. Продукт размещения считает отклик, цену входа и расклад бюджета по объявлениям.
На созвоне это видно сразу. Ждут разбор карточки. Я открываю неделю, канал и объявление. Карточки кандидата в этой базе нет. Есть списание и отклик. Спор про вилку снаружи уходит во второй контур, HR Stats. С кабинетом площадки в одну цифру я его не складываю.
В воскресенье на столе два xlsx и чат. В понедельник от этого ждут, какой ID выключить. Если строки на объявление нет, решает тот, кто громче. Мне нужно, чтобы решение называлось вслух одной строкой. Цвет карточки этого не заменяет. Пока зерно строки не собрано, любой экран открывается как картинка прошлой ручной сборки.
Имя BI в этот момент ничего не меняет. Можно открыть красивый свод и всё равно ответить «в целом нормально». Я такой ответ не принимаю. Нормально начинается там, где неделю, канал и объявление можно ткнуть пальцем. Иначе ручная сборка возвращается в воскресенье сама. Имя экрана это не останавливает. Руками этот свод я больше не собираю. Этого хватает для понедельника.
Словарь «HR-аналитик кто это» живёт отдельно. Та страница про четыре работы в одной ставке. Эта страница про то, из чего у меня состоит день: дашборд, BI-свод, ETL и база.
Планёрка любит стек в шапке. Стек без зерна строки на планёрке молчит.
Четыре слоя, которые я называю работой
Вакансия аналитика данных почти всегда просит одно и то же. Достать данные. Сложить в таблицу. Посчитать метрику. Показать так, чтобы человек без SQL увидел дыру. Инструменты меняются. Порядок держится.
| Слой | Что делаю | Чем это кончается, если слой пустой |
|---|---|---|
| Выгрузка | Недельный xlsx из кабинета hh или Авито | Месяц усреднили и закрыли тему |
| ETL | Период, даты, профиль, ID объявления, канал | Сводную на следующей неделе собирают заново |
| База | Строка на ID × канал × неделю | Один лист «всё по компании» |
| Дашборд | Свод, где дыра видна отдельной строкой | Карточки со средним CPL |
Публичный стек, которым это закрываю: SQL, Python, ETL, кастомные дашборды, Яндекс DataLens там, где отчёт должен открываться без моего ноутбука. Excel остаётся входом. HRD часто приносит лист. Выгрузки из базы в этом письме нет. Словарь того, что пишут в вакансиях, разобран отдельно: стек в вакансиях 2026. Excel на входе, SQL и один BI. Это словарь объявления. К моей должности он отношения не имеет.
Пять дашбордов и двенадцать отчётов
На размещениях стоят 5 дашбордов и 12 отчётов. Вместе они сняли 20+ часов ручной сборки в месяц. Конверсия воронки подбора, которую я разбирал на SQL и Python, выросла на 12%. Якорь с резюме. Бенчмарк рынка из этого не следует. Цифра демо на сайте тоже другая.
12% здесь — воронка подбора работодателя, а не моя воронка поиска работы. Свою воронку соискателя считаю отдельно и в отчёт клиента не кладу. Демо Свода Avito + hh.ru на этом сайте синтетическое: механика как в проде, имена клиентов и абсолютные бюджеты не публикую.
Экраны отвечают на четыре вопроса. Иначе эти вопросы живут в разных чатах.
- Куда ушёл бюджет недели по конкретному ID. «По кабинету в целом» таким ответом не считается.
- Какой канал дал отклики на эту вакансию. hh и Авито лежат отдельно.
- Где бюджет есть, а откликов нет. Строка остаётся. Нулём в среднем CPL её не заменяю.
- Какая вилка и какой пакет видны снаружи. Это уже HR Stats, кабинет площадки тут ни при чём.
Как считается дробь «бюджет / отклики», разобрано в статье про CPL отклика. Здесь другой упор. Дашборд без витрины под ним — картинка. На следующей неделе её собирают руками, и 20+ часов возвращаются.
ETL, без которого экран врёт
Кабинеты отдают xlsx. Имя файла несёт неделю. Даты внутри файла живут в двух форматах. Пока это не разложено в базу, BI показывает то, что случайно склеилось при открытии листа.
Пайплайн забирает еженедельные выгрузки Avito и hh.ru. На пару «клиент × канал» свои таблицы. Профиль вакансии режется отдельно от ID. Замер правил и хвост заголовков, которые правило не берёт, лежат в статье про недельную витрину. Это продовая проверка, не бенчмарк рынка. На дашборде я делаю другое. Строку с кривым профилем не растворяю в среднем. Она висит, пока заголовок не разберут.
Отдельно всплыл баг дат. ISO-дата без явного формата читалась как dayfirst: 9 июня становилось 6 сентября. Флаг «новая публикация» уходил в ноль по каналу. Отчёт выглядел так, будто новых объявлений нет. Дашборд при этом открывался. Цифра была чужой недели.
Разговор про инструмент я с этого не начинаю. Сначала зерно строки. Потом загрузка. Потом экран. Подробно про зерно — в статье про недельную витрину.
Где область кончается
HR-аналитика как область упирается в три контура: поток размещений, рынок снаружи, кадры внутри компании. Первые два закрываю я. Третий — текучесть и знаменатель — кладу в ту же базу, если есть выгрузка movement. Вести 1С:ЗУП при этом не берусь. Формулу знаменателя вынес отдельно: текучесть и знаменатель.
Чего не делаю, даже если вакансия просит «посчитать HR» одной фразой.
- Кандидата по этапам не веду и вакансию руками не закрываю.
- Приказ не пишу и кадровый контур не администрирую.
- Резюме не скорю и аналитикой данных это не называю.
- Свою воронку откликов на hh с воронкой клиента не смешиваю.
Если в объявлении склеены рекрутер, кадровик и дашборд, это три работы. Откликаюсь на третью.
Как отличаю отчёт от пересказа кабинета
Кабинет умеет показать итог. Отчёт начинается там, где итог разложен до ID. Если на вопрос «куда ушли деньги» отвечают «в целом нормально», передо мной пересказ. BI тут ещё не было.
Проверяю тремя вопросами. Новой метрики не ввожу.
Первый. Можно ли ткнуть в строку и увидеть неделю, канал и объявление. Если нет, среднее уже съело решение.
Второй. Повторится ли эта строка в следующий понедельник без ручной сборки. Если нет, 20+ часов, которые сняли 12 отчётов, возвращаются. Дашборд, который живёт один раз, системой не считаю.
Третий. Не подменил ли экран цену входа ценой найма. CPL отвечает, сколько стоил отклик. Стоимость закрытия — другая дробь. Своей цифры закрытия в публичном тексте нет. Смешать их на одном слайде значит защищать дешёвый клик так, будто он уже человек на работе.
Порядок ставлю выше выбора инструмента. Сначала зерно и загрузка. Потом проверка, что неделя не уехала из-за даты. Потом экран, на котором дыра на виду. DataLens, SQL и Python повторяют этот порядок. Вопрос, который экран обязан закрыть, они не заменяют.
HR Stats входит в схему вторым контуром. Вторым работодателем он не становится. Вилка и пакет конкурента из кабинета hh не считаются. Кабинет говорит, сколько мы платим за свой отклик. Рынок говорит, что кандидат видит снаружи. На одном дашборде я их не складываю. Иначе получается фраза «мы дороже рынка» без знаменателя.
Живой свод, где канал, неделя и метрика лежат рядом, открывается отдельно: Свод · Avito + hh.ru. Данные там синтетические. Логика экрана та, по которой смотрю неделю в проде.
Если нужен словарь вакансии, он в статье про стек HR-аналитика. Дробь цены отклика — CPL. Граница роли с рекрутером и кадровиком — кто такой HR-аналитик.
Старые статьи оставляю на месте. Они отвечают на HR-запросы и называют область словами, которые ищут в вакансии. Эта страница отвечает на другой запрос: аналитик данных, у которого область уже собрана в дашборды, витрину и базу. Заголовки старых статей переклеивать не стал. Ссылки отсюда хватает. На созвоне показываю витрину.
Дальше по теме
Открыть Свод · Avito + hh.ru