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

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Розробка AI-системи автоматичної генерації описів вакансій
Простий
~2-3 дні
Часті запитання

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

Етапи розробки AI-рішення

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

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

AI-автогенерація описів вакансій

HR-відділ витрачає від 30 до 90 хвилин на складання одного опису вакансії. AI-система генерує структурований job description за 15–30 секунд за названням посади, стеком та ключовими вимогами — зберігаючи tone of voice компанії, гендерно-нейтральні формулювання та SEO-оптимізацію для агрегаторів вакансій.

Генератор описів вакансій

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 = "uk"
    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.
            Створіть опис вакансії для агрегаторів вакансій (LinkedIn, Indeed, GitHub Jobs).

            ВИМОГИ:
            - Заголовок: посада + ключові технології (для SEO в пошуку)
            - Про компанію: 2–3 речення, конкретні факти, без «лідер ринку»
            - Обов'язки: 5–7 пунктів з дієсловами дії, конкретні
            - Вимоги: hard skills окремо від soft skills, must-have проти 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]} років
            Tech stack: {', '.join(brief.tech_stack)}
            Ключові завдання: {', '.join(brief.responsibilities)}
            Про компанію: {brief.company_description}
            {"Зарплата: " + f"{brief.salary_range[0]}–{brief.salary_range[1]} USD" 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)

Багатомовна генерація та адаптація під платформи

JOB_PLATFORM_FORMATS = {
    "linkedin": {
        "max_title": 120,
        "sections": ["about_company", "responsibilities", "requirements_hard", "requirements_soft", "nice_to_have"],
        "style": "професійний, з ключовими словами для LinkedIn Search"
    },
    "indeed": {
        "max_title": 100,
        "sections": ["about_company", "responsibilities", "requirements_hard", "conditions"],
        "style": "структурований, без маркетингу"
    },
    "github_jobs": {
        "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["linkedin"])
    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

Масова генерація для найму

При закритті кількох вакансій одночасно система приймає CSV з посадами та стеками, генерує описи партіями по 10–15 вакансій паралельно через asyncio.gather, зберігає в форматах для кожної платформи. Для компаній з наймом 50+ позицій на рік це скорочує навантаження HR-команди на 200–300 годин щорічно.

Аналіз ефективності текстів

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 для агрегаторів вакансій
            - gender_neutrality: гендерна нейтральність
            - specificity: конкретність (проти абстрактних вимог)
            Повертає JSON з оцінками та рекомендаціями."""
        }, {
            "role": "user",
            "content": text
        }],
        response_format={"type": "json_object"}
    )
    import json
    return json.loads(response.choices[0].message.content)

Генератор описів вакансій з адаптацією для 3 платформ готовий за 1–2 тижні. Інтеграція з ATS (Huntflow, Talantix, Greenhouse) та автоматичне розміщення — ще 2–3 тижні.