レシピ

リードエンリッチメント

構造化抽出で企業ウェブサイトから CRM リードをエンリッチする

会社 URL のリスト(CRM、サインアップフォーム、または手動アップロード)から、構造化されたファーモグラフィックデータ —— 業種、従業員数、技術スタック、コンタクトチャネル —— を抽出し、リードレコードに書き戻します。

スキーマ

{
  "type": "object",
  "properties": {
    "companyName":   { "type": "string" },
    "industry":      { "type": "string", "description": "Primary industry from the homepage / about page" },
    "employeeCount": { "type": "string", "description": "Headcount band, e.g. '11-50'" },
    "headquarters":  { "type": "string", "description": "City, country" },
    "contactEmail":  { "type": "string" },
    "linkedinUrl":   { "type": "string" }
  },
  "required": ["companyName"]
}

実装

import httpx

API = "https://openapi.thunderbit.com/openapi/v1"
H = {"Authorization": "Bearer YOUR_API_KEY"}

leads = [
    {"id": "lead_1", "url": "https://acme.com"},
    {"id": "lead_2", "url": "https://stripe.com"},
]

job = httpx.post(f"{API}/batch/extract",
                 headers=H,
                 json={"urls": [l["url"] for l in leads],
                       "schema": SCHEMA,
                       "webhook": {"url": "https://your-server.com/webhook/leads",
                                   "secret": "whsec_..."}}).json()

Webhook が発火したら、results[].url をリード ID に紐付け直し、構造化フィールドを CRM に書き込みます。

ヒント

  • required は最小限に保ちましょう —— 多くの中小企業サイトには全フィールドが揃っていません
  • 「ベストエフォート」パスを追加しましょう:contactEmail が欠落している場合は、/contact ページも Distill しましょう
  • ドメイン単位でキャッシュしましょう —— 同じドメインを毎月再エンリッチすれば通常は十分です

関連

このレシピは現在 CRM 連携パターン(HubSpot / Salesforce)を追加して拡張中です —— 近日中にご確認ください。