AIエージェント設計

求人ライティングのAIエージェント構成とパイプライン

precision_manufacturing

Indeed リライト

指揮者エージェントがユーザー指示を解釈し、対象を検索・確認の上、リライトまたはステータス変更を実行する

Indeed30件想定

account_tree実行フロー

upload_file

CSV Upload

arrow_forward
workspaces

PHASE 1 グルーピング 10 nano 並列

arrow_forward
psychology

指揮者 コンダクター Agent Loop

arrow_forward
verified

確認 ユーザー承認 (リライト時)

arrow_forward
search

PHASE 2 偵察 nano 並列

arrow_forward
tune

PHASE 3 方針決定 2 nano

arrow_forward
edit

PHASE 4 ライティング 5.1 + nano

arrow_forward
fact_check

PHASE 5 検査 nano 並列

arrow_forward
build

PHASE 6 組み立て Code

arrow_forward
download

CSV Output

alt_routeアクション分岐(指揮者が決定)

status_change即実行

トリガー: 「止めて」「停止して」「一時停止して」

指揮者 → Phase 6(CSV組立のみ)

rewrite確認あり

トリガー: 「リライトして」「未経験者向けにして」「キャッチコピーを攻めて」

指揮者 → 確認 → Phase 2→3→4→5→6

rewrite_and_status確認あり

トリガー: 「東京はリライトして、神奈川は止めて」

指揮者 → 確認 → Phase 2→3→4→5→6(リライト+ステータス変更)

handyman指揮者のツール一覧

指揮者はLLM-in-a-loop(最大8ステップ)で動作。毎回JSONで1ツールを呼び、結果を受け取って次のステップを判断する。

search_by_area(area: string)

勤務地エリアで求人を検索

例: 「神奈川」「東京」

search_by_shift(shift: string)

勤務時間帯で求人を検索

例: 「夜勤」「日勤」

search_by_keyword(keyword: string, column?: string)

任意のキーワードで検索(カラム指定可)

例: 「未経験」「ドライバー」

search_by_group(groupId: string)

グループIDで求人を取得

例: 「G1」

decide(decision: object)

最終決定を出す(action, targetRowIndices, summary)

done

タスク完了

verified確認ステップ(リライト時のみ)

1

ユーザーが指示を送信

例: 「東京の求人を未経験者向けにして」

2

指揮者が検索・判断

search_by_area("東京") → 1件ヒット(行3: ドライバー 東京都)→ decide

3

確認メッセージを表示

「1件をリライトします。行3: ドライバー (東京都) — 未経験者向けにリライト」

→ 「実行する」「キャンセル」ボタン

4

承認後に Phase 2→6 を実行

対象行のみをリライト。他の求人は変更しない

ステータス変更(「神奈川止めて」等)は確認不要で即実行。リライトのみ確認ステップを挟む。

filter_alt対象行フィルタリング

指揮者の targetRowIndices で後続フェーズの入力を絞り込む:

全8件の postings

↓ targetRowIndices = [0](東京の1件)

targetPostings = [row 0] のみ

targetGrouping = row 0 が属するグループ(メンバーもrow 0だけ)

Phase 2: targetGrouping で偵察(1グループ)

Phase 3: targetGrouping で方針決定

