Ứng viên đã ký offer. Giai đoạn onboarding quyết định 30 ngày đầu và tỉ lệ giữ chân nhân sự. Bài này xây agent tự động sinh checklist onboarding cá nhân hóa theo vai trò, giao task đúng người, và theo dõi tiến độ.
Onboarding thủ công hỏng ở đâu
Thường HR có một file Excel chung cho mọi vị trí, dẫn đến: task thừa (kế toán được cấp quyền server), task thiếu (dev không được add vào repo), và không ai biết cái nào xong. Agent giải quyết bằng template theo vai trò + tự động giao + theo dõi trạng thái.
Kiến trúc: template + rule sinh task
Base template (mọi nhân viên):
- Ký hợp đồng, khai thuế, cấp email, cấp thẻ ra vào,
buổi định hướng văn hóa, gặp buddy
Role overlay (theo phòng ban/chức danh):
- Engineer: add vào Git, cấp máy dev, quyền staging, setup CI
- Sales : cấp CRM, tài liệu sản phẩm, shadow 3 cuộc gọi
- HR : quyền HRIS, quy trình tuyển dụng nội bộ
Seniority overlay:
- Manager: 1:1 với team, quyền duyệt chi, quyền phê nghỉ
Checklist cuối = Base + Role overlay + Seniority overlay. Cách phân lớp này tránh vừa thừa vừa thiếu.
Bước 1: Định nghĩa template dạng dữ liệu
base:
- id: contract_sign ; owner: hr ; due_offset_days: -3
- id: email_provision ; owner: it ; due_offset_days: -1
- id: culture_orient ; owner: hr ; due_offset_days: 1
roles:
engineer:
- id: git_access ; owner: it ; due_offset_days: 1
- id: dev_machine ; owner: it ; due_offset_days: -1
- id: staging_access ; owner: tech_lead ; due_offset_days: 2
due_offset_days tính theo ngày bắt đầu (day 0): số âm = làm trước khi vào, dương = sau khi vào. Đây là mấu chốt để onboarding không dồn hết vào ngày đầu.
Bước 2: Sinh checklist cho một tân binh
def build_checklist(hire):
tasks = list(template["base"])
tasks += template["roles"].get(hire.role, [])
if hire.is_manager:
tasks += template["seniority"]["manager"]
for t in tasks:
t["due_date"] = hire.start_date + days(t["due_offset_days"])
t["assignee"] = resolve_owner(t["owner"], hire) # ai cụ thể
return tasks
resolve_owner biến vai trò trừu tượng ("it", "tech_lead") thành người thật dựa trên phòng ban của tân binh — nếu không, task treo lơ lửng không ai làm.
Bước 3: Giao task & thông báo
Mỗi task được tạo trong công cụ quản lý (Asana/Trello/Notion/ticket) và gửi thông báo cho người phụ trách:
for t in checklist:
ticket = create_task(title=t["title"], assignee=t["assignee"], due=t["due_date"])
notify(t["assignee"], f"Onboarding {hire.name}: {t['title']} — hạn {t['due_date']}")
Bước 4: Theo dõi tiến độ & nhắc
Agent chạy định kỳ, phát hiện task quá hạn và nhắc:
def daily_sweep(hire):
overdue = [t for t in hire.tasks if t.status != "done" and t.due_date < today()]
for t in overdue:
escalate(t) # nhắc assignee, sau N ngày báo HR
hire.progress = done_count / total # % để dashboard
Cá nhân hóa bằng LLM (thận trọng)
LLM hữu ích để soạn nội dung (email chào mừng ấm áp, tóm tắt lịch tuần đầu theo văn phong công ty), nhưng không nên tự chế ra task cấp quyền hệ thống — quyền truy cập phải theo template rule-based để tránh cấp nhầm quyền nhạy cảm.
Khung "onboarding 30-60-90"
Ngày 0–7 : Truy cập & công cụ sẵn sàng, gặp team, hiểu vai trò
Ngày 8–30 : Task thật đầu tiên, gặp buddy hàng tuần
Ngày 31–60 : Đóng góp độc lập, review 30 ngày
Ngày 61–90 : Đánh giá thử việc, mục tiêu quý
Agent gắn task vào đúng mốc, không nhồi tất cả vào tuần đầu.
Checklist agent onboarding
- [ ] Template phân lớp base + role + seniority
- [ ]
due_offset_daysneo theo ngày bắt đầu - [ ] resolve_owner ra người thật, không để task mồ côi
- [ ] Task đẩy vào công cụ quản lý + thông báo
- [ ] Sweep hàng ngày phát hiện quá hạn + escalate
- [ ] Quyền hệ thống theo rule, không để LLM tự chế
Sai lầm thường gặp
- Một checklist chung cho mọi vai trò. Vừa thừa vừa thiếu; phân lớp theo role/seniority.
- Task không có người phụ trách cụ thể. "IT sẽ làm" = không ai làm. Phải resolve ra người thật.
- Dồn mọi task vào ngày đầu. Tân binh quá tải, người phụ trách cũng vậy. Dùng offset theo mốc.
- Để LLM tự tạo task cấp quyền. Rủi ro cấp nhầm quyền admin/nhạy cảm. Quyền phải rule-based.
- Sinh xong rồi bỏ. Không theo dõi thì task quá hạn âm thầm; cần sweep + escalate.