TL;DR: エージェントを活用してインバウンドリードのエンリッチメント(情報付加)を行うには、サインアップごとにメールアドレスとドメインをWebhookに送信し、エージェントの実行をトリガーします。エージェントはPeople Data Labsで個人情報、Apolloで企業情報をエンリッチし、制裁リストと照合した上で、自社のICP(理想の顧客プロファイル)に照らしてスコアリングを行い、リードごとにタスクを1件作成します。返信する前に必ず担当者が適格なリードを確認します。課金はシート単位ではなく、Firecrawlのクレジットを使ったリード単位の従量課金です。
サインアップ時に得られる有用な情報は、メールアドレスと企業ドメインという2つのフィールドだけです。誰かがこれをもとに判断を下さなければなりません。この相手は購入検討者か、学生か、競合か、あるいは法的に取引が禁止されている相手なのか?
これに対する従来の解決策は、リードのトリアージを行う全員にエンリッチメントツールのシート(アカウントライセンス)を用意することでした。Apolloはシート単位で課金され、料金ページにはアカウント内の全シートが1つのプランを共有すると記載されています。人間が一件ずつ検索を行うのであれば、それも理にかなっています。しかし、エージェントが検索を行うのであれば、その結果を確認する人にはシートが一切不要になります。
本ガイドでは、このフローをランタイムとしてClaude CodeまたはCodex、データレイヤーとしてFirecrawl Alexandriaを用い、Sharkly上で構築します。以下に記載するクレジット価格はすべて、2026年11月3日時点のFirecrawlの定価です。本記事では実際のライブリードは実行していないため、合計費用は試算例として捉え、実際に連携する前にPlaygroundで価格を確認してください。
なぜエージェントでインバウンドリードをエンリッチするのか
インバウンドリードのエンリッチメントとは、担当者が時間を費やす前に、新規コンタクトの役職や会社情報、適合度を自動で補完することを指します。エージェントが検索を実行し、独自のルールを適用して、1段落の要約(ブリーフ)を作成します。誰に返信するかという最終判断は、引き続き人間が行います。
エージェントが検索を担うことで、次の3つの変化が生まれます。
- 課金がリード数に連動する:1つのFirecrawl APIキーですべてのプロバイダーをカバーできます。各検索にはクレジット価格が設定されており、後述するプロバイダーではマッチしなかった検索には費用が発生しません。
- ルールをファイルとして管理できる:ICPは担当者の頭の中ではなく、レビュー済みのファイルとして管理され、エージェントが実行のたびにそれを読み込みます。
- すべてのリードに同一のチェックが適用される:その日の40件目のサインアップにも、1件目とまったく同じ制裁リスト照合が実施されます。
インバウンドエンリッチメントパイプラインの概要
| ステップ | プロバイダーと機能 | 定価 | 無料となる条件 |
|---|---|---|---|
| 1. Webhookが実行を開始 | Sharkly Automation | 0クレジット | 常時無料 |
| 2. 個人情報をエンリッチ | People Data Labs person/enrich |
60クレジット | マッチ度がmin_likelihood未満の場合(404) |
| 3. 企業情報をエンリッチ | Apollo companies/bulk-enrich |
マッチした企業1社につき30クレジット | ドメインがマッチしなかった場合 |
| 4. 制裁リストと照合 | OpenSanctions (opensanctions-org) |
find-toolsで確認 |
無料と見なさない(要確認) |
| 5. スコアリングとルーティング | 自社のルールファイル | 0クレジット | 常時無料 |

