AI-платформа оценки кандидатов UnoHR
Автоматический скоринг откликов и поиска резюме с HeadHunter: ранжирование кандидатов, лимиты тарифа и единый вход для HR-команд.
О проекте
Обратились с запросом на разработку сервиса для подбора и оценки кандидатов: нужен единый инструмент, который подключается к HeadHunter, забирает отклики и резюме, оценивает их по правилам «идеального кандидата» и выводит приоритизированную воронку вместо хронологического списка.
Это полноценная B2B SaaS-платформа с backend API, React-интерфейсом, фоновыми очередями скоринга, интеграцией с экосистемой UnoLogin (SSO и организации) и встроенным биллингом UnoBilling.
Технологии
- Node.js
- Express
- TypeScript
- Prisma
- PostgreSQL
- Redis
- Bull
- OpenAI
- React
- Vite
- Tailwind CSS
- Docker
- UnoLogin
- UnoBilling
- HeadHunter API
Что разработано
- Backend API на Node.js + Express + TypeScript с мультитенантностью по company_id и Prisma ORM
- Интеграция с hh.ru: OAuth на уровне компании, синхронизация вакансий и откликов, поиск резюме, кэш и retry для API
- AI-модуль на OpenAI (gpt-4o-mini): summary, pros/cons, rule_scores и итоговый score 0–100
- Rule-based скоринг: навыки, опыт, tenure, keyword, зарплата, город, график с шаблонами Backend Core, Recruiter, B2B Sales
- Фоновые очереди Bull (scoring-queue, import-queue) с Redis lock и cron-автосинхронизацией
- Контур «Вакансия → отклики → скоринг»: авто- и ручной запуск, флаг is_active_scoring, пересчёт rank
- Контур «Подписка на поиск резюме»: параметры HH, дневной лимит, incremental sync, скоринг в рамках тарифа
- Интеграция UnoLogin: виджет авторизации, B2B-организации, Members/Account в шапке
- Интеграция UnoBilling: entitlements, checkout, webhook, учёт метрики resume_checks, iframe виджета тарифов
- Web-приложение (React + shadcn/ui): вакансии, кандидаты, подписки, настройки HH, биллинг, мастер запуска скоринга
- SSE live updates для списков кандидатов в реальном времени
- Docker Compose-инфраструктура: PostgreSQL, Redis, backend, frontend, UnoBilling
Ключевые фичи
- Два режима работы: оценка откликов на вакансию и подписка на поиск резюме с единой моделью Candidate
- Подключение hh.ru через OAuth компании и персональный access token рекрутёра (AES-шифрование в БД)
- Синхронизация вакансий и откликов, импорт резюме по параметрам поиска HH (key-value search_query)
- Настраиваемые критерии скоринга с шаблонами и запретом дискриминирующих типов (age, gender и др.)
- AI-оценка: итоговый балл, краткое резюме, pros/cons, breakdown по правилам
- SQL-ранжирование RANK() после каждого скоринга — кандидаты всегда отсортированы по приоритету
- Автоскоринг вакансий: cron каждые 5 мин для вакансий с is_active_scoring, cron каждый час для активных подписок
- Асинхронный pipeline: import → scoring через Bull с Redis lock и ScoringLog
- Проверка баланса и списание usage в UnoBilling перед каждой AI-проверкой
- Дневной лимит проверок для подписок на поиск резюме (Redis-счётчик daily:subscription)
- Rate limiting OpenAI per company и retry HH API при 429/503 с Retry-After
- Мастер запуска скоринга: выбор вакансии → настройка критериев → preview и trial run
- Live UI через SSE: обновление списка кандидатов без перезагрузки страницы
- Страница настроек: статус HH OAuth, синхронизация, ключ рекрутёра
- Биллинг: статус подписки, entitlements, checkout, webhook low/depleted balance
- Роли admin и recruiter с разграничением доступа к вакансиям и скорингу
- Audit log действий по биллингу и подпискам
Решение задачи
Платформа перевела первичный скрининг кандидатов с hh.ru из ручного просмотра сотен резюме в управляемый AI-контур с едиными критериями, прозрачным ранжированием и контролем расхода проверок.
HR-команда настраивает правила один раз, включает автоскоринг на нужных вакансиях и фокусируется на топе списка; компания получает предсказуемую тарификацию через UnoBilling и единый вход команды через UnoLogin.
Результаты
Заказать похожий проект
Оставьте заявку — обсудим задачу и предложим решение под ваш бизнес.
Оставить заявку