持ち込み営業リストを会社へ名寄せする
CSV の各行を Company に照合し、確定した会社だけを Saved List へ保存する手順です。
このページの内容12項目
Claude Cowork、Claude Code、Codex に判定を任せ、sf CLI で検索と保存を実行します。JSON の識別子と状態を検証し、曖昧な候補は人間の確認へ戻します。
この手順を使う場面
手元の CSV にある会社を Signal Foundry の Company へ照合し、再利用できる Saved List を作る場合に使います。
この手順では、CSV を丸ごとアップロードしません。確定した company_id だけを保存します。曖昧な候補の自動確定、CRM への書き戻し、定期的な一括 enrichment は行いません。これらを組み込む場合は API リファレンス を確認してください。
役割は次のとおりです。
- Claude Cowork、Claude Code、Codex: 入力列を読み、検索順と次の操作を決める
sfCLI: Search、Company、Saved List、Usage の操作を実行する- JSON: 候補、識別子、状態、保存結果を検証する
始める前に
入力 CSV には、元の行を追跡できる ID と、分かる範囲の識別子を含めます。
source_row_id,company_name,corporate_number,securities_code,domain,prefecture row-001,トヨタ自動車株式会社,,7203,,愛知県 row-002,ソニーグループ株式会社,,,sony.com,東京都
実行前に現在の上限と credit を確認します。表示された実行時の値を判断に使ってください。
sf usage --json sf credits balance --json
Free の Search は現在 1,000 requests/day です。最初の検索だけで、入力 N 行に対して N search requests を使います。候補の再検索や sf company identity、sf company の読み取りにも Request Credit がかかる場合があります。
エージェントへ渡す prompt
CSV の場所と出力先を置き換えて、そのまま Claude Cowork、Claude Code、Codex へ渡せます。
<input.csv> の会社を Signal Foundry の Company へ名寄せし、結果を <resolved.csv> に保存してください。 各行は corporate_number、securities_code、domain、company_name の順で、最初に使える値を sf search "<query>" --limit 5 --json へ1回だけ渡してください。 Search は候補抽出だけに使ってください。identifier_matched=true だけでは confirmed にしないでください。 会社名 exact/core でも true になり得ます。Search 候補が1件で、元入力が法人番号、証券コード、 website domain のいずれかの場合だけ sf company identity <original-strong-input> --json へ進んでください。 confirmed にするのは、次の条件をすべて満たす場合だけです。 1. Search の meta.returned_companies が1。 2. identity_status=unique かつ needs_clarification=false。 3. 同じ company_id の identity candidate で、元入力が法人番号なら corporate_number、証券コードなら jpx_code、domain なら website_domain が exact 一致。 4. Search と identity の company_id が同じ。 5. sf company <company_id> --json が読め、company.company_id が同じ。 会社名だけの一致、複数候補、needs_clarification=true、強い識別子がない行は ambiguous にしてください。 0件は unmatched とし、会社不存在とは断定せず status、gaps、warnings を残してください。 出力列は source_row_id,input_company_name,resolution_status,company_id,legal_name, corporate_number,matched_by,confidence,gaps,review_note としてください。 CSV は Signal Foundry へアップロードせず、confirmed の company_id だけを Saved List へ追加してください。 sf list create "<list-name>" --json で作成し、list.id を使ってください。confirmed の company_id だけを JSON array にして sf list add <list-id> --stdin-json --json < confirmed-company-ids.json へ渡してください。 sf list show <list-id> --json と sf list export <list-id> --json で row_count と rows[].company_id を確認してください。 already_present と unknown_company_ids は別々に報告してください。 ambiguous は自動確定せず、CRM へは書き戻さないでください。
1. 各行を検索する
識別子の優先順は、法人番号、証券コード、website domain、会社名です。1 行につき最初の検索を 1 回実行します。
sf search "<corporate_number-or-securities_code-or-domain-or-company_name>" --limit 5 --json
見る key:
statusmeta.returned_companiescompanies[].company.company_idcompanies[].company.display_namecompanies[].company.legal_namecompanies[].profile.website_domaincompanies[].query_match.identifier_matchedcompanies[].query_match.match_reason.field_matchcompanies[].query_match.match_reason.identity_tiergaps[]warnings[]
identifier_matched=true だけでは、法人番号、証券コード、domain の一致を証明できません。実 pilot の会社名3例では、display_name_exact または display_name_company_core でも identifier_matched=true となり、候補数は5件、5件、4件でした。3例とも ambiguous です。
2. 判定する
resolution_status | 判定条件 | 次の操作 |
|---|---|---|
confirmed | Search 候補が1件で、identity の一意性、元入力との実値一致、company_id の一致、Company の読取成功をすべて確認 | 判定結果を保存する |
ambiguous | 候補が1件以上あるが confirmed の条件を1つでも満たさない。会社名だけの入力は候補が1件でも含む | 自動確定せず、追加情報を人間に求める |
unmatched | 候補が 0 件 | status、gaps、warnings を残して停止する |
会社名だけで候補が 1 社に見えても、自動で confirmed にしないでください。ambiguous の行は、法人番号、証券コード、domain、所在地のいずれかを人間に確認します。
unmatched は「Signal Foundry の現在の検索範囲では解決できなかった」という結果です。会社が存在しないとは断定しません。
3. identity で確定する
Search 候補が1件で、検索に使った元入力が法人番号、証券コード、domain のいずれかの場合だけ、identity を確認します。会社名だけの入力はこの手順へ進めず、ambiguous のままにします。
sf company identity <corporate-number-or-securities-code-or-domain> --json sf company <company_id> --json
見る key:
identity_statusneeds_clarificationidentity.company_ididentity.confidencecandidates[].company_idcandidates[].corporate_numbercandidates[].jpx_codecandidates[].website_domaincandidates[].matched_by[]gaps[]- Company 応答の
company.company_id - Company 応答の
company.display_name - Company 応答の
company.legal_name - Company 応答の
source_coverage
同じ company_id の candidates[] で、元入力との exact 一致を確認します。法人番号は corporate_number、証券コードは jpx_code、domain は website_domain と比較してください。
最終的な confirmed は、次の5条件をすべて満たす場合だけです。
- Search の
meta.returned_companiesが1。 identity_status=uniqueかつneeds_clarification=false。- identity candidate の対応値が元入力と exact 一致。
- Search の
companies[0].company.company_idとidentity.company_idが同じ。 sf company <company_id> --jsonが読め、company.company_idが同じ。
1つでも満たさない場合は ambiguous へ戻し、自動保存しません。identity.confidence と matched_by[] は判定記録に残しますが、上の条件の代わりには使いません。
4. 判定結果を保存する
ローカルの CSV または JSON に、少なくとも次の列を残します。
source_row_id,input_company_name,resolution_status,company_id,legal_name,corporate_number,matched_by,confidence,gaps,review_note
ローカル CSV / JSON は、CRM レビューや監査用の成果物として引き続き利用できます。Signal Foundry の Saved List には confirmed の company_id だけを渡します。
5. confirmed だけを Saved List へ追加する
sf list create "<list-name>" --json sf list add <list-id> --stdin-json --json < confirmed-company-ids.json sf list show <list-id> --json sf list export <list-id> --json
confirmed-company-ids.json には、確定した ID だけを入れます。
["jpx_7203", "jpx_6758"]
保存後に見る key:
- create 応答の
list.id - add 応答の
added - add 応答の
already_present[] - add 応答の
unknown_company_ids[] - show / export 応答の
row_count - show / export 応答の
rows[].company_id
unknown_company_ids[] が 1 件でもあれば、入力ファイルと Search 結果を照合してください。ambiguous または unmatched の ID を推測して追加してはいけません。
10 行で確認した結果
2026-08-11 に公開 CLI 0.4.0 と hosted API で 10 行を確認しました。この結果は手順の受け入れ確認であり、一般的な名寄せ精度を示すものではありません。
| 結果 | 行数 | 確認内容 |
|---|---|---|
confirmed | 6 | Search、identity、Company の5条件を満たし、元の強い識別子と exact 一致 |
ambiguous | 3 | 会社名だけでは候補が 5 件、5 件、4 件となり、自動確定しなかった |
unmatched | 1 | status=weak、gaps=[source_context_no_rows] を保持した |
確定した 6 社だけを一時 Saved List へ追加し、already_present=0、unknown=0、show / export ともに 6 社であることを確認しました。一時 Saved List は確認後に削除し、not_found になったことを確認しています。既存の Saved List は変更していません。
復旧方法
needs_clarification=true または複数候補が返る場合:
- 自動確定を止めます。
- 法人番号、証券コード、domain、所在地を人間に確認します。
- 得られた強い識別子で
sf search "<identifier>" --limit 5 --jsonを 1 回実行します。
status=weak または 0 件の場合:
gaps[]とwarnings[]を出力へ残します。- 入力の表記と識別子を確認します。
- 強い識別子がなければ
unmatchedのままにし、人間へ確認を戻します。
unknown_company_ids[] が返る場合:
sf search "<original-identifier>" --limit 5 --jsonのcompany_idを確認します。sf company <company_id> --jsonが読めることを確認します。- 解消しなければ、その ID を Saved List へ追加せず人間へ報告します。
usage または credit が不足する場合:
sf usage --json sf credits balance --json
実行時の status、上限、残量を確認し、入力を分割するか、続行前に workspace 管理者へ確認してください。
API から組み込む
定期実行、CRM 連携、大きなリストの処理では、API リファレンス から Search、Company、Usage の現行契約を確認してください。Saved Lists は POST /api/signal-foundry/lists で作成し、確定した ID だけを POST /api/signal-foundry/lists/{listId}/rows へ渡します。CLI と同じく、Search と identity の company_id、identity candidate の実識別子、Company の読取結果を検証してから company_id を保存し、ambiguous と unmatched を別の状態として保持します。
次に読む
- 検索 JSON の詳細: Company Search
- credit と上限: credit schedule
- エラーからの復旧: トラブルシューティング