Автоматизація онбордингу робітників з 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:
"""Генерує персоналізоване привітальне письмо"""
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{
"role": "user",
"content": f"""Напишіть привітальне письмо для нового співробітника.
Співробітник: {employee.name}, {employee.role}
Дата початку: {employee.start_date}
Перші три кроки за планом: {json.dumps(plan.steps[:3], ensure_ascii=False)}
Розписання першого дня: {json.dumps(plan.day_1_schedule, ensure_ascii=False)}
Письмо повинно бути: теплим, конкретним, з чіткими інструкціями на перший день.
Не більше 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 тижні







