HackerRank (thông qua InterviewStreet) gần đây đã công khai mã nguồn hệ thống theo dõi ứng viên (ATS) nội bộ của mình, mang tên hiring-agent. Việc phát hành này đã khơi mào một cuộc tranh luận gay gắt trong cộng đồng nhà phát triển (trên HN, Reddit, X) sau khi các phân tích chuyên sâu chỉ ra rằng việc sàng lọc hồ sơ dựa trên LLM (mô hình ngôn ngữ lớn) tạo ra sự không nhất quán cực đoan, biến quá trình tuyển dụng thành một "bộ lọc may mắn" thay vì đánh giá công bằng năng lực. 😱
Dưới đây là một cái nhìn chi tiết về hệ thống này và những tranh cãi xung quanh nó:
Kho lưu trữ GitHub: interviewstreet/hiring-agent
Lĩnh vực trọng tâm: Tuyển dụng AI, ATS, Sàng lọc Hồ sơ, HR theo hướng tác tử (Agentic HR), Gemma 3, Gemini
---
1. Hệ Thống ATS Của HackerRank Hoạt Động Như Thế Nào
Hệ thống hiring-agent tuân theo một quy trình đa giai đoạn có hệ thống để đánh giá ứng viên kỹ thuật:
1. Phân tích (Parsing): Hồ sơ PDF của ứng viên được phân tích và chuyển đổi thành văn bản thuần túy. 2. Trích xuất (Extraction): Một LLM được gọi 6 lần để trích xuất dữ liệu JSON có cấu trúc theo các schema chính (thông tin cơ bản, lịch sử làm việc, học vấn, kỹ năng, dự án, giải thưởng). 3. Làm giàu ngữ cảnh GitHub (GitHub Context Enrichment): Công cụ này lấy tên người dùng GitHub của ứng viên, quét các kho lưu trữ công khai, trích xuất siêu dữ liệu (số sao, số fork, số commit) và thêm vào prompt. 4. Đánh giá dựa trên tiêu chí (Rubric-Based Evaluation): Tất cả dữ liệu được trích xuất và tín hiệu từ GitHub được đưa vào một prompt lớn để chấm điểm hồ sơ trên thang điểm 100, cộng thêm tối đa 20 điểm thưởng.
Bộ Tiêu Chí Đánh Giá Chuẩn (100 Điểm + 20 Điểm Thưởng)
* Đóng góp mã nguồn mở (35 Điểm): Quét hoạt động GitHub, pull request và vai trò duy trì dự án. * Dự án cá nhân (30 Điểm): Đánh giá độ phức tạp, thiết kế và khả năng triển khai thực tế của các dự án tự thực hiện. * Kinh nghiệm làm việc (25 Điểm): Đánh giá kinh nghiệm làm việc thực tế, thực tập hoặc kinh nghiệm kỹ thuật trong sản xuất. * Kỹ năng công nghệ (10 Điểm): Đánh giá mức độ rộng và sâu của các công nghệ được liệt kê. * Điểm thưởng (Tối đa +20 Điểm): Dành cho kinh nghiệm làm việc tại startup giai đoạn đầu, vai trò sáng lập, trang web portfolio hoặc blog kỹ thuật.
---
2. Tranh Cãi Lớn: Tính Không Nhất Quán Khổng Lồ 🤯
Một phân tích chuyên sâu của nhà phát triển Dan Kinsky đã chỉ ra những lỗ hổng nghiêm trọng khi chạy hệ thống ATS này với cùng một đầu vào sử dụng mô hình mặc định gemma3:4b chạy cục bộ qua Ollama với nhiệt độ (temperature) thấp là 0.1 (về lý thuyết nên cho ra kết quả xác định):
* Sự Biến Động Đáng Sợ: Trong 100 lần chạy cùng một hồ sơ, điểm số dao động điên cuồng từ 66 đến 99 trên 100. Điều này cho thấy sự thiếu ổn định nghiêm trọng của AI. 📉 * Hiệu Ứng "Bộ Lọc May Mắn": Nếu một quy trình tuyển dụng đặt ngưỡng tự động là 85 điểm, ứng viên đó sẽ qua trong một số lần chạy nhưng lại trượt tới 65% số lần chỉ vì sự ngẫu nhiên của thuật toán. Thật khó tin! 🎲 * Thất Bại Ngay Cả Với Temperature 0: Việc đặt nhiệt độ LLM về 0 cũng không giải quyết được sự không nhất quán này. Một vấn đề trên GitHub do cộng đồng báo cáo (mở vào tháng 10 năm 2025) đã ghi nhận các điểm số 27, 34, 32, 34, 34, 30 trong 6 lần chạy liên tiếp với cùng một hồ sơ. Điều này cho thấy vấn đề không chỉ ở nhiệt độ mô hình! 😱
---
3. Thiếu Sót Trong Tiêu Chí & Thiên Vị Cố Hữu ⚖️
Việc đào sâu vào template prompt (resume_evaluation_criteria.jinja) đã phơi bày một số lỗ hổng cấu trúc:
Kinh Nghiệm Thực Tế Chỉ Là Danh Sách Kiểm Tra Đơn Thuần
* Kỹ năng công nghệ (10 Điểm): Hoạt động như một danh sách kiểm tra đơn giản. Nếu có "React" hoặc "Python", điểm số luôn đạt 8/10. Hệ thống chỉ đánh giá sự hiện diện của từ khóa, chứ không phải chuyên môn định tính thực sự. 📝 * Lỗi Prompt trong Kinh nghiệm làm việc (25 Điểm): Prompt thiếu các tiêu chí hoặc điểm neo rõ ràng để phân biệt kỹ sư junior với kỹ sư trưởng (principal engineer). Trong thử nghiệm, một hồ sơ cũ chỉ có một kinh nghiệm thực tập duy nhất lại đạt điểm tuyệt đối 25/25 trong mọi lần chạy, bởi vì LLM thiếu các chỉ số so sánh cơ bản. Thật sự đáng lo ngại! 🤨 * Tiêu chí không phù hợp với vị trí: Mặc dù template có chứa từ "Software Intern" ở dòng 1, việc chạy agent với vai trò "Senior SWE" (Kỹ sư phần mềm cấp cao) cụ thể lại cho ra điểm số giống hệt. Các tiêu chí chấm điểm không tự điều chỉnh hoặc thích nghi theo cấp bậc kinh nghiệm.
Thiên Vị Chống Lại Kỹ Sư Chuyên Nghiệp & Ưu Tiên Người "Chơi Hệ Hobby" 🤔
Chỉ trích đáng kể nhất là sự thiên vị cấu trúc chống lại các kỹ sư phần mềm chuyên nghiệp chính thống: * 65% tổng số điểm được phân bổ cho hoạt động GitHub (35 điểm) và các dự án cá nhân công khai (30 điểm). * Hệ quả nghiêm trọng: Các kỹ sư trưởng cực kỳ tài năng, những người đã dành hàng thập kỷ xây dựng các hệ thống độc quyền khổng lồ, bảo mật cao (ví dụ: các công cụ cơ sở dữ liệu cốt lõi tại AWS, Microsoft hoặc Oracle) nhưng lại không có hồ sơ GitHub công khai, tự động bị loại, không thể đạt điểm cao hơn 35/100. Đây là một sự bất công lớn! 🚫 * May mắn trong tuyển dụng: Ngược lại, những người có sở thích (hobbyists) với các pull request công khai nhỏ có thể dễ dàng vượt điểm các nhà phát triển backend kỳ cựu. Điều này cho thấy hệ thống đang đánh giá sai giá trị thực tế của kinh nghiệm.
---
4. So Sánh Gemma Cục Bộ Với Gemini Đám Mây ☁️
Khi kiểm tra cùng một hồ sơ với Gemini của Google (một mô hình đám mây lớn hơn nhiều):
* Phân phối chặt chẽ hơn: Điểm số của Gemini nhất quán hơn, tập trung trong khoảng từ 48 đến 64. * Sự không nhất quán vẫn còn: Dù ổn định hơn, nếu đặt ngưỡng 60 điểm, ứng viên vẫn sẽ trượt tới 28% số lần chỉ vì sự biến động giữa các lần chạy trong khả năng lập luận định tính của LLM. Vấn đề cốt lõi vẫn chưa được giải quyết triệt để. 📊 * Tính nhất quán của mã nguồn mở: Gemini đánh giá hồ sơ GitHub một cách nhất quán, nhưng phần "Dự án cá nhân" vẫn cực kỳ biến động, do LLM gặp khó khăn trong việc đánh giá chất lượng kỹ thuật định tính mà không bị "ảo giác" sự khác biệt.
---
5. Những Bài Học Quan Trọng 💡
Từ những phân tích trên, chúng ta có thể rút ra các bài học quan trọng:
* LLM Làm Tốt Gì: Phân tích hồ sơ PDF không có cấu trúc thành các schema JSON rõ ràng và xác minh các yêu cầu cứng (ví dụ: kiểm tra xem ứng viên có liệt kê Python hay có hơn 5 năm kinh nghiệm hay không). * LLM Dở Tệ Gì: Đánh giá "cảm tính" (vibe-checking) và gán điểm số nhạy cảm cho các mô tả văn bản định tính. * Cảnh Báo Cho Ngành: Việc HackerRank mã nguồn mở hệ thống ATS của mình đóng vai trò là một lời cảnh báo quan trọng cho các đội ngũ HR. Sử dụng LLM làm "người gác cổng" đầu tiên để chấm điểm hồ sơ đang tạo ra sự bất công sâu sắc, thầm lặng, biến một hệ thống dựa trên năng lực thành một cuộc xổ số ngẫu nhiên. Đây là lúc chúng ta cần suy nghĩ lại về cách ứng dụng AI trong tuyển dụng! ⚠️