Автоматизация онбординга сотрудников с AI
Онбординг нового сотрудника — это 2–4 недели повторяющихся объяснений, которые даются каждому. AI-система автоматизирует информационную часть (ответы на вопросы, доступ к документам, введение в процессы), оставляя живым только то, что требует человеческого контакта.
Архитектура AI-онбординга
from anthropic import Anthropic
from pydantic import BaseModel
from typing import Literal, Optional
import json
from datetime import datetime, timedelta
client = Anthropic()
class NewEmployee(BaseModel):
employee_id: str
name: str
department: str
role: str
start_date: str
manager_id: str
mentor_id: Optional[str] = None
it_systems_access: list[str] = []
completed_steps: list[str] = []
class OnboardingPlan(BaseModel):
employee_id: str
steps: list[dict] # {id, title, description, due_day, completed, category}
day_1_schedule: list[dict]
week_1_goals: list[str]
key_contacts: list[dict]
class AIOnboardingSystem:
def __init__(self, company_kb_path: str):
self.company_kb = self._load_knowledge_base(company_kb_path)
self.conversation_history: dict[str, list] = {}
def _load_knowledge_base(self, path: str) -> str:
"""Загружает корпоративную базу знаний"""
from pathlib import Path
kb_parts = []
for md_file in Path(path).rglob("*.md"):
kb_parts.append(md_file.read_text())
return "\n\n".join(kb_parts[:20]) # Топ-20 файлов
def create_onboarding_plan(self, employee: NewEmployee) -> OnboardingPlan:
"""Создаёт персонализированный план онбординга"""
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=4096,
messages=[{
"role": "user",
"content": f"""Создай план онбординга для нового сотрудника.
Сотрудник:
- Имя: {employee.name}
- Должность: {employee.role}
- Отдел: {employee.department}
- Дата выхода: {employee.start_date}
Информация о компании:
{self.company_kb[:2000]}
Верни JSON:
{{
"steps": [
{{
"id": "step_1",
"title": "...",
"description": "...",
"due_day": 1,
"category": "admin|technical|social|culture",
"completed": false
}}
],
"day_1_schedule": [
{{"time": "09:00", "activity": "...", "with_whom": "..."}}
],
"week_1_goals": ["..."],
"key_contacts": [
{{"role": "...", "purpose": "..."}}
]
}}
Включи шаги на 30 дней."""
}]
)
text = response.content[0].text
data = json.loads(text[text.find("{"):text.rfind("}") + 1])
return OnboardingPlan(employee_id=employee.employee_id, **data)
def answer_question(
self,
employee: NewEmployee,
question: str,
session_id: str,
) -> str:
"""Отвечает на вопрос нового сотрудника"""
history = self.conversation_history.get(session_id, [])
system_prompt = f"""Ты — AI-помощник по онбордингу для нового сотрудника {employee.name}.
Должность: {employee.role}, отдел: {employee.department}.
База знаний компании:
{self.company_kb[:3000]}
Правила:
- Отвечай конкретно и структурированно
- Если информации нет в базе — честно скажи и предложи к кому обратиться
- Для срочных вопросов (доступы, оборудование) — направляй к HR/IT немедленно
- Используй имя сотрудника в ответах"""
messages = history + [{"role": "user", "content": question}]
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system=system_prompt,
messages=messages,
)
answer = response.content[0].text
# Обновляем историю
history.append({"role": "user", "content": question})
history.append({"role": "assistant", "content": answer})
self.conversation_history[session_id] = history[-20:] # Храним последние 10 обменов
return answer
def generate_daily_checklist(self, employee: NewEmployee, day: int) -> list[dict]:
"""Генерирует чеклист задач на конкретный день"""
response = client.messages.create(
model="claude-haiku-4-5",
max_tokens=1024,
messages=[{
"role": "user",
"content": f"""Создай чеклист задач для нового сотрудника на день {day} онбординга.
Сотрудник: {employee.role} в отделе {employee.department}
Уже выполнено: {employee.completed_steps}
Верни JSON:
[{{
"task": "...",
"category": "admin|technical|social|learning",
"priority": "must|should|nice",
"estimated_minutes": 30,
"resources": ["ссылка или инструкция"]
}}]
5-8 задач, реалистичных для одного дня."""
}]
)
text = response.content[0].text
start = text.find("[")
end = text.rfind("]") + 1
return json.loads(text[start:end])
def send_proactive_tips(self, employee: NewEmployee, day: int) -> str:
"""Отправляет проактивные советы в начале дня"""
tips_by_day = {
1: "знакомство с командой и рабочим местом",
3: "начало работы с основными инструментами",
5: "первые рабочие задачи",
14: "промежуточный чекин и вопросы",
30: "итоги первого месяца",
}
if day not in tips_by_day:
return ""
response = client.messages.create(
model="claude-haiku-4-5",
max_tokens=512,
messages=[{
"role": "user",
"content": f"""Напиши короткое (3-4 предложения) приветственное сообщение для нового сотрудника на день {day}.
Фокус дня: {tips_by_day[day]}.
Тон: дружелюбный, поддерживающий, конкретный.
Имя: {employee.name}."""
}]
)
return response.content[0].text
Автоматические задачи HR и IT
class OnboardingAutomation:
"""Автоматизирует административные задачи онбординга"""
def create_it_request(self, employee: NewEmployee) -> dict:
"""Генерирует IT-запрос на доступы"""
response = client.messages.create(
model="claude-haiku-4-5",
max_tokens=512,
messages=[{
"role": "user",
"content": f"""Создай IT-заявку на настройку рабочего места.
Сотрудник: {employee.name}
Должность: {employee.role}
Отдел: {employee.department}
Стандартный список доступов для роли + специфические системы.
Верни JSON: {{"systems": [...], "priority": "high", "notes": "..."}}"""
}]
)
text = response.content[0].text
return json.loads(text[text.find("{"):text.rfind("}") + 1])
def generate_welcome_email(self, employee: NewEmployee, plan: OnboardingPlan) -> str:
"""Генерирует персонализированное welcome письмо"""
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{
"role": "user",
"content": f"""Напиши welcome email для нового сотрудника.
Сотрудник: {employee.name}, {employee.role}
День выхода: {employee.start_date}
Первые три шага по плану: {json.dumps(plan.steps[:3], ensure_ascii=False)}
Расписание первого дня: {json.dumps(plan.day_1_schedule, ensure_ascii=False)}
Email должен быть: тёплым, конкретным, с чёткими инструкциями на первый день.
Не более 300 слов."""
}]
)
return response.content[0].text
Практический кейс: IT-компания 150 сотрудников
Ситуация: нанимали 5–7 человек в месяц, HR тратил 60% времени на онбординг (одни и те же вопросы, объяснения, настройки).
Внедрение:
- База знаний: 85 MD-файлов о компании, процессах, инструментах
- Telegram-бот для вопросов нового сотрудника
- Автоматические чеклисты на каждый день первого месяца
- Интеграция с Jira (автосоздание задач)
Результаты:
- Время HR на одного нового сотрудника: 8 часов → 2.5 часа
- Вопросы первого месяца, решённые без HR: 73%
- Скорость до первой продуктивной задачи: 21 день → 12 дней
- Оценка онбординга сотрудниками: 3.4/5 → 4.6/5
Ключевой фактор: новые сотрудники не боялись задавать "глупые" вопросы боту — получали ответ немедленно, без ощущения что отвлекают коллег.
Сроки
- AI-ассистент для ответов на вопросы: 3–5 дней
- Персонализированный план онбординга: 1 неделя
- Автоматические чеклисты + уведомления: 1 неделя
- Полная интеграция с HR-системой и Jira: 2–3 недели







