TL;DR: 에이전트를 활용해 인바운드 리드 정보를 보강(enrichment)하려면, 신규 가입자의 이메일과 도메인을 웹훅으로 보내 에이전트 실행을 시작하세요. 에이전트는 People Data Labs에서 인물 정보를, Apollo에서 기업 정보를 보강하고, 제재 대상자 목록과 대조한 뒤, ICP(이상적 고객 프로필)에 맞춰 점수를 매기고 리드당 하나의 태스크를 등록합니다. 답장을 보내기 전에 담당자가 적격 리드를 직접 검토합니다. 비용은 시트(seat)당 청구되지 않고 Firecrawl 크레딧으로 리드 건당 지불합니다.
새로운 가입이 발생하면 유용한 필드 두 가지가 확보됩니다. 바로 이메일과 회사 도메인입니다. 누군가는 이 정보를 바탕으로 판단을 내려야 합니다. 이 가입자가 실제 구매자일까요, 학생일까요, 경쟁사일까요, 아니면 법적으로 거래할 수 없는 대상일까요?
일반적으로는 리드를 분류하는 모든 담당자에게 인리치먼트 도구의 시트를 배정하곤 합니다. Apollo는 시트 단위로 요금을 부과하며, 요금제 안내 페이지에 따르면 한 계정의 모든 시트가 단일 플랜을 공유합니다. 사람이 직접 데이터를 조회한다면 합리적인 방식입니다. 하지만 에이전트가 조회를 대신 수행한다면, 결과만 확인하는 담당자에게는 별도의 시트가 전혀 필요하지 않습니다.
이 가이드에서는 런타임으로 Claude Code 또는 Codex를, 데이터 레이어로 Firecrawl Alexandria를 활용하여 Sharkly에서 해당 워크플로를 구축합니다. 아래에 언급된 모든 크레딧 단가는 2026년 11월 3일 기준으로 확인된 Firecrawl의 공시 가격입니다. 본 포스팅에서는 실제 라이브 리드를 대상으로 실행하지 않았으므로, 총비용은 참고용 예시로 확인하시고 실제 연동 전 플레이그라운드에서 단가를 직접 확인하시기 바랍니다.
왜 에이전트로 인바운드 리드를 보강해야 할까
인바운드 리드 인리치먼트(Inbound lead enrichment)는 담당자가 시간을 들이기 전에 신규 연락처의 직책, 회사, 적합도 정보를 미리 채워 넣는 작업을 의미합니다. 에이전트가 정보 조회를 실행하고, 비즈니스 규칙을 적용하며, 한 문단 분량의 요약 브리프를 작성할 수 있습니다. 답장을 보낼 대상에 대한 최종 결정권은 여전히 사람이 갖습니다.
에이전트가 조회를 수행하면 세 가지가 달라집니다.
- 비용이 리드 건수에 비례합니다. 하나의 Firecrawl 키로 모든 데이터 프로바이더를 이용할 수 있습니다. 각 조회마다 공시된 크레딧 단가가 있으며, 아래 소개하는 프로바이더들은 매칭되지 않은 조회에 대해 비용을 청구하지 않습니다.
- 규칙이 파일 형태로 관리됩니다. ICP는 검토자의 머릿속이 아니라, 에이전트가 매 실행마다 읽어 들이는 검토 완료된 파일에 정의됩니다.
- 모든 리드에 동일한 검증이 적용됩니다. 하루의 40번째 가입자도 첫 번째 가입자와 똑같이 제재 대상 여부를 철저하게 검증받습니다.
한눈에 살펴보는 인바운드 인리치먼트 파이프라인
| 단계 | 프로바이더 및 기능 | 공시 가격 | 무료 적용 조건 |
|---|---|---|---|
| 1. 웹훅으로 실행 트리거 | Sharkly Automation | 0크레딧 | 상시 무료 |
| 2. 인물 정보 보강 | People Data Labs person/enrich |
60크레딧 | 매칭도가 min_likelihood 미만인 경우 (404) |
| 3. 기업 정보 보강 | Apollo companies/bulk-enrich |
매칭된 기업당 30크레딧 | 도메인이 매칭되지 않는 경우 |
| 4. 제재 대상자 스크리닝 | OpenSanctions (opensanctions-org) |
find-tools로 확인 |
무료로 예단 불가 |
| 5. 점수 산정 및 라우팅 | 자체 규칙 파일 | 0크레딧 | 상시 무료 |

1단계: 웹훅으로 인리치먼트 실행 시작하기
Sharkly에서 Automation(자동화)은 반복 가능한 작업을 단일 Agent 또는 Crew에 전달하는 Space 소유의 규칙입니다. 트리거 유형 중 하나로 웹훅이 제공되는데, 이는 다른 서비스로부터 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이 활성화 상태라는 점만 표시됩니다. 서명 시크릿(signing secret)을 추가하면 요청 시 서명 검증까지 거치도록 설정할 수도 있습니다.