Phase 4: targetPostings でライティング(1件だけ

Phase 5: 検査

Phase 6: 全postings でCSV組立(差分検出はwritingResultsで判定)

Phase 6は全求人データを使ってCSVを組み立てるが、リライト結果がある行だけが「変更あり」として出力される。

sort指示の優先順位

1. ヒトの指示chevron_right2. 指揮者の判断chevron_right3. オーケストレーターchevron_right4. 偵察ナノ

tag数字の扱い

訴求ナノ(PHASE 1)

  • - 数字を ● にマスクして渡す
  • - 訴求の「型」だけ分類(待遇推し/研修推し等)
  • - 年間休日120日と118日 → 同じグループ

ライティング(PHASE 4)

  • - 数字はプレースホルダーで出力
  • - {{salary_min}} {{annual_holidays}} {{area}}
  • - PHASE 6でコードが実数値に置換 → 改ざんゼロ

editPhase 4: ライティングの実行パターン

1求人あたりの処理(6並列 Promise.all)

1職種名ライターgpt-5.1
2キャッチコピーライターgpt-5.1
3仕事内容ライターgpt-5.1
4アピールポイントライターgpt-5.1
5求める人材ライターgpt-5.1
6整形ナノ(事実系7カラム一括)gpt-5-nano

各ライターはカラム専用のシステムプロンプトを持ち、テキストのみ出力。JSON不要。

テンプレート方式(同一グループ内で類似求人)

1. 代表1件だけgpt-5.1で書く(6並列)

2. 残りはコードでテンプレ展開(LLM不使用)

3. プレースホルダーを各求人固有の値に置換

4グループ × 6呼出 = 24回 → 約24円

並列方式(求人ごとに個別リライト)

1. 全件を個別にgpt-5.1で書く(最大5求人ずつバッチ)

2. 各求人 × 6並列 = 求人数に比例

30件 × 6呼出 = 180回 → 約180円

PHASE 1

グルーピング(初回のみ・指示前に自動実行)

bolt並列実行0.21円

A 職種分類ナノ

30件の求人を職種で分類する

gpt-5-nanoparallel

inputInput

  • 職種名
  • 仕事内容の冒頭100文字

outputOutput

  • 職種グループ(甲ドライバー系、乙倉庫系、丙事務系...)
Cost0.05円

B 雇用・給与分類ナノ

雇用形態と給与で分類する

gpt-5-nanoparallel

inputInput

  • 雇用形態
  • 給与形態
  • 給与金額

outputOutput

  • 条件グループ(X正社員月給20万〜、Yパート時給...)
Cost0.02円

C 資格・経験分類ナノ

資格と経験要件で分類する

gpt-5-nanoparallel

inputInput

  • 資格要件
  • 経験要件

outputOutput

  • ターゲットグループ(α要資格、β未経験OK)
Cost0.01円

D1 待遇訴求ナノ

待遇・高収入を推しているか判定

gpt-5-nanoparallel

inputInput

  • アピールポイント
  • 給与情報(数字マスク)

outputOutput

  • 該当/非該当の行リスト
Cost0.02円

D2 研修訴求ナノ

研修・未経験歓迎を推しているか判定

gpt-5-nanoparallel

inputInput

  • 仕事内容(数字マスク)
  • アピールポイント(数字マスク)

outputOutput

  • 該当/非該当の行リスト
Cost0.02円

D3 働きやすさ訴求ナノ

働きやすさを推しているか判定

gpt-5-nanoparallel

inputInput

  • アピールポイント(数字マスク)
  • 休日情報(数字マスク)

outputOutput

  • 該当/非該当の行リスト
Cost0.02円

D4 安定訴求ナノ

安定・キャリアを推しているか判定

gpt-5-nanoparallel

inputInput

  • アピールポイント(数字マスク)
  • 仕事内容(数字マスク)

outputOutput

  • 該当/非該当の行リスト
Cost0.02円

D5 勤務時間帯分類ナノ

日勤/夜勤/交替制/シフト制を分類

gpt-5-nanoparallel

inputInput

  • 募集要項(勤務時間・曜日)
  • 職種名

outputOutput

  • 時間帯グループ(日勤、夜勤、交替制、シフト制)
Cost0.02円

D6 勤務地分類ナノ

勤務地をエリアで分類する

gpt-5-nanoparallel

inputInput

  • 勤務地
  • 勤務地の補足
  • アクセス

outputOutput

  • エリアグループ(新宿エリア、大阪エリア、地方工場...)
Cost0.02円

E 統合ナノ

A〜D6の結果を統合して最終グループを決定

gpt-5-nano

inputInput

  • A〜D6の分類結果(約700文字)

outputOutput

  • 最終グループ(G1: ドライバー/正社員/要資格/研修推し/新宿 → 行1,5 ...)
Cost0.01円
指揮者

コンダクターエージェント(全指示の入口)

0.02〜0.10円

指揮者エージェント

ユーザー指示を解釈し、ツールで対象求人を検索・特定。リライト/ステータス変更/両方を判断。リライト時はユーザーに確認を求める

fast (agent)

inputInput

  • ユーザーの自然言語指示
  • PHASE 1 グループ一覧

outputOutput

  • action: rewrite / status_change / rewrite_and_status
  • targetRowIndices: 対象行(検索結果ベース)
  • summary: 実行内容の要約
Cost0.02〜0.10円(ステップ数による)
PHASE 2

偵察

bolt並列実行0.08円

偵察ナノ

対象グループ代表1件を分析し、強み・弱み・NG・改善提案を報告する

gpt-5-nanoparallel

inputInput

  • 職種名
  • キャッチコピー
  • 仕事内容
  • アピールポイント
  • 求める人材

outputOutput

  • 強み
  • 弱み
  • NGワード・ポリシー違反
  • 改善提案
Cost0.02円 × 対象グループ数
PHASE 3

方針決定

0.05円

会話ナノ(ルーター)

指揮者の決定と偵察結果を統合し、グループ別の解釈済み指示を生成する

gpt-5-nano

inputInput

  • 指揮者の決定(対象グループ・指示要約)
  • PHASE 1 グループ分類結果

outputOutput

  • 対象グループIDリスト
  • グループ別の解釈済み指示
Cost0.02円

オーケストレーター

偵察結果と解釈済み指示を統合し、各グループのライティング方針を決定する

gpt-5-nano

inputInput

  • PHASE 1 グルーピング結果
  • PHASE 2 偵察結果
  • 会話ナノからの指示(対象グループ+要約)

outputOutput

  • トーン
  • 攻めポイント
  • 注意点
  • テンプレ方式 or 並列方式
  • スキップするカラム
  • グループ別の個別指示(あれば)
Cost0.03円
PHASE 4

ライティング(1求人あたり6並列)

bolt並列実行24〜180円

職種名ライター

17文字以内の職種名を生成。NGワード25個・禁止記号を回避。カラム専用のシステムプロンプトで呼出

gpt-5.1parallel

inputInput

  • 方針(トーン・攻め・カラム別指示)
  • 元の求人データ全体

outputOutput

  • 職種名(17文字以内)テキストのみ
Costgpt-5.1単価

キャッチコピーライター

35〜256文字のキャッチコピーを生成。最大の差別化ポイント1つを端的に訴求。カラム専用プロンプト

gpt-5.1parallel

inputInput

  • 方針(トーン・攻め・カラム別指示)
  • 元の求人データ全体

outputOutput

  • キャッチコピー(35〜256文字)テキストのみ
Costgpt-5.1単価

仕事内容ライター

400〜600文字の仕事内容を生成。ファーストビュー設計・スマホファースト。数字は{{placeholder}}で出力

gpt-5.1parallel

inputInput

  • 方針(トーン・攻め・カラム別指示)
  • 元の求人データ全体

outputOutput

  • 仕事内容(400〜600文字)テキストのみ
Costgpt-5.1単価(maxTokens: 4096)

アピールポイントライター

箇条書き3〜5個。「特徴」ではなく「ベネフィット」で記述。数字で裏付け

gpt-5.1parallel

inputInput

  • 方針(トーン・攻め・カラム別指示)
  • 元の求人データ全体

outputOutput

  • アピールポイント(箇条書き3〜5個)テキストのみ
Costgpt-5.1単価

求める人材ライター

必須条件と歓迎条件を明確に分離。ハードルを下げる表現を心がける

gpt-5.1parallel

inputInput

  • 方針(トーン・攻め・カラム別指示)
  • 元の求人データ全体

outputOutput

  • 求める人材(必須+歓迎)テキストのみ
Costgpt-5.1単価

整形ナノ(事実系7カラム一括)

事実系7カラムを一括で読みやすく整形。内容は一切変更せず箇条書き・改行で見やすくするだけ

gpt-5-nanoparallel

inputInput

  • 勤務時間・曜日
  • 休暇・休日
  • 勤務地の補足
  • アクセス
  • 給与の補足
  • 待遇・福利厚生
  • その他

outputOutput

  • 整形済み7カラム(JSON)
Cost0.02円 × 対象求人数
PHASE 5

検査

bolt並列実行0.12円

職種名チェックナノ

職種名のルール適合を検査する

gpt-5-nanoparallel

inputInput

  • リライト後の職種名
  • NGワードリスト

outputOutput

  • pass/fail
  • 17文字以内か
  • NGワード有無
  • 禁止記号有無
Cost0.01円 × 対象グループ数

仕事内容チェックナノ

仕事内容の品質を検査する

gpt-5-nanoparallel

inputInput

  • リライト後の仕事内容
  • 元の仕事内容

outputOutput

  • pass/fail
  • 200文字以上か
  • ファーストビュー有無
  • 事実との矛盾
  • 数値改ざん有無
Cost0.01円 × 対象グループ数

残り3カラムチェックナノ

キャッチ・アピール・求める人材をまとめて検査

gpt-5-nanoparallel

inputInput

  • リライト後のキャッチコピー
  • リライト後のアピールポイント
  • リライト後の求める人材
  • 元データ

outputOutput

  • pass/fail
  • 文字数チェック
  • 事実との矛盾チェック
Cost0.01円 × 対象グループ数
PHASE 6

組み立て

0円

CSV組み立て

全カラムを結合し、プレースホルダーを実数値に置換してIndeed CSV 65列を出力する。全求人CSV + 変更分のみCSVの2種類を生成

Code

inputInput

  • gpt-5.1の5カラム
  • 整形ナノの7カラム
  • 保護カラム(約50列・元データ維持)
  • プレースホルダー値(salary_min, area等)

outputOutput

  • 全求人CSV(65列)
  • 変更分のみCSV(Indeedアップロード用)
Cost0円

paymentsコスト合計(30件・4グループ想定)

fast (agent)指揮者

0.02〜0.10円

1〜8ステップ(ツール呼出回数による)

gpt-5-nano合計 32回

0.52円

分類10 + 偵察4 + 会話1 + 方針1 + 整形4 + 検査12

gpt-5.1テンプレ方式

約24円

4グループ × 5カラム = 20回

gpt-5.1並列方式

約180円

30件 × 5カラム = 150回

旧設計との比較

旧設計(gpt-5.4)
新設計(gpt-5.1+nano+指揮者)
テンプレ方式
約140円
約24円(-83%)
並列方式
約1,050円
約180円(-83%)
所要時間
約5分
約30秒