Resume-Matcherは、履歴書と求人票をLLMで比較し、ATS通過率を高めるための改善案・カバーレター・面接対策をローカル環境で生成するツールです。FastAPI製バックエンドとNext.js製フロントエンドで構成され、litellm経由で100以上のLLMプロバイダーに対応します。Dockerで一括起動するか、バックエンドとフロントエンドを個別に起動して使う構成です。
バックエンドはFastAPIのルーター群(resumes・jobs・applicationsなど)で構成されます。アップロードされた履歴書はmarkitdownやpdfminer.sixでテキスト化されます。求人票との比較はapp/services配下のats.py・improver.py・refiner.pyが担当し、litellm経由でLLMにリクエストを送りスコアリングと改善案を作ります。データはSQLiteに保存され、起動時に旧TinyDB形式が見つかれば自動で移行します。PDF出力はPlaywrightでHTMLをレンダリングする方式で、Dockerイメージには日本語・中国語・韓国語向けのNoto CJKフォントが同梱されています。
- STEP 01
リポジトリをcloneし、apps/backend/.env.exampleとapps/frontend/.env.sampleをコピーして、好みのLLMプロバイダーのAPIキーを設定します。
- STEP 02
Dockerで起動する場合、Dockerfileがフロントエンドをビルドしてバックエンドと一つのイメージにまとめるため、初回はNext.jsビルドとPlaywrightのChromiumダウンロードで時間がかかります。
- STEP 03
起動後は/api/v1/healthでヘルスチェックが通ることを確認し、ダッシュボード画面から履歴書ファイルをアップロードします。
- STEP 04
アップロードした履歴書はmarkitdownやpdfminer.sixでテキスト化されます。求人票を貼り付けてtailor機能を実行すると、設定したLLMへリクエストが送られます。
- STEP 05
結果画面でATSスコアと改善提案の差分を確認し、必要に応じてPDFやカバーレターとして書き出します。
自分の履歴書ファイルと求人票から、ATSスコア・改善提案の差分・カバーレター・面接対策・レイアウト調整済みPDFが手に入ります。データはローカルのSQLiteに保存されるため、外部サービスに履歴書を預けずに調整作業を繰り返せます。
PRごとのGitHub Actionsテストは実行されず、pre-pushフックによるローカルゲートのみで品質を担保する運用です。README.mdに明記されています。
LLM品質を判定するevalテストはpytestのmarkerで除外されており、通常実行では対象になりません。
動作にはlitellm対応のLLMプロバイダーキー、またはローカルLLMの用意が別途必要です。
旧TinyDBデータがある環境では起動時に自動でSQLiteへ移行される仕組みのため、移行結果の確認が必要になる場合があります。
ローカル環境でAPIキーを自分で用意し、履歴書をLLMで調整したい求職者や、FastAPI+Next.jsのフルスタック構成を学びたい開発者に向いています。バックエンドにはunit・integration・serviceに分かれた多数のテストがあり、トランザクションや原子性を検証するテストも揃っています。これらがpre-pushゲートで継続的に守られている点はソースから確認できます。ただしLLM出力の品質そのものはevalテストがデフォルト除外のため自動保証の対象外で、実際の使用感は自分のAPIキーとプロンプトで試すまで分からない部分が残ります。