레시피

리드 보강

구조화된 추출로 회사 웹사이트에서 CRM 리드 보강

회사 URL 목록 (CRM, 가입 양식, 또는 수동 업로드에서) 이 주어지면, 구조화된 firmographic 데이터 — 산업, 직원 수, 기술 스택, 연락 채널 — 를 가져와 리드 레코드에 다시 기록하세요.

스키마

{
  "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와 다시 join 하고 구조화된 필드를 CRM에 기록하세요.

  • required를 최소화하세요 — 많은 소규모 회사 사이트는 모든 필드를 갖추고 있지 않습니다
  • "best-effort" pass를 추가하세요: contactEmail이 없으면 /contact 페이지도 Distill 하세요
  • 도메인별로 캐시하세요 — 동일한 도메인을 매월 재보강하는 것으로 보통 충분합니다

관련 문서

이 레시피는 CRM 통합 패턴 (HubSpot / Salesforce) 으로 확장 중입니다 — 곧 업데이트됩니다.