履歴書評価の客観性を高める:GitHub情報とLLMを活用した採用支援ツール Hiring Agent
/ 12 min read
Table of Contents
リポジトリ
- interviewstreet/hiring-agent
- 主要言語: Python / ライセンス: MIT / ★ 2,125
Hiring Agentとは
Hiring Agentは、採用プロセスにおける履歴書の評価と採点プロセスを効率化し、客観性を高めるために開発されたオープンソースツールです。候補者の履歴書PDFを詳細に解析し、大規模言語モデル(LLM)と連携することで、構造化されたデータ抽出、GitHubプロファイルからの情報補強、そして最終的な公平で説明可能な評価レポート生成までを一貫して行います。
このツールは、完全にローカル環境で動作するOllamaを利用したモデルや、Google Geminiモデルといった様々なLLMバックエンドに対応しており、利用環境や要件に応じた柔軟な選択が可能です。履歴書を「スコア化」するというユニークなアプローチを通じて、採用担当者が候補者のスキルや経験をより深く、かつ公平に理解できるよう支援します。
なぜ注目されているのか
今日の採用市場では、膨大な数の応募の中から最適な候補者を見つけ出すことがますます困難になっています。Hiring Agentは、この課題に対し、以下の点で注目を集めています。
1. 評価の客観性と公平性の向上
従来の履歴書評価は、評価者の主観や経験に左右されがちでした。Hiring Agentは、定義された評価基準とLLMの能力を組み合わせることで、一貫性のある客観的な評価を提供します。これにより、無意識の偏見を排除し、すべての候補者に対して公平な機会を保証します。
2. GitHub情報による多角的な評価
技術職の採用において、GitHubは候補者の実力を示す重要な情報源です。Hiring Agentは、履歴書からGitHubユーザー名を抽出し、プロジェクトの活動状況や貢献度を解析。これを評価プロセスに統合することで、単なる職務経歴書だけでは見えない、候補者の実際のスキルセットやオープンソースへの貢献を深く掘り下げます。
3. 説明可能な評価結果
単にスコアを出すだけでなく、Hiring Agentは各カテゴリのスコア、その根拠となる情報、ボーナスポイント、そして減点項目までを詳細に提示します。これにより、評価結果がなぜそのようになったのかを明確に理解でき、候補者へのフィードバックや社内での議論にも活用できます。
4. 採用プロセスの効率化
初期スクリーニングの自動化は、採用担当者の時間を大幅に節約し、より戦略的な業務に集中することを可能にします。大量の履歴書を迅速かつ高い精度で処理することで、採用パイプライン全体のボトルネックを解消します。
5. ローカルLLMサポートによる柔軟性
Ollamaを用いたローカルLLMのサポートは、機密性の高い個人情報を含む履歴書のデータを外部サービスに送ることなく処理したい企業にとって大きなメリットです。また、API利用料を抑えることにも繋がり、コストパフォーマンスの高い運用を実現します。
主要な機能と仕組み
Hiring Agentは複数のモジュールが連携し、複雑な履歴書評価プロセスを実現しています。その中心的な流れは以下の通りです。
1. PDFからの情報抽出
まず、pymupdf_rag.py と pdf.py がPyMuPDFライブラリを利用して履歴書PDFを読み込み、Markdown形式のテキストに変換します。この段階で、見出し、リンク、テーブルなどの基本的な書式が保持されます。
2. LLMによるセクション解析と構造化データ抽出
次に、pdf.PDFHandler が各セクション(職務経歴、学歴、スキル、プロジェクト、賞など)を個別にLLMに渡し、prompts/templates ディレクトリに定義されたJinjaテンプレートに基づいて構造化されたJSONデータを抽出します。これにより、履歴書の内容が統一された JSONResume スタイル(models.py で定義)に変換されます。
3. GitHubプロファイルによるデータ補強
github.py は、抽出された情報から候補者のGitHubユーザー名を特定し、そのプロファイルと公開リポジトリを取得します。さらにLLMが、特定の基準(コミット数など)に基づいて候補者の代表的なプロジェクトを最大7つ選定し、評価データに組み込みます。
4. 公平性を考慮した評価ロジック
evaluator.py が、resume_evaluation_criteria.jinja などのテンプレートで定義された厳格な採点ルールと公平性制約に基づいて評価を実行します。ここでは、「オープンソース貢献」「自己プロジェクト」「実務経験」「技術スキル」といったカテゴリでスコアが算出され、証拠となる情報、ボーナスポイント、減点項目が詳細に生成されます。
5. 結果の出力とエクスポート
最終的に、score.py がこれらの情報を統合し、標準出力に読みやすいサマリーレポートを出力します。また、開発モードを有効にしている場合(config.py の DEVELOPMENT_MODE = True)、中間的なJSONデータが cache/ ディレクトリに保存されるほか、評価結果が resume_evaluations.csv ファイルに追記され、後から分析や比較に利用できるようになります。
導入と利用方法
Hiring Agentの導入は比較的簡単で、以下のステップで進めることができます。
前提条件
- Python 3.11+: リポジトリはPython 3.11.13を推奨しています。
- LLMバックエンド: ローカルで利用する場合は Ollama をインストールし、
ollama serveを実行してください。Google Geminiを利用する場合はAPIキーが必要です。
クイックセットアップ
- リポジトリをクローンし、ディレクトリへ移動します。
Terminal window $ git clone https://github.com/interviewstreet/hiring-agent$ cd hiring-agent - 仮想環境を作成し、依存関係をインストールします。
Terminal window $ python -m venv .venv$ source .venv/bin/activate # Linux/macOS$ pip install -r requirements.txt - Ollamaを利用する場合、必要なモデルをダウンロードします。
Terminal window $ ollama pull gemma3:4b
環境設定
.env.example をコピーして .env ファイルを作成し、以下を設定します。
LLM_PROVIDER:ollamaまたはgeminiDEFAULT_MODEL: 使用するモデル名(例:gemma3:4bまたはgemini-2.5-pro)GEMINI_API_KEY: Google Geminiを使用する場合に必須GITHUB_TOKEN: オプションですが、GitHub APIのレート制限を緩和するために推奨されます。
実行
履歴書PDFへのパスを指定して score.py を実行します。
$ python score.py /path/to/resume.pdfこれにより、PDFの解析、GitHub情報の取得、評価、そして最終的なレポート出力までの一連の処理が実行されます。
どんな現場で役立つか
Hiring Agentは、特に以下のような採用現場で大きな価値を発揮します。
- スタートアップから大企業まで: 応募者の数が少ないスタートアップでも、評価基準を明確にし、公平性を保つために役立ちます。大規模な組織では、初期スクリーニングのボトルネック解消と効率化に貢献します。
- 技術系職種の採用: エンジニア、データサイエンティスト、開発者など、GitHubでの活動が重要な指標となる職種の採用において、候補者の実力を深く評価する手助けとなります。
- 採用担当者・HR部門: 履歴書のレビューにかかる時間を短縮し、より多くの候補者に目を通すことを可能にします。また、評価結果の説明責任を果たすための客観的なデータを提供します。
- 採用マネージャー・CTO: チームに最適な人材を確実に採用するために、客観的でデータに基づいた意思決定を支援します。採用基準の統一と透明性向上にも繋がります。
- 公平な採用プロセスを重視する企業: 偏見のない、多様性のあるチームを構築することを目指す企業にとって、Hiring Agentは強力なツールとなり得ます。
まとめ
Hiring Agentは、履歴書評価の客観性、公平性、効率性を飛躍的に向上させるオープンソースツールです。PDF解析、LLMによる構造化データ抽出、GitHub連携、そして詳細な評価レポート生成という一連の機能を通じて、採用担当者が直面する多くの課題を解決します。
ローカルLLMへの対応や説明可能な評価結果といった特徴は、今日の採用市場において非常に重要であり、技術系の採用に携わるすべての人にとって強力な味方となるでしょう。このプロジェクトがさらに発展し、より多くの企業で活用されることで、より公平で効率的な採用エコシステムが構築されることを期待します。