설계 시 한 가지 눈여겨볼 세부 사항이 있습니다. Automation은 태스크가 아니라 에이전트 실행을 시작한다는 점입니다. 따라서 프롬프트 지침을 통해 에이전트가 작업 마지막에 직접 리드 태스크를 생성하도록 지시합니다. 실행 세부 정보에는 트리거 페이로드가 보존되므로 각 리드에 어떤 데이터가 인입되었는지 기록이 남습니다.
2단계: 이메일 기반 인물 정보 보강
People Data Labs의 person/enrich는 호출당 60크레딧으로 책정되어 있습니다. 입력값으로는 email 하나만으로 충분합니다. 비용 지출을 제어하는 핵심 설정은 1부터 10까지 설정 가능하며 기본값이 2인 min_likelihood입니다. 이 값을 높이면 일치 가능성이 낮은 경우 레코드 대신 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 호출은 고객 조직당 인물 및 기업 엔드포인트를 통틀어 연간 50,000회로 제한됩니다. 재시도 횟수도 여기에 포함되며, 쿼터는 UTC 기준 매년 1월 1일에 초기화됩니다.
3단계: 도메인 기반 기업 정보 보강
Apollo의 기업 데이터는 투자 유치 내역, 직원 수, 사용 기술 스택 등을 제공합니다. Firecrawl 공식 예제에서는 한 번의 호출로 최대 10개 도메인을 처리할 수 있는 companies/bulk-enrich 기능을 사용합니다. 2026년 10월 Firecrawl 비교 자료에 따르면 매칭된 기업당 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 어카운트 데이터 최신화)"라는 빌트인 스킬이 나열되어 있습니다. 이 스킬은 도메인별로 어카운트 정보를 다시 보강한 후 기존 CRM에 저장된 값과 새 값을 비교합니다. 이는 신규 가입자 대신 기존 어카운트를 대상으로 동일한 API 호출을 수행하는 방식입니다.
4단계: 제재 대상자 목록 대조 스크리닝
Alexandria의 People 카테고리에는 제재 대상자, PEP(주요 공인), 요주의 인물 데이터베이스인 OpenSanctions와 영국 제재 목록(UK Sanctions List)이 포함되어 있습니다. 도구 탐색(Discovery)은 무료이므로, 첫 유료 호출을 실행하기 전에 에이전트가 스크리닝 기능과 요금을 먼저 조회하도록 설정하세요.
firecrawl find-tools --options '{"providers": ["opensanctions-org"]}' --include-costs
OpenSanctions의 데이터셋 기능은 실행당 5크레딧으로 표시됩니다. 엔티티 검색(entity search) 비용도 동일할 것이라 단정하지 말고, 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의 진가가 발휘되는 영역입니다. 태스크 상태(Status)는 태스크 유형별로 설정할 수 있으며, 각 상태는 고정된 카테고리에 속합니다. 리드 처리의 경우 다음 세 가지 상태만으로 충분합니다.
| 상태 | 카테고리 | 담당자 | 후속 조치 |
|---|---|---|---|
| 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 신호로 표시됩니다. 에이전트가 첫 답장 초안을 작성한 경우, 해당 초안은 태스크 본문에 저장됩니다. 에이전트가 이를 직접 발송하는 일은 결코 없습니다. 이러한 안전장치(gate)는 HITL(Human-in-the-loop) 코딩 에이전트에서 설명한 패턴과 동일합니다.
리드 건당 크레딧 정산 내역
두 인리치먼트 조회가 모두 매칭된 단일 리드의 경우, 공시 가격 기준 비용 합계는 다음과 같습니다.
| 호출 항목 | 크레딧 |
|---|---|
People Data Labs person/enrich |
60 |
Apollo companies/bulk-enrich (매칭 도메인 1건) |
30 |
| 제재 대상자 스크리닝 | find-tools 조회 가격 |
| 점수 산정 및 라우팅 | 0 |
| 스크리닝 전 합계 | 90 |
Firecrawl 요금제 기준, Hobby 플랜은 월 5,000크레딧에 19달러로 크레딧당 0.0038달러입니다. 즉, 90크레딧은 리드당 0.342달러가 됩니다. Standard 플랜은 월 100,000크레딧에 99달러로 크레딧당 0.00099달러이므로, 동일한 리드 1건당 0.0891달러가 듭니다. gmail.com과 같은 무료 이메일 도메인은 기업 정보 조회를 건너뛰세요. 그렇지 않으면 Google의 직원 수를 알아내는 데 30크레딧을 쓰게 됩니다.
월 100건의 매칭 리드가 발생한다면 9,000크레딧을 사용하게 됩니다. 이는 Hobby 플랜의 5,000크레딧을 초과하므로 추가 크레딧을 구매하거나 Standard 플랜으로 업그레이드해야 합니다. 플랜을 선택하기 전에 예상 유입량에 맞춰 비용을 계산해 보시기 바랍니다.
시트 기반 요금제 비교 시 유의할 점이 하나 있습니다. Apollo는 시트당 요금을 청구하지만, Clay는 그렇지 않습니다. Clay는 요금 안내 페이지에서 모든 플랜에 워크스페이스당 무제한 사용자를 제공한다고 명시합니다. 여기서 다루고자 하는 핵심은 단순히 "시트 과금이 나쁘다"는 것보다 더 구체적입니다. 에이전트가 조회를 수행하면, 비용 청구 기준이 결과를 확인하는 사람 수가 아니라 처리된 리드 수에 맞춰진다는 점입니다.
Sharkly가 전체 워크플로를 조율하는 방식
Claude Code나 Codex가 호출을 실행하고, Sharkly는 이를 둘러싼 전체 작업 과정을 투명하게 가시화합니다.
- API 키가 태스크에 노출되지 않습니다. Agent의 환경 변수(Environment Variables)에
FIRECRAWL_API_KEY를 설정하세요. Sharkly에서는 이 평문 설정이 Agent 관리자에게 표시되므로, 해당 작업 전용으로 권한 범위를 제한한 키를 사용하는 것이 좋습니다. - 에이전트는 시트를 차지하지 않습니다. Sharkly에서 시트는 사람에게만 부여됩니다. Agent, Crew, Computer, Runtime은 시트를 차지하지 않습니다.
- 모든 실행 기록이 남습니다. Automation 실행 내역에서 트리거 페이로드, 에이전트 실행 과정, 실패 사유를 확인할 수 있습니다.
웹훅을 본격적으로 연동하기 전에 테스트 페이로드로 Automation의 Run now(지금 실행)를 사용해 보세요. 그런 다음 자동 작성된 답변 초안 기능을 추가하기 전에 실행 결과를 몇 차례 검토하시기 바랍니다. 각 트리거 유형에 대한 자세한 내용은 Automations 가이드에서 확인할 수 있습니다.
단 하나의 웹훅으로 시작하기
에이전트를 활용한 인바운드 리드 인리치먼트는 작게 시작하는 것이 좋습니다. 웹훅 하나, 에이전트 하나, 인리치먼트 호출 두 개, 규칙 파일 하나, 검토 상태 하나로 충분합니다. 다음 20명의 신규 가입자를 대상으로 실행해 보고, 답장을 보내기 전에 모든 요약 브리프를 검토해 보세요. Sharkly는 무료로 시작할 수 있으며, 모델 사용량은 Runtime에 이미 연결된 Claude Code 또는 Codex 플랜을 기반으로 실행됩니다.
자주 묻는 질문 (FAQ)
Firecrawl로 인바운드 리드 1건을 보강하는 데 드는 비용은 얼마인가요?
Firecrawl 공시 가격 기준으로 People Data Labs와 Apollo에서 모두 매칭되는 리드는 제재 대상자 스크리닝 전 기준으로 90크레딧이 소요됩니다. 이는 월 청구 기준 Hobby 플랜에서 약 0.34달러, Standard 플랜에서 약 0.09달러 수준입니다.
인리치먼트에 실패해도 크레딧이 차감되나요?
이 두 프로바이더의 경우에는 차감되지 않습니다. People Data Labs에서 설정한 min_likelihood 미만으로 매칭되면 무료로 404가 반환되며, Apollo의 기업 일괄 인리치먼트(bulk company enrichment)는 매칭되지 않은 도메인에 대해 요금을 부과하지 않습니다.
에이전트가 리드에게 직접 답장을 보낼 수도 있나요?
직접 발송하지 않도록 설정하는 것이 좋습니다. 에이전트는 초안이 포함된 태스크만 등록하고, 담당자가 검토한 후 직접 답장을 발송해야 합니다.
OpenSanctions를 상업적 용도로 무료 사용할 수 있나요?
아닙니다. 해당 데이터는 CC BY-NC 4.0 라이선스가 적용되며, 기업용 스크리닝에는 유료 라이선스가 필요합니다. 세일즈 워크플로에 적용하기 전에 라이선스 정책을 반드시 확인하세요.
이를 구현하려면 Apollo 시트가 필요한가요?
에이전트의 호출은 Firecrawl 키를 통해 실행되므로 별도의 시트가 필요하지 않습니다. 단, Firecrawl에서 조직 관리자에게 프로바이더의 데이터 이용 약관에 먼저 동의하도록 요청할 수 있으며, 이 경우 THIRD_PARTY_DATA_TERMS_REQUIRED 에러가 발생합니다.
실행 도중 Firecrawl에서 약관 동의를 요청하면 어떻게 해야 하나요?
응답에 requiresAction.url이 포함되어 반환됩니다. 조직 관리자가 해당 URL로 이동하여 약관에 동의하면 됩니다. Firecrawl 공식 문서에 따르면 에이전트가 약관에 동의하려면 사용자의 명시적인 승인이 필요하므로, 에이전트는 사람이 처리할 수 있도록 태스크를 대기 상태로 남겨두어야 합니다.



