Skip to content

自動化パイプライン全体像

概要

BUSON では、求人データの収集から求職者へのマッチングまでを一連の自動化パイプラインで実現しています。

項目内容
パイプライン数6 種類(CLI スクリプト 4 + API 駆動 2)
使用 AIGemini 3 Flash Preview / text-embedding-004
外部サービスResume-Converter(C# マイクロサービス)
データベースSupabase(PostgreSQL + pgvector)
ブラウザ自動化Playwright(Chromium ヘッドレス)

このページの使い方

全体像を把握するためのハブページです。各パイプラインの詳細は個別ページへのリンクから確認してください。

パイプライン全体図

全自動化パイプラインの全体像です。 = CLI スクリプト(手動実行)、オレンジ = API 駆動(フロントエンド操作)で区別しています。

パイプライン依存関係

各パイプラインには実行順序の依存関係があります。矢印は「先に実行が必要」な関係を示します。

実行順序に注意

求人サジェスト機能を利用するには、以下が全て完了している必要があります:

  1. 求人クローリング → 2. 求人エンリッチメント → 3. Embedding 生成(求人側)
  2. 求職者ドキュメント処理(求職者側)

典型的な運用フロー

新しい求人を追加してサジェストが使えるようになるまでの流れ:

bash
# Step 1: 求人データを取得
cd backend
npm run crawl:herp
npm run crawl:jobcan
# ... 他の媒体も実行

# Step 2: 企業情報を補完
npm run enrich:companies

# Step 3: 求人情報をAI分析
npm run enrich:jobs

# Step 4: Embeddingを生成
npx tsx src/scripts/embed-jobs.ts

# → これでフロントエンドから「おすすめ求人サジェスト」が利用可能に

データフロー

主要テーブル間のデータの流れを示します。

各パイプラインの概要

1. 求人クローリング

各エントリー媒体(ATS)から求人情報を自動取得し、jobs テーブルに保存します。

項目内容
対応媒体数13 媒体(求人 12 + 求職者取込 1)
取得方式Playwright(12 媒体)/ HTTP fetch(HERP のみ)
実行方法cd backend && npm run crawl:<媒体名>
出力先jobs テーブル + companies テーブル(自動作成)
共通オプション--dry-run --limit N --company "名前" --verbose --inspect

対応媒体: HERP, ジョブカン, Talentio, Wantedly Agent, かんりくん, PERSONA, axol(AKKODIS / AVANT / 大和総研), jposting, Greenhouse, HITO-Link, AGRE ARMS

詳細

求人クローラー を参照してください。


2. 企業エンリッチメント

企業名から公式情報を AI で自動収集し、面談シートに必要なフィールドを補完します。

項目内容
AI モデルGemini 3 Flash Preview + Google Search Grounding
実行方法cd backend && npm run enrich:companies
補完フィールドhomepage_url nearest_station employee_count stock_market company_overview
レート制限各社 2 秒間隔 + API エラー時 3 回リトライ(初回 1 秒、指数バックオフ)
ステータス管理enrichment_status: pendingsuccess / failed

情報源の制約: 公式サイト・IR ページ・公式採用ページのみ。求人サイト・口コミサイト・Wikipedia は使用しません。

詳細

企業エンリッチメント を参照してください。


3. 求人エンリッチメント(2 段階)

Stage 1: AI 分析

求人の説明文から構造化データを抽出し、AI 説明文とカテゴリマッピングを生成します。

項目内容
AI モデルGemini 3 Flash Preview + Google Search Grounding
実行方法cd backend && npm run enrich:jobs
1 回の API で実行するタスクカテゴリ分類 + AI 説明文生成 + 構造化要件抽出
出力先jobs.ai_description jobs.structured_requirements job_category_mappings
レート制限各件 2 秒間隔 + API エラー時 3 回リトライ(初回 1 秒、指数バックオフ)

構造化要件(16 フィールド): min_salary, max_salary, required_skills, min_experience_years, work_style, work_locations, target_seniority, industry_domain, career_paths, culture_keywords, english_requirement, team_size, position_summary, environment, selling_points, agent_notes

Stage 2: Embedding 生成

AI 説明文と構造化要件からベクトル表現を生成し、類似度検索を可能にします。

項目内容
AI モデルtext-embedding-004(768 次元)
実行方法cd backend && npx tsx src/scripts/embed-jobs.ts
入力ai_description + structured_requirements を日本語テキストに変換
出力先jobs.ai_description_embedding(vector(768))
バッチ処理50 件ずつ、2 秒間隔

詳細

求人エンリッチメント を参照してください。


4. 求職者ドキュメント処理

求職者の履歴書・職務経歴書をアップロードし、AI で構造化データに変換します。

項目内容
対応形式PDF / DOCX / XLSX(最大 10MB)
処理方式BUSON Backend → Resume-Converter(C#)→ Supabase に書き戻し
実行方法フロントエンド: 求職者詳細画面のアップロードボタン
出力先candidate_documents.parsed_data(JSONB)

抽出される構造化データ(parsed_data

フィールド説明
namestring氏名
name_kanastring氏名(かな)
birth_datestring生年月日
addressstring住所
phonestring電話番号
emailstringメールアドレス
educationArray学歴(学校名、学部、卒業年)
work_historyArray職歴(企業名、職種、期間、業務内容)
skillsstring[]スキル一覧
certificationsArray資格(名称、取得日)
self_prstring自己 PR

さらに、candidate_document_sessions テーブルにはプロジェクト単位の詳細な職歴データ(技術スタック、チーム規模、実績など)が保存されます。

Word 文書の再生成

パース完了後、構造化データから書式統一された Word 文書(履歴書 / 職務経歴書)を生成できます。

POST /api/v1/candidates/:id/documents/:documentId/generate-word
Body: { "type": "resume" | "career" }

5. 求職者 AI 分析

求職者の経歴データと性格特性を AI で分析し、エージェント業務を支援します。

項目内容
AI モデルGemini 3 Flash Preview(Temperature: 0.3)
実行方法フロントエンド: 求職者詳細画面のボタン
入力データBIG5 性格特性 + 職歴データ + 面談メモ + 求人レコメンド結果
出力先candidates.ai_summary(Markdown テキスト)

出力セクション: 性格特性 / 経歴の特徴 / 面談での印象 / 適した求人の傾向


6. おすすめ求人サジェスト

求職者の経歴・スキル・希望条件を分析し、最適な求人 5 件を AI で提案します。

項目内容
AI モデルGemini 3 Flash Preview + text-embedding-004
実行方法フロントエンド: 求職者詳細画面の「おすすめ求人を探す」ボタン
処理時間約 12〜15 秒(非同期処理)
出力先candidate_job_recommendations(上位 5 件)

処理フロー:

  1. 求職者データ収集(3 テーブルから並列取得)
  2. プロフィールテキスト生成 → Embedding + カテゴリ判定(並列実行)
  3. 統合ベクトル検索(カテゴリ + 年収 + コサイン距離)→ 上位 15 件
  4. フォールバック: カテゴリフィルタで 5 件未満の場合、フィルタなしで再検索
  5. LLM 精査でスコアリング → 上位 5 件を保存

詳細

おすすめ求人サジェスト を参照してください。

使用技術まとめ

AI / ML

技術用途使用箇所
Gemini 3 Flash Previewテキスト生成、JSON 構造化抽出企業/求人エンリッチメント、カテゴリ判定、LLM 精査、AI サマリー
text-embedding-004768 次元ベクトル生成求人 Embedding、求職者プロフィール Embedding
Google Search GroundingWeb 検索で AI の回答精度を向上企業/求人エンリッチメント
pgvectorベクトル類似度検索(コサイン距離)求人サジェスト

外部サービス

サービス用途
Resume-Converter履歴書 / 職務経歴書の OCR・パース(C# マイクロサービス)
SupabasePostgreSQL + Storage + PostgREST
Playwrightヘッドレスブラウザによる Web スクレイピング

関連ファイル

役割パス
求人クローラー群backend/src/scripts/crawlers/
企業エンリッチメントスクリプトbackend/src/scripts/enrich-companies.ts
求人エンリッチメントスクリプトbackend/src/scripts/enrich-jobs.ts
Embedding 生成スクリプトbackend/src/scripts/embed-jobs.ts
Gemini クライアントbackend/src/infrastructure/external/gemini/GeminiClient.ts
Resume-Converter クライアントbackend/src/infrastructure/external/ResumeConverterClient.ts
求人サジェストサービスbackend/src/application/services/JobRecommendationService.ts
AI サマリーサービスbackend/src/application/services/CandidateAiSummaryService.ts