何百万もの求人を仲介業者なしで検索する求人検索エンジンの仕組み
外资や大規模なIT企業での求職活動では、予期せぬ落とし穴がよくあるルーティンになっています。アグリゲーターで気になる求人を見つけたとしても、リンクをクリックしたら、その求人は1ヶ月前に締め切られていたなんてことも。或者は、最終的な雇用主の名前すら明かさない人材紹介会社による、同じ求人が無限にコピーされていることに遭遇することもあります。

freehireプロジェクトは、直接応募者追跡システム(ATS)からデータを解析し、中間業者をバイパスするというシンプルな技術的アプローチで、この問題を解決します。データベースには、約30万社の企業からの330万件以上の有効な求人が含まれています。データコレクター、Webインターフェース、検索エンジン、APIを含むスタック全体がMITライセンスの下で公開されています。
データの出所
ほとんどのテック企業は、Greenhouse、Lever、Workday、Ashby、iCIMSなどの specialized servicesを通じて求人を公開しています。freehireの作成者は92のそのようなプラットフォーム用の adaptersを作成し、また約100の third-party job boardsや大企業からの直接フィードにも接続しています。
パイプラインは次のように機能します:
- workerが job boardsをクロールし、最新の求人を読み取ります。企業の追加は通常、ATSでの名前とIDを指定したYAMLファイル内の1行で完了します。
- データは統一された形式に正規化されます。1つの求人が複数のプラットフォームで公開されている場合、システムは安定したキーによって重複をマージします。
- グレード、給与、場所、 tech stackのフィルターは厳密な辞書から構築されます。信頼性の低いheuristicsはここでは使用されていません—システムはランダムにデータを推測しようとしません。
- 別の workerが対象のATSから実際の application formをダウンロードし、元のフィールド構造を保持します。
求人カタログ以外の機能
検索は単なる店面です。求人数データベースを中核に、開発者たちは完全な 求職者ワークスペースを構築しました。
レジュメ生成とマッチングチェック
リポジトリには、自動ATS解析に最適化されたPDFファイルを生成するレジュメビルダーが含まれています。システムは求人要件をあなたの経験と照合し、決定論的な互換性スコアを計算します。言語モデルに接続すると、経験を作成することなく、特定のアプリケーション向けのターゲットを絞ったレジュメ調整を提供します。
受信メールを含むレスポンストラッカー
応募を提出した後、トラッキングはステータス更新を伴うカンバンボードで継続されます。統合されたメールゲートウェイが採用担当者からのレスポンスを特定の応募カードに接続し、一般的な受信箱で迷うことなく、通信を整然と保ちます。
アシスタントとブラウザ拡張機能
Chromeサイドバー拡張機能が開発されました。任意のサイトの求職ページを開くと、プラグインがページテキストを読み取り、プロフィールと照合して、応募フォームを自動入力します。Claude DesktopのようなLLMクライアントを通じて作業することを好む人のために、作者たちは別途MCPサーバーを提供します。
アーキテクチャと技術スタック
コードベースはGoで記述され、Fiber v2Webフレームワークを使用しています。アーキテクチャ的には、バックエンドは明確に分離されています:APIサーバーはクライアントリクエストのみを処理し、すべてのバックグラウンドワークは別々のワンノフワーカーに移動されます。これらはcronまたはキュー内で実行するのに便利です。
高速な検索とストレージのために、以下のコンポーネントの組み合わせが使用されています:
- セマンティック検索用のベクトル埋め込みを格納するPostgreSQLとpgvector拡張。
- sqlcは、生のSQLクエリからデータベース操作用の型安全なコードを生成します—ORMは使用されていません。
- Meilisearchは全文検索とインスタントファセットフィルタリングを処理します。
- SvelteKit 2(Svelte 5 runesベース)およびTailwind 4が高速SSRフロントエンドを形成します。
- RedisとMinIOはキャッシュ、リクエストレート制限、ファイルのオブジェクトストレージをカバーします。
クイックスタートとAPIの使用
Dockerですべての依存関係と共にサービスのローカルコピーを起動できます:
このコマンドはポート8080でデータベース、検索エンジン、API、Webインターフェースを起動します。シンプルなcurlリクエストで可用性を確認できます:
ちなみに、プロジェクトの公開APIはキーや認証なしで利用可能です。ボットや個人プロジェクト用に最新の求人にアクセスする必要がある場合は、エンドポイントにアクセスしてください。すべてのレスポンスは、構造化されたメタデータとページネーションを備えた予測可能なJSON形式で返されます。
データコレクターを実行するには、内のコンソールコマンドが使用されます:
このプロジェクトの対象者
このリポジトリは3つのケースで役立ちます:
- 外資系企業での求職を検討しており、低品質なアグリゲーターにうんざりしている場合。Web版では、煩わしい中間業者なしで雇用主のATSシステムへの直接リンクを提供します。
- 独自のアグリゲーター、 Telegramチャンネル、 求職ボットを構築したい場合。92のATSシステムへのオープンな adaptersにより、パーサー作成に何百時間も節約できます。
- ORM、過負荷のない成熟した Goプロジェクトの例に興味がある場合。厳格なSQLタイピング、独立したワーカーへの分離、最新の検索エンジンとの統合が特徴です。
このプロジェクトは成熟しており、オープンソースであることで、1つのYAML行で新しい企業を追加するプルリクエストを提出する機会が любому developerに与えられます。プロジェクトのWebサイトでサービスを試すか、独自のサーバーでコンテナをデプロイできます。
関連プロジェクト