ステップ1: Webhookがエンリッチメント実行をトリガー
SharklyにおけるAutomation(オートメーション)とは、反復的な作業を1つのAgentまたはCrewに委任するSpace所有のルールです。そのトリガータイプの1つがWebhookです。これは、外部サービスからのPOSTリクエストを受け取るシークレットURLであり、サインアップバックエンドから新しいリード情報をこのURLにPOSTします。
# From your signup handler. The URL is a secret; keep it in your app's env.
curl -X POST "$SHARKLY_LEAD_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{"signup_id": "su_10482", "email": "[email protected]", "domain": "example-corp.com"}'
Sharklyでは、トリガーの作成時または再生成時に一度だけ完全なURLが表示されます。それ以降、トリガーカードにはURLがアクティブであることのみが表示されます。署名シークレットを追加して、リクエストに署名検証を義務付けることも可能です。

設計上の重要なポイントとして、Automationが開始するのはタスクではなくエージェントの実行(agent run)であるという点があります。そのため、処理の最後にエージェント自身がリードタスクを作成するよう指示を出します。実行詳細にはトリガーのペイロードが保持されるため、リードごとに届いたデータの記録が残ります。
ステップ2: メールアドレスから個人情報をエンリッチ
People Data Labsのperson/enrichは、1回の呼び出しにつき定価60クレジットです。入力はemailだけで十分です。コストを左右する設定項目がmin_likelihoodで、1から10までの値を指定でき、デフォルトは2です。この値を引き上げると、一致の確度が低いマッチはレコードではなく404を返します。Firecrawlのプロバイダーページには、「ここでの404は無料だが、誤ったレコードの取得は無料ではない」と明確に記されています。
// enrich-lead.mjs: one call per signup, key injected as $FIRECRAWL_API_KEY
const call = (alexandria) =>
fetch("https://api.firecrawl.dev/v2/scrape", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.FIRECRAWL_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ alexandria }),
}).then((r) => r.json());
const person = await call({
provider: "people-data-labs",
capability: "person/enrich",
options: { email: lead.email, min_likelihood: 6, titlecase: true },
});
const p = person.alexandria?.[0];
if (p?.error) brief.errors.push(p.error); // check every result before using it
取得されるレコードには約150個のフィールドが含まれていますが、ブリーフに必要なのはそのうちの5つだけです。プレースホルダー値を入れた場合、エージェントが保持する部分は次のようになります。
{
"full_name": "Jordan Example",
"job_title": "Director Of Platform Engineering",
"job_company_name": "Example Corp",
"linkedin_url": "linkedin.com/in/placeholder",
"likelihood": 8
}
利用クォータにも注意してください。Alexandria経由のPeople Data Labsでは、personおよびcompanyのエンドポイントを合わせて、顧客組織ごとに年間50,000回のAPI呼び出しが許可されています。リトライもカウント対象となり、クォータは毎年1月1日(UTC)にリセットされます。
ステップ3: ドメインから企業情報をエンリッチ
Apolloの企業データは、資金調達額、従業員数、使用テクノロジーなどをカバーしています。Firecrawlの公式サンプルではcompanies/bulk-enrich機能を使用しており、1回の呼び出しで最大10ドメインまで処理できます。Firecrawlの2026年10月の比較情報によると、マッチした企業1社につき30クレジットで、マッチしなかったドメインは無料です。
const company = await call({
provider: "apollo",
capability: "companies/bulk-enrich",
options: { "domains[]": [lead.domain] },
});
const org = company.alexandria?.[0]?.data?.organizations?.[0];
// org.name, org.estimated_num_employees, funding and technology fields
ApolloのAlexandriaページには、「CRM account data refresh」というビルトインスキルが掲載されています。これはドメインに基づいてアカウントを再エンリッチし、CRMにすでに保持されている値と新しい値を比較するものです。対象を新規サインアップではなく既存のアカウントに向けただけで、まったく同じ呼び出しが行われます。
ステップ4: リードを制裁リストと照合
AlexandriaのPeopleカテゴリーには、制裁対象者、PEP(要人)、および要注意人物のデータベースであるOpenSanctionsや、英国制裁リスト(UK Sanctions List)が含まれています。ディスカバリーは無料なので、最初の有料呼び出しを行う前に、エージェントにスクリーニング機能とその価格を検索させます。
firecrawl find-tools --options '{"providers": ["opensanctions-org"]}' --include-costs
OpenSanctionsのデータセット機能には1回の実行につき5クレジットと表示されていますが、エンティティ検索も同じ価格であるとは決めつけず、find-toolsが返す価格を確認してください。また、ライセンスにも注意が必要です。OpenSanctionsはデータをCC BY-NC 4.0の下で公開しており、ビジネス向けスクリーニング用には別途ライセンスを販売しているため、商用のリードフローには適切なライセンスが必要です。
リストに一致したからといって、エージェントがリードを却下するわけではありません。一致結果を添付した上で、タスクを担当者に割り当てます。
ステップ5: ICPに対する適合度をスコアリング
スコアリングには、すでに取得済みのフィールドを読み込むだけなので追加コストはかかりません。ルールをSharkly Skillとして定義しておけば、すべての実行で同じファイルが読み込まれ、ルールへの変更もレビュープロセスを経ることができます。
# inbound-icp.md (owner: head of sales)
qualify_if: employees >= 50 AND title in [Director, VP, Head, CTO] AND sanctions_match == false
nurture_if: employees < 50 OR title not senior
disqualify_if: free_email_domain OR known_competitor_domain
on_sanctions_match: route to Sales review with the match, never auto-reply
brief_fields: [name, title, company, employees, funding, score, reason, credits_spent]
ボード上でリードをルーティング
ルーティングこそがSharklyの真骨頂です。タスクのステータスはタスクタイプごとに設定可能で、各ステータスは固定のカテゴリーに属します。リード管理においては、次の3つのステータスで十分カバーできます。
| ステータス | カテゴリー | 担当者 | 次のアクション |
|---|---|---|---|
| Sales review | Unstarted | 担当者(人間) | タスク内にブリーフと返信の下書きが含まれ、送信前にレビューされる |
| Nurture | Backlog | なし | 将来のキャンペーンまで待機 |
| Disqualified | Canceled | なし | 理由とともに保持され、これ以降の実行はなし |
エージェントは実行の最終ステップとしてタスクを作成します。
sharkly task create \
--title "Lead: Example Corp (Director Of Platform Engineering)" \
--body-file brief.md \
--status "Sales review" \
--assignee <member> --output json
アサインされたタスクは、担当者のInboxにPrimaryシグナルとして届きます。エージェントが最初の返信メールを下書きした場合でも、その下書きはタスク本文に配置されるだけであり、エージェントが勝手に送信することはありません。このチェックポイントは、Human-in-the-loop コーディングエージェントで解説したパターンと同じです。
リード1件あたりのクレジット費用内訳
両方のエンリッチメントがマッチしたリード1件について、定価を合算すると次のようになります。
| 呼び出し | クレジット |
|---|---|
People Data Labs person/enrich |
60 |
Apollo companies/bulk-enrich(マッチしたドメイン1件) |
30 |
| 制裁リスト照合 | find-toolsで取得した価格 |
| スコアリングとルーティング | 0 |
| スクリーニング前の合計 | 90 |
Firecrawlの料金プランでは、Hobbyプランが月額19ドルで5,000クレジット(1クレジットあたり0.0038ドル)です。これに基づくと、90クレジットはリード1件あたり0.342ドルになります。Standardプランは月額99ドルで100,000クレジット(1クレジットあたり0.00099ドル)であるため、同じリードが0.0891ドルで済みます。gmail.comなどのフリーメールのドメインについては企業情報の呼び出しをスキップしてください。さもないと、Googleの従業員数を知るためだけに30クレジットを支払うことになります。
月に100件のマッチしたリードを処理する場合、消費クレジットは9,000になります。これはHobbyプランの5,000クレジットを超えるため、追加クレジットを購入するか、Standardプランに移行することになります。プランを選択する前に、自社のリード件数で費用を計算してみてください。
シート課金の比較に関して1点注意があります。Apolloはシート単位で課金されますが、Clayはそうではありません。Clayの料金ページでは全プランでワークスペースあたりのユーザー数が無制限とされています。ここでの主張は単に「シート課金が悪い」という短絡的な話ではありません。エージェントが検索を担当する場合、課金は結果を閲覧する人間の人数ではなく、処理したリード数に連動するようになるということです。
Sharklyがフロー全体を統合する仕組み
APIの呼び出しを実行するのはClaude CodeやCodexですが、Sharklyはその周辺のワークフロー全体の可視性を保ちます。
- APIキーをタスク内に入れない:
FIRECRAWL_API_KEYはAgentの環境変数に設定します。Sharklyではこれらの平文設定がAgent管理者に表示されるため、この業務専用にスコープを絞ったキーを使用してください。 - エージェントはシートを消費しない:Sharklyにおけるシートとは人間のユーザーを指します。Agent、Crew、Computer、Runtimeはシートを消費しません。
- 実行履歴が記録として残る:Automationの実行履歴には、トリガーのペイロード、エージェントの実行内容、失敗した際のエラー理由が記録されます。
Webhookの本格運用を始める前に、テスト用のペイロードを使ってAutomationのRun nowを実行してみてください。そして、返信の自動下書き機能を追加する前に、数回の実行結果をレビューしてください。各トリガータイプの詳細については、Automationsガイドに記載されています。
まずは1つのWebhookから始める
エージェントによるインバウンドリードのエンリッチメントは、まずは小さく始めましょう。1つのWebhook、1つのエージェント、2つのエンリッチメント呼び出し、1つのルールファイル、そして1つのレビュー用ステータスからスタートします。次の20件のサインアップで試してみて、誰かが返信する前にすべてのブリーフを確認してください。Sharklyは無料で開始でき、モデルの利用料はお使いのRuntimeにすでに紐付けられているClaude CodeまたはCodexのプランで賄われます。
FAQ
Firecrawlを使ってインバウンドリード1件をエンリッチするのにいくらかかりますか?
Firecrawlの定価では、People Data LabsとApolloの両方でマッチしたリードの場合、制裁リスト照合前で90クレジットかかります。これは月額請求のHobbyプランで約0.34ドル、Standardプランで約0.09ドルに相当します。
エンリッチメントが失敗(不一致)した場合もクレジットを消費しますか?
今回取り上げた2つのプロバイダーでは消費しません。People Data Labsで設定したmin_likelihoodを下回るマッチは無料の404エラーとなり、Apolloの企業一括エンリッチメントでもマッチしなかったドメインに対して課金されることはありません。
エージェントが単独でリードに返信することはできますか?
単独では返信させない運用をおすすめします。エージェントは下書きを添付してタスクを作成するにとどめ、人間がレビューを行った上で返信を送信します。
OpenSanctionsは商用利用無料ですか?
無料ではありません。データはCC BY-NC 4.0ライセンスで提供されており、ビジネスにおけるスクリーニング用途には有料ライセンスの取得が必要です。営業フローに組み込む前に必ず確認してください。
これを行うにはApolloのシートが必要ですか?
エージェントによる呼び出しはFirecrawlのAPIキーを通じて行われるため、シートは不要です。ただし、Firecrawlからプロバイダーのデータ利用規約への同意を組織管理者に求められる場合があり、その際のエラーはTHIRD_PARTY_DATA_TERMS_REQUIREDとなります。
実行の途中でFirecrawlから規約への同意を求められた場合はどうなりますか?
レスポンスにrequiresAction.urlが含まれます。組織管理者がそのURLにアクセスして規約に同意します。Firecrawlのドキュメントでは、エージェントが規約に同意するにはユーザーの明示的な承認が必要と定められているため、エージェントはタスクを人間の対応待ち状態にしておく必要があります。



