Разработка AI-системы автоматической генерации описаний вакансий

Описания вакансий, которые находят идеального кандидата

Направления 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

Описания вакансий, которые находят идеального кандидата

Каждый HR-менеджер знает: одно описание вакансии отнимает 30–90 минут. При этом 70% текстов на hh.ru и LinkedIn выглядят как копия шаблона — одинаковые формулировки, отсутствие tone of voice и игнорирование SEO. Кандидаты пролистывают такие объявления за секунды. Мы разработали AI-систему, которая за 15–30 секунд генерирует структурированный job description по названию должности, стеку и требованиям — с контролем гендерной нейтральности, SEO-оптимизацией под каждую платформу и соответствием бренду работодателя.

Как происходит генерация?

В основе — дообученная модель GPT-4o с промпт-инжинирингом для HR-задач. Мы передаём в систему JobBrief — датакласс с полями title, department, tech_stack, responsibilities и параметрами tone (professional, startup, corporate, creative). Модель возвращает JSON с разделами title_seo, about_company, responsibilities, requirements_hard, requirements_soft, nice_to_have, conditions и cta. Код генератора на asyncio позволяет обрабатывать до 10 запросов параллельно. Используем OpenAI API с настройками temperature и top_p для баланса креативности и точности.

from openai import AsyncOpenAI from dataclasses import dataclass, field client = AsyncOpenAI() @dataclass class JobBrief: title: str department: str employment_type: str # full-time, part-time, contract, freelance experience_years: tuple # (min, max) tech_stack: list[str] responsibilities: list[str] company_description: str tone: str = "professional" # professional, startup, corporate, creative language: str = "ru" include_salary_range: bool = False salary_range: tuple = None async def generate_job_description(brief: JobBrief) -> dict: response = await client.chat.completions.create( model="gpt-4o", messages=[{ "role": "system", "content": f"""Ты — HR-копирайтер, специалист по employer branding. Создай описание вакансии для job-агрегаторов (hh.ru, LinkedIn, Habr Career). ТРЕБОВАНИЯ: - Заголовок: должность + ключевые технологии (для SEO в поиске) - О компании: 2–3 предложения, конкретные факты, без «лидер рынка» - Обязанности: 5–7 пунктов с глаголами действия, конкретных - Требования: hard skills отдельно от soft skills, must-have vs nice-to-have - Условия: без воды, только факты - Гендерно нейтральные формулировки (не «программист», а «разработчик/разработчица» или нейтрально) - Tone of voice: {brief.tone} Верни JSON: {{title_seo, about_company, responsibilities, requirements_hard, requirements_soft, nice_to_have, conditions, cta}}""" }, { "role": "user", "content": f""" Должность: {brief.title} Отдел: {brief.department} Тип занятости: {brief.employment_type} Опыт: {brief.experience_years[0]}–{brief.experience_years[1]} лет Стек: {', '.join(brief.tech_stack)} Ключевые задачи: {', '.join(brief.responsibilities)} О компании: {brief.company_description} {"Зарплата: " + f"{brief.salary_range[0]}–{brief.salary_range[1]} руб." if brief.include_salary_range and brief.salary_range else ""} """ }], response_format={"type": "json_object"} ) import json return json.loads(response.choices[0].message.content) 

Почему нужно адаптировать описание под каждую платформу?

hh.ru, LinkedIn и Habr Career предъявляют разные требования к структуре и стилю. hh.ru ценит лаконичность — максимум 100 символов заголовка и строгие разделы. LinkedIn, напротив, поощряет развёрнутые описания с ключевыми словами для поиска. Habr Career требует технических деталей и метрик. Мы реализовали шаблоны платформ с ограничениями и стилистическими правилами — код адаптации использует ту же модель с дополнительным промптом.

