Радар вакансий Следующий проект: MES-система для КАДП →

Радар вакансий

Роль: дизайнер и разработчик Стек: n8n, Node.js, SQLite, React Тип: личный pet-проект
Открыть живой проект и демо →
Контекст

Радар вакансий (Job Radar) — личный сервис, который сам собирает вакансии с hh.ru и ещё ~120 сайтов, склеивает дубли, отсеивает лишнее и помогает вести отклики и контакты с HR в одной таблице.

Поиск работы — это ежедневный обход агрегаторов и карьерных страниц компаний, одни и те же вакансии на разных сайтах и ручной учёт откликов. Сначала я собрал в n8n агрегатор вакансий, который публиковал подборку отдельной HTML-страницей. Одной страницы оказалось мало: нужны были статусы, заметки, история и контакты работодателей. Так агрегатор вырос в отдельное веб-приложение с мини-CRM, а n8n остался роботом, который собирает данные.

Моя роль: спроектировал и самостоятельно реализовал весь сервис — от пайплайна сбора до интерфейса.

Радар вакансий — дашборд

Дашборд: вакансии за день и месяц, вилка зарплат, востребованные навыки (демо-режим)

Как работает
  • Пользователь задаёт поиск: роль, ключевые и стоп-слова, дату «не раньше» и сколько раз в день искать (до 24 автосборов).
  • n8n на моём сервере обходит агрегаторы и карьерные страницы компаний через Browserless — по расписанию или по кнопке «Искать сейчас».
  • Приложение склеивает одну вакансию с разных сайтов в группу, дополняет детали из карточки (формат, занятость, опыт, зарплата, навыки) и отмечает снятые с публикации.
  • Дальше — статус, заметка и письмо HR в той же таблице.
Радар вакансий — таблица вакансий

Одна таблица вместо десятка вкладок: фильтры, вкладки «Активные», «В архиве», «Скрытые»

Возможности

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

Кроме автосбора по расписанию, поиск можно запустить кнопкой «Искать сейчас». Прогресс идёт по реальным этапам пайплайна, в конце — сколько найдено и сколько из них новых.

Отдельно ведётся список целевых компаний с порталом вакансий, контактами HR и ИТ-аккредитацией — чтобы писать напрямую, а не только откликаться через сайты.

Радар вакансий — настройки таблицы

Настройки таблицы: видимость, порядок и закрепление колонок

Радар вакансий — «Искать сейчас»

«Искать сейчас»: прогресс сбора по этапам

Радар вакансий — целевые работодатели

Целевые работодатели

Под капотом — пайплайн n8n

Сбор вакансий — это workflow в n8n на моём сервере. Его запускают три триггера: расписание (проверка каждые 30 минут), вебхук от кнопки «Искать сейчас» в приложении и ручной запуск для отладки.

Дальше пайплайн забирает настройки поиска из приложения, собирает список источников, открывает сайты в headless Chromium через Browserless, объединяет результаты и фильтрует их по роли, ключевым и стоп-словам. По отобранным вакансиям он открывает карточки, дополняет детали и отправляет всё в веб-приложение.

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

Пайплайн Job Radar в n8n

Workflow «Job Radar Multisource» в n8n: 31 узел — триггеры, сбор, фильтр, детали, отправка и проверка архива

Результат

Прошёл путь от личной задачи до работающего сервиса: n8n и Browserless для сбора, Node.js, Express и SQLite для приложения, интерфейс на React-компонентах общей дизайн-системы DS Storm.

AI в пайплайне сознательно не используется: отбор идёт по правилам, без зависимости от LLM. Для знакомства есть демо-режим на выдуманных вакансиях и компаниях — все скриншоты интерфейса сняты в нём.