概要
- HackerRankのオープンソースATS 「hiring-agent」の注目度急上昇
- LLMによるスコアの非決定性 と評価基準の曖昧さが問題
- 技術スキルは安定評価 だが、プロジェクトや経験値評価は一貫性に欠ける
- スコア配分が偏っており、実力あるエンジニアが不利になる可能性
- AIによる履歴書スクリーニング導入時の注意喚起
HackerRankのオープンソースATS「hiring-agent」の実態
- GitHubで公開されているATS 「hiring-agent」がLinkedInやRedditで話題
- PDF履歴書をテキスト化し、LLM(gemma3:4bなど)で6カテゴリ抽出
- 基本情報、職歴、学歴、スキル、プロジェクト、受賞歴
- GitHubプロファイルや主要リポジトリも自動取得・追加
- 全情報をLLMに投入し、100点満点+20点のボーナス方式でスコア化
- オープンソース貢献:35点
- 個人プロジェクト:30点
- 職務経験:25点
- 技術スキル:10点
- ボーナス:最大20点(スタートアップ経験、ポートフォリオ、技術ブログ等)
スコアの非決定性と評価の一貫性問題
- 同じ履歴書・同じコマンドでもスコアが大幅に変動
- 例:90点→デバッグ出力削除後74点、ループ実行で66~99点までバラつき
- カットラインを85点に設定すると、65%の確率で不合格
- 技術スキルはチェックリスト方式でほぼ安定(98/100回で8/10点)
- プロジェクト評価は大きく変動
- LLMが判断するたびに「実装力が足りない」「本番導入経験あり」と結果が揺れる
- Temperature 0.1でも非決定性が解消しない(0でも同様)
- GitHub Issueでも同様の報告(温度0で連続してスコアがバラバラ)
- Geminiモデルは分布がやや安定(48~64点)だが、カットライン次第で不合格率高いまま
- オープンソース貢献スコアは安定化したが、プロジェクトは依然としてノイズ多い
職務経験評価の無意味さ
- 職務経験(25点満点)は毎回25点で一貫
- インターン1回の古い履歴書でも25/25点
- シニアエンジニアでも同じ
- 評価プロンプトが2行のみで、具体的な基準や例がない
- ルーブリックや基準点が存在しないため、経験値評価が機能していない
LLMによる評価の限界と実運用上のリスク
- LLMは構造化データ抽出やスキルチェックには有効
- プロジェクトや経験値の定量評価には不向き
- 「雰囲気チェック」しかできず、HRが避けてきた属人的判断に逆戻り
- スコア配分の偏り
- オープンソース+プロジェクトで65%を占めるため、実績あるエンジニアが不利
- GitHubに成果がない優秀なエンジニアが過小評価されるリスク
- AIスクリーニング導入時は慎重な運用が必要
- フィルタリング精度ではなく、単なるランダム除外の危険性
- 不合格通知が「運が悪かった」としか伝わらない状況
テンプレートと仕様の補足
- resume_evaluation_criteria.jinjaテンプレートが職種に依存しない設計
- 実際には「Software Intern」等の記述があるが、スコアリングはポジション非依存
- コミット履歴から見て、2025年10月以前からOSS化されていた可能性
結論とエンジニアへの提言
- AIによる履歴書評価ツールの導入・運用には細心の注意が必要
- 評価基準の設計・モデルの特性理解が不可欠
- 本質的な人材評価には人間の目が依然として重要
- 単なる自動フィルタリングに頼ると、優秀な人材の見逃しや不公平な選考につながる危険性