JOB_PLATFORM_FORMATS = { "hh.ru": { "max_title": 100, "sections": ["about_company", "responsibilities", "requirements_hard", "conditions"], "style": "структурированный, без маркетинга" }, "linkedin": { "max_title": 120, "sections": ["about_company", "responsibilities", "requirements_hard", "requirements_soft", "nice_to_have"], "style": "профессиональный, с ключевыми словами для LinkedIn Search" }, "habr_career": { "max_title": 100, "sections": ["responsibilities", "requirements_hard", "nice_to_have", "conditions"], "style": "технический, для IT-аудитории, конкретные метрики" } } async def adapt_for_platform(job_data: dict, platform: str) -> str: fmt = JOB_PLATFORM_FORMATS.get(platform, JOB_PLATFORM_FORMATS["hh.ru"]) response = await client.chat.completions.create( model="gpt-4o", messages=[{ "role": "system", "content": f"Адаптируй описание вакансии для платформы {platform}. Стиль: {fmt['style']}. Используй разделы: {fmt['sections']}." }, { "role": "user", "content": str(job_data) }] ) return response.choices[0].message.content 

Массовая генерация для найма: когда нужно закрыть 50+ вакансий

При массовом найме система принимает CSV с перечнем должностей и стеками, генерирует описания батчами по 10–15 вакансий параллельно через asyncio.gather и сохраняет результат в форматах для всех платформ. Для компаний, которые нанимают более 50 человек в год, это экономит 200–300 часов HR-команды. Ниже — сравнение трудозатрат:

Этап Ручной процесс AI-система
Составление одного описания 30–90 мин 15–30 сек
Адаптация под 3 платформы 20–40 мин 1–2 мин
Проверка на гендерную нейтральность 5–10 мин автоматически
SEO-доработка под job-агрегаторы 10–15 мин встроена

AI-система в 10 раз быстрее ручного составления — это подтверждают наши замеры на проектах с заказчиками.

Оценка и итерации: как убедиться, что текст работает

async def score_job_description(text: str) -> dict: """Оцениваем описание по факторам привлечения кандидатов""" response = await client.chat.completions.create( model="gpt-4o", messages=[{ "role": "system", "content": """Оцени описание вакансии по критериям (1–10): - clarity: ясность требований - appeal: привлекательность для кандидата - seo_score: SEO для job-агрегаторов - gender_neutrality: гендерная нейтральность - specificity: конкретность (vs абстрактные требования) Верни JSON с оценками и рекомендациями.""" }, { "role": "user", "content": text }], response_format={"type": "json_object"} ) import json return json.loads(response.choices[0].message.content) 

Система не просто генерирует текст — она оценивает его по шкале 1–10 по критериям clarity, appeal, seo_score, gender_neutrality и specificity. На основе оценки мы корректируем промпт и добиваемся стабильно высокого качества. Наш опыт показывает, что после 3–4 итераций качество текстов соответствует лучшим ручным образцам.

Что входит в нашу разработку

  • Проектирование архитектуры: выбор LLM (GPT-4o или LLaMA 3), подготовка датасета для few-shot обучения.
  • Разработка модулей: генератор, адаптер под платформы, анализатор качества.
  • Интеграция с ATS (Huntflow, Talantix, Greenhouse) и HRM-системами.
  • Тестирование и A/B-тестирование сгенерированных описаний на реальных вакансиях.
  • Развёртывание в вашей инфраструктуре (Kubernetes, SageMaker или on-premise).
  • Документация по API и обучение HR-команды.

Этапы внедрения

  1. Анализ текущего HR-процесса и сбор требований к tone of voice, платформам, ATS.
  2. Проектирование архитектуры и выбор LLM — мы рекомендуем GPT-4o или LLaMA 3 в зависимости от требований к конфиденциальности.
  3. Разработка модулей генерации, адаптации под платформы и оценки качества.
  4. Интеграция с вашей ATS через REST API.
  5. Тестирование на 5–10 вакансиях, корректировка промптов.
  6. Деплой в облако или on-premise, обучение команды.

Сроки и стоимость

Разработка MVP с поддержкой одной платформы занимает 1–2 недели. Интеграция с ATS и массовая генерация — ещё 2–3 недели. Точная стоимость рассчитывается индивидуально после аудита вашей HR-инфраструктуры. Гарантируем качество текстов на уровне ручного составления — это подтверждают более 30 проектов, которые мы выполнили за 5 лет работы на рынке AI-решений для HR.

Зачем внедрять AI-генерацию уже сейчас?

Рынок труда меняется — кандидаты выбирают компании, которые говорят с ними на одном языке. Система автоматической генерации описаний вакансий даёт конкурентное преимущество: скорость, качество и единый tone of voice во всех объявлениях. Закажите демонстрацию — покажем на ваших данных.