Розробка AI-системи парсингу резюме з job-сайтів

Масовий парсинг резюме з <cite>hh.ru</cite>, SuperJob, Rabota.ru та LinkedIn — завдання, яке ми вирішуємо під ключ. Щодня система обробляє тисячі нових резюме, знижуючи ручну працю рекрутерів на 90%. Замість копіювання даних з 3–4 джерел ви отримуєте єдину, автоматично оновлювану базу кандидатів з A

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1006

Масовий парсинг резюме з hh.ru, SuperJob, Rabota.ru та LinkedIn — завдання, яке ми вирішуємо під ключ. Щодня система обробляє тисячі нових резюме, знижуючи ручну працю рекрутерів на 90%. Замість копіювання даних з 3–4 джерел ви отримуєте єдину, автоматично оновлювану базу кандидатів з AI-збагаченням: грейд (junior/middle/senior/lead), стек технологій, сумарний досвід у роках. Зниження витрат на підбір до 80% еквівалентно економії понад $4.5k–6.5k. на рік на кожні 1000 резюме. Використання офіційних API знижує вартість збору одного резюме до $1–1. проти $1–1. при ручному копіюванні. Нижче розберемо технічні деталі: як уникнути блокувань при парсингу, нормалізувати різнорідні схеми даних та не потонути в дублікатах. Всі рішення відповідають robots.txt та офіційним API.

API vs парсинг: вибір стратегії

Критерій Офіційний API Парсинг (HTML scraping)
Надійність Висока, не блокується Середня, вимагає обходу захисту
Швидкість Висока (до 1000 запитів/хв) Низька (не більше 5 запитів/сек)
Повнота даних Повна структурована інформація Тільки видиме, можливі капчі
Юридична безпека Дозволено ToS Сірі зони, ризик блокування IP
Вартість Платний Безкоштовно, але ресурсоємко

Для Росії: hh.ru та SuperJob мають офіційні API для роботодавців. Рекомендуємо починати з них. Парсинг використовуємо тільки для Rabota.ru та LinkedIn, де API немає або він обмежений. При парсингу через API витрати на одне резюме мінімальні, а надійність у 10 разів вища, ніж при HTML scraping.

Як знизити ризики блокування при парсингу?

Для LinkedIn та Rabota.ru використовуємо Playwright з ротацією user-agent та проксі. Одного разу на проекті з 500 резюме на день зіткнулися з капчею на Rabota.ru — довелося впровадити сервіс розпізнавання зображень. Після адаптації стабільність парсингу досягла 98%.

Нормалізація даних: ключ до єдиної бази

Кожен job-сайт повертає дані у своєму форматі. Без нормалізації ви не зможете об'єднати резюме в єдину базу. Ми приводимо всі резюме до єдиної схеми на Pydantic:

class NormalizedResume(BaseModel): source: str # "hh.ru" | "superjob" | "rabota.ru" source_id: str # ID на джерелі full_name: str age: int | None city: str | None desired_position: str desired_salary: int | None currency: str experience: list[WorkExperience] education: list[Education] skills: list[str] # нормалізовані навички languages: list[LanguageSkill] last_updated: datetime # AI-збагачення seniority_level: str # junior/middle/senior/lead — AI оцінка tech_stack: list[str] # стек технологій — витягнуто AI experience_years: float # сумарний досвід 
Приклад нормалізованого резюме
{ "source": "hh.ru", "source_id": "123456", "full_name": "Іванов Іван", "age": 30, "city": "Київ", "desired_position": "Python розробник", "desired_salary": 200000, "currency": "USD", "experience": [ { "company": "ТОВ Технології", "position": "Senior Python developer", "start_date": "2020-01", "end_date": "2023-06", "description": "Розробка бекенду на FastAPI" } ], "education": [ { "institution": "КНУ", "degree": "Бакалавр", "field": "Прикладна математика", "graduation_year": 2016 } ], "skills": ["Python", "FastAPI", "PostgreSQL"], "languages": [{"language": "Англійська", "level": "B2"}], "last_updated": "2025-02-01T10:00:00", "seniority_level": "senior", "tech_stack": ["Python", "FastAPI", "PostgreSQL", "Docker"], "experience_years": 8.5 } 

Що дає AI-збагачення резюме?

AI-модель (GPT-4o або LLaMA 3) визначає грейд та технології на льоту — це в 1.4 рази точніше за ручне тегування. Економія часу рекрутера — до 80% на обробці кожного резюме.

Дедуплікація кандидатів: трирівневий метод

Один кандидат часто розміщує резюме на 2–3 сайтах. Наша система виявляє дублікати трирівневим методом:

Метод Основа Точність Дія при збігу
Точний збіг контактів Телефон/email (якщо відкриті) 100% Автоматичне злиття
Семантична схожість Ембеддінги intfloat/multilingual-e5-large >0.85 Пропонувати об'єднання
Fuzzy matching Ім'я + місто + поточний роботодавець (відстань Левенштейна) >0.95 Автоматичне злиття

При similarity > 0.85 — пропонуємо об'єднання, при > 0.95 — зливаємо автоматично. Це виключає до 95% дублікатів без втрати даних.

Оновлення бази кандидатів за тригерами

Резюме застарівають, тому система оновлює їх за тригерами:

  • Кандидат оновив резюме на джерелі (webhook або періодичний poll раз на годину).
  • Минуло 30 днів без змін — фоновий репарсинг.
  • Кандидат відгукнувся на вакансію — пріоритетне оновлення.

Такий підхід гарантує актуальність бази із затримкою не більше 1 години.

Етапи впровадження системи парсингу резюме

  1. Аналітика: визначаємо джерела, обсяги даних, вимоги до ATS. Збираємо приклади резюме для тестування.
  2. Проєктування: вибираємо між API та парсингом, проєктуємо схему нормалізації, pipeline дедуплікації та збагачення.
  3. Реалізація: пишемо парсери (Scrapy/Playwright), підключаємо AI-модель, налаштовуємо дедуплікацію та інтеграцію з ATS.
  4. Тестування: запускаємо на тестових даних, перевіряємо точність вилучення, швидкість та надійність.
  5. Деплой: розгортаємо на серверах (Docker, Kubernetes), налаштовуємо моніторинг (Grafana, Prometheus) та CI/CD.

Що входить в роботу

  • Документація: опис архітектури, схеми даних, інструкція з експлуатації.
  • Доступи: до backend (FastAPI), адмін-панелі, Grafana-метрикам.
  • Навчання: 2 сесії для вашої команди (адміністрування та налаштування правил).
  • Підтримка: 2 тижні після запуску + гарантія на код 6 місяців.

Також за запитом додаємо кастомні правила збагачення: наприклад, виділення сертифікатів, проектів або soft skills через few-shot промпти для LLM. Тестуємо на вибірці з 100 резюме.

Отримайте консультацію по вашому проекту сьогодні — оцінимо проект за 1 день і запропонуємо оптимальне рішення. Замовте розробку системи під ключ і автоматизуйте підбір персоналу.