직무 변경 신호: Apify, Claude Code 및 n8n을 사용하여 사람 데이터베이스에서 한 번의 쿼리로 얻은 21,834명의 새로운
요약
본 글은 Apify와 Claude를 활용하여 B2B 시장에서 특정 직무 변경 신호를 대규모로 포착하는 방법을 다룹니다. 특히, '역할 시작일' 필터를 사용하여 단일 개인이 아닌 전체 시장 규모(집계값)를 파악하는 것이 중요함을 강조합니다. 이를 통해 잠재 고객 데이터베이스 구축의 효율성을 높이는 개발 워크플로우를 제시합니다.
핵심 포인트
- Apify LinkedIn People Search Actor 사용법을 소개하며, B2B 구매 신호 포착에 활용 가능합니다.
- 단순 개별 관찰 대신 '시장 모드(market mode)'로 전체 시장 규모를 측정하는 것이 핵심입니다.
- 직무 시작일 필터는 12개월 창을 사용하는 것이 실제 인구 분포를 파악하는 데 유리합니다.
- Apify와 Claude의 조합은 개발자가 효율적인 데이터 수집 및 분석 워크플로우를 구축하도록 돕습니다.
‘Apify와 Claude를 사용한 GTM 워크플로우’ 시리즈의 일부입니다. 시리즈 오프너에서는 스택과 아래 모든 것을 실행하는 네 가지 방법을 설명하며, 이 부분은 세 목록 중 두 번째 목록을 구축합니다.
최근에 새로운 역할을 시작한 리더는 B2B에서 가장 잘 알려진 구매 신호입니다. 그들은 자신이 선택하지 않은 스택을 물려받았고, 결과를 보여줘야 할 의무가 있으며, 몇 달 동안 변화를 줄 수 있는 허가를 받습니다. 모든 벤더의 ‘첫 90일’ 플레이북은 같은 내용을 말합니다. 문제는 이 신호를 아는 것이 아닙니다. 문제는 대부분의 팀이 이를 알림으로, 한 번에 한 명씩, 어떤 계정을 관찰할 수 있는지 결정하는 도구로부터 받는다는 것입니다.
저는 정반대를 원했습니다. 단일 행을 가져오기 전에 전체 시장을 하나의 목록으로 크기를 측정하고, 스케줄에 따라 새로 고치는 것이었습니다. 2026-10-10에 Apify의 LinkedIn People Search Actor를 사용하여 어떻게 진행했는지 보여드리겠습니다. 제가 이것을 사용하는 이유는 역할 시작일(role-start-date) 필터가 일급 필드이기 때문이며, 개수 및 시장 모드가 행을 전달하지 않고 집계값을 반환하고, 새로 고침은 이전 실행에서 이미 제공된 사람들을 건너뛰기 때문입니다.
필터로 작성된 신호
제가 원하는 대상: 미국, 영국 또는 독일의 50개에서 5,000개 규모 회사에 있는 영업 또는 매출 부문의 디렉터, VP 또는 C-레벨 중 지난 12개월 이내에 현재 역할을 시작한 사람.
왜 30일이 아니라 12개월인가: 프로필 데이터베이스의 직위 시작일은 사람들이 시작 몇 주 또는 몇 달 후에 프로필을 업데이트하기 때문에 늦게 도착합니다. 시작일은 올해 초에는 밀집되어 있고 가장 최근 월에는 희박합니다. 12개월 창(window)은 실제 인구를 포착하고, 30일 창은 일찍 업데이트하는 사람들을 포착합니다. 만약 ‘이번 주’가 필요하다면, 창을 줄이지 말고 매번 주간 단위로 실행하여 새로운 사람들을 가져가세요 (아래 새로 고침 섹션).
{
"mode": "count",
"countries": ["us", "gb", "de"],
...
**21,834명**, 행은 전달되지 않았습니다. `"currentRoleStartedAfterDate": "2026-01"`을 사용한 동일한 입력값은 11,861명을 제공하며, 이는 해당 기간 동안 인구가 어떻게 분포되어 있는지를 알려줍니다.
## 시장 개요 (The market brief)
모드를 `market`으로 전환하고 동일한 필터를 적용했습니다. 이로써 개인 정보가 아닌 세그먼트를 설명하는 163개의 집계 행이 나왔으며, 개인별 행은 없습니다. 다음 행동을 바꾼 부분들은 다음과 같습니다:
- **국가 (Country):** 미국(US) 87%, 영국(UK) 9%, 독일(Germany) 4%.
- **고용주 규모 (Employer size)** (직원이 현재 직책을 공유하므로, 두 가지 역할을 가진 사람은 두 번 계산됩니다): 51–200명 48%, 201–1,000명 47%, 1,001–10,000명 36%.
- **산업 (Industry):** 소프트웨어(Software) 22%, IT 서비스(IT services) 8%, 금융 서비스(Financial services) 7%, 병원 및 의료(Hospitals and health care) 6%, 환대 산업(Hospitality) 6%, 광고(Advertising) 4%, 보안(Security) 3%.
- **직급/경력 수준 (Seniority):** 이사(director) 74%, 부사장(VP) 34%, C레벨(C-level) 9%.
- **주요 직책 (Top titles):** 영업 이사(Sales Director) 6.6%, 영업 부사장(Vice President of Sales) 5.4%, 영업 이사(Director of Sales) 4.8%, 지역 영업 이사(Regional Sales Director) 3.3%, 최고 수익 책임자(Chief Revenue Officer) 2.5% + 두 번째 철자로 2.2%, 수익 운영 이사(Director of Revenue Operations) 0.8%.
- **주요 "고용주" (Top "employer"):** Pavilion, 159개 직책. 그 뒤로는 소로리티와 전문 협회들이 이어집니다. 이들은 고용주가 아니라 두 번째 현재 직책으로 나열된 커뮤니티입니다. 교훈은 사람당 첫 번째 현재 직책을 읽어야 하며, 시장 관점(market view)은 제가 아무것도 가져오기 전에 이를 알려주었습니다.
- **기록된 개인 이메일 주소 (Personal email on record):** 최대 59%.
이 시점에서 저는 리스트가 깨끗하다는 것을 알았습니다 (직책이 제가 원하는 직책과 정확히 일치했습니다). 또한 그 형태도 파악했습니다 (절반은 51–200명 규모의 회사로, 이는 중견 시장 영업팀에 판매되는 제품에 적합합니다). 그리고 전체 크기까지 알게 되었습니다: 21,834개 행, 하나의 데이터 세트.
## 리스트 추출하기: 회사별 제한을 둔 3,000개 행 (Pulling the list: 3,000 rows with a per-company cap)
이 기사를 위해 저는 추가 필드인 `maxPerCompany: 2`를 사용하여 3,000개 행을 추출했습니다. 이는 각 고용주로부터 가져오는 인원수를 제한하여 개인 목록(people list)을 계정 목록(account list)으로 변환하는 역할을 합니다.
{
"mode": "people",
"profileDetail": "row",
...
실행 로그(Run log): 9분 51초 소요, 3,000개 행 전송됨. 이 중 39개는 Actor가 이미 실행된 사람의 반복 스냅샷으로 인식하여 표시한 역사적 스냅샷이며 (데이터베이스는 한 사람에 대한 더 오래된 스냅샷을 별도의 ID로 보관함), 해당 내용이 기록되었습니다. 추가 메모 행에는 회사당 2명 제한을 초과한 121명이 건너뛰어졌다고 명시되어 있습니다.
정렬(ordering)에 대해 알아야 할 점은 다음과 같습니다: 행들은 국가 코드별로 그룹화되어 도착하므로, 제한된 실행은 독일을 채우고, 그다음 영국으로 넘어가며, 미국에서 시작합니다. 제가 받은 3,000개 행 중에는 독일 890개, 영국 1,837개, 미국 273개가 포함되었습니다. 만약 특정 국가만 원한다면 countries에 명시하고; 전체 세 개국 목록을 원한다면 전체 목록을 가져오세요. 대신 대표적인 샘플이 필요하다면, sampleSeed가 전체 세그먼트에서 무작위 페이지를 반환합니다.
행들이 보여준 내용:
| 고유한 고용주(Distinct employers) | 2,561 |
| ... | |
| 각 행은 회사 카드(employer card): 도메인, 직원 수(headcount), 산업, 본사(HQ), 설립 연도, 마지막 투자 라운드를 포함합니다. 이것만으로 다른 도구 없이 계정 점수화가 가능합니다. |
새로고침(refresh)은 이미 가지고 있는 사람을 제공하지 않기 때문에, 주간 실행 시에는 새로운 리더만 반환되며, 이것이 원래 원했던 부분입니다. n8n에서는 스케줄 노드(Schedule node), 이전 데이터셋 ID를 사용한 Apify 노드의 "Actor 실행 및 데이터셋 가져오기(Run an Actor and get dataset)" 작업, ICP에 대한 필터 노드(Filter node), 그리고 CRM 또는 Slack 노드를 연결합니다. 이 알림 제품은 네 개의 노드로 재구축되었습니다. 이번 시리즈의 신규 입사자 가이드는 Slack에 연결된 동일한 워크플로우를 가지고 있으며, 가져올 JSON도 제공합니다.
그들에게 도달하기: 후보자 명단에 있는 이메일
이 행은 이메일의 존재 여부만 알려줄 뿐 주소 자체는 포함하지 않습니다. 시퀀스(sequence)를 보낼 가치가 있는 사람들의 경우, 프로필 URL을 **LinkedIn Email Finder**에 전달하세요. 저는 소프트웨어, IT 및 보안 회사에서 근무하는 100명의 VP와 C레벨 임원을 대상으로 했고, 이들 행은 업무용 이메일 플래그(work-email flag)를 가지고 있었습니다.
결과: 100명 중 100명이 주소를 반환했습니다. 그중 29명은 현재 직장의 주소였으며, 이는 새로운 리더 시퀀스에 필요한 주소입니다. 나머지 71명은 이전 직장의 주소로, Actor가 work_other로 표시합니다. 이 주소들은 다른 목적(사람이 이동했으므로, 오래된 주소는 반송되는 것을 방지하는 데 유용함)으로 사용될 수 있습니다. 시퀀스를 로드하기 전에 emailType 필드를 읽어보세요.
현재 직장 주소가 없는 사람들의 경우, 검색의 연락처 계층(contacts tier)에서 `mustHave: [
| Function | titleKeywords | Started since 2025-10 | Started since 2026-01 |
|---|---|---|---|
| Sales and revenue | sales, revenue | 21,834 | 11,861 |
| ... | |||
| 이 중 가장 큰 비중을 차지하는 엔지니어링 목록은 여전히 단일 실행입니다. 개발자 도구(developer tools), 관측 가능성(observability), 보안 또는 클라우드 비용 제품을 판매한다면, 이것이 올해의 시장이며, 각 행에 시작 월이 포함된 CSV 파일 형태로 얻을 수 있습니다. |
직무를 변경하는 경우
엔지니어링 행을 다시 읽어보세요. 84,299명의 엔지니어링 리더가 올해 세 국가에서 새로운 역할을 시작했으며, 새로운 리더들이 채용하고 있습니다. localityKeywords로 거주 지역을 지정하여 도시별 인구 조사(people query)의 엔지니어링 버전을 실행하고, employeeCountMin: 50을 추가하면, 광고가 올라오기 전에 원하는 직무를 게시할 팀 목록을 얻게 됩니다. 채용 페이지에 글을 쓰는 것이 아니라 리더에게 직접 접근하세요. 자신의 목표 직무에 동일한 mode: "market"을 실행하면, 어떤 산업과 회사 규모에서 해당 직무로 가장 많이 채용하는지 알려주며, 이는 구인구직 사이트의 필터보다 더 나은 가이드가 됩니다.
직무 변경 신호를 사용하는 추가적인 방법들
동일한 필드들을 매출 팀(revenue team)으로서 제가 던질 다른 질문들에 초점을 맞추어 사용하겠습니다:
- 조직 개편 감지(Reorg detection).
companyDomain별로 행을 그룹화합니다. 한 분기 동안 세 명 이상의 새로운 리더가 있는 계정은 조직 개편 중이며, 이는 모든 것을 구매할 수 있는 기회입니다. - 갱신 위험 경고(Renewal-risk alerts).
companyDomains에서 고객사 도메인으로 쿼리를 실행합니다. 고객사의 CRO 또는 CMO가 새로 온 경우, 해당 계약은 재평가될 것이므로 그들이 행동하기 전에 먼저 연락해야 합니다. - 폐쇄된 손실 계정 재개(Closed-lost reopen). 지난 해의 폐쇄된 손실 계정을
companyDomains로 사용합니다. 여기에 새로운 리더가 있다는 것은 대화를 다시 시작할 수 있는 유일한 정당한 이유입니다. - 검토 예정 임원(Incumbents due for review). 날짜 이후(
after-date) 대신currentRoleStartedBeforeYear: 2022를 사용합니다. 해당 역할에 3년 이상 근무한 리더들로, 첫해의 계약이 갱신될 시점입니다. - 출신지 파악(Where they came from). 고정된 계정 목록을 대상으로 New Hires Finder는 각 채용 인원과 이전 직장을 반환하므로,
"b2bsearch/people-database-search"를 사용합니다. 대상은 미국, 영국, 독일에서 50개사에서 5,000개사 규모의 회사에 재직하며 2025년 10월 이후 현재 직무를 맡게 된 영업 또는 매출 리더(director, VP 및 C-level)입니다. 먼저 모드 카운트(mode count)를 실행한 다음, 마켓 모드(mode market)를 실행하고 다음과 같은 항목에 대한 시장 행(market rows)을 요약해 주세요: 국가, 규모, 산업, 직급, 주요 직책, 주요 고용주, 이메일 커버리지. 회사라기보다는 커뮤니티처럼 보이는 주요 고용주는 플래그 처리해 주세요. 제가 확인할 때까지는 사람 모드(mode people)를 실행하지 마세요. 제가 요청하면, 프로필 상세 정보 행(profileDetail row), 최대 2개 회사당(maxPerCompany 2), 그리고 제가 지정하는 최대 결과 수(maxResults)를 사용하세요. 전달된 행과 모든 노트 행을 보고해 주세요."
에이전트는 두 가지 집계 실행(aggregate runs)을 수행했고, 스스로 Pavilion과 sororities를 비고용주로 지적한 후 다음 지시를 기다렸습니다. 이것이 바로 카운트 모드(count mode)가 존재하는 이유입니다.
AI 에이전트를 위한 참고 사항
액터 b2bsearch/people-database-search. 직무 변경 신호는 currentRoleStartedAfterDate (YYYY-MM) 또는 currentRoleStartedAfterYear를 사용합니다. 시작 날짜가 늦게 도착하므로 12개월 간격을 사용하는 것이 좋습니다. 여기에 seniority (버킷: cxo, vp, director, manager, founder, other), titleKeywords (기본값은 부분 문자열 일치; 전체 단어는 `titleMatch:
시리즈의 다음 내용: 경계가 다른(cross-border) 금융 기술(fintech) 청중으로, 커리어 이력에 인도 고용주를 둔 미국 내 372,000명 인원을 도시 및 직무별로 세분화하고 집계 모드를 적용했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기