ElasticFlow
허브전체 스킬부서별역할별도구별지표별MCP퍼블리셔
메인 사이트로그인회원가입
ElasticFlow

AI 기반 워크플로 자동화로 비즈니스를 혁신하세요. 모든 엔터프라이즈 요구를 위한 통합 플랫폼.

팔로우

플랫폼

  • 기능
  • 장점
  • 사용 사례
  • 워크플로 라이브러리

사용 사례

  • 영업
  • 마케팅
  • 재무·법무
  • 인사

카탈로그

  • 부서
  • 역할
  • 도구
  • 지표
  • 플랫폼

성장

  • 추천 프로그램
  • 파트너

법무

  • 개인정보 처리방침
  • 서비스 약관
  • 쿠키 정책
  • 허용 사용
  • 보안
  • SLA

© 2026 ElasticFlow. 모든 권리 보유.

ElasticFlow
허브전체 스킬부서별역할별도구별지표별MCP퍼블리셔
메인 사이트로그인회원가입
ElasticFlow

AI 기반 워크플로 자동화로 비즈니스를 혁신하세요. 모든 엔터프라이즈 요구를 위한 통합 플랫폼.

팔로우

플랫폼

  • 기능
  • 장점
  • 사용 사례
  • 워크플로 라이브러리

사용 사례

  • 영업
  • 마케팅
  • 재무·법무
  • 인사

카탈로그

  • 부서
  • 역할
  • 도구
  • 지표
  • 플랫폼

성장

  • 추천 프로그램
  • 파트너

법무

  • 개인정보 처리방침
  • 서비스 약관
  • 쿠키 정책
  • 허용 사용
  • 보안
  • SLA

© 2026 ElasticFlow. 모든 권리 보유.

ElasticFlow
허브전체 스킬부서별역할별도구별지표별MCP퍼블리셔
메인 사이트로그인회원가입
  1. 허브
  2. 스킬
  3. 기업 리서치
지원 언어:🇬🇧 English🇫🇷 Français🇰🇷 한국어🇵🇹 Português🇹🇷 Türkçe
AI 스킬기업 리서치영업

몇 분 안에 점수화된 잠재고객 리스트를 만듭니다. 50개 계정을 넣으면 리서치와 CSV가 돌아옵니다. — Claude Skill

Claude Code용 Claude 스킬 · 제공: Browserbase · 실행: /company-research (Claude 내)·업데이트: 2026년 6월 14일·v1.1.0

호환GChatGPTClaudeClaudeCCClaude CodeCDClaude DesktopXCodex / Codex CLICursorCursorGeminiGeminiHHermes (via Continue / Cline)OpenClawOpenClawWindsurfWindsurf

리서치와 ICP 적합도 점수가 포함된 잠재고객 리스트를 Apollo용 CSV로 준비합니다.

  • 점수화된 CSV - 계정별 ICP 적합도 1-10점과 근거가 포함되어 정렬 및 import 준비 완료
  • 계획 → 리서치 → 종합 루프 - 숙련된 영업 개발 담당자가 하던 패턴을 대규모로 실행
  • 세 가지 깊이 모드 - Quick(약 100개 계정), Deep(약 50개), Deeper(전체 인텔리전스가 있는 약 25개)
  • 환각 방지 guardrail - 회사 폰트만 보고 제품 설명을 지어내지 않습니다(계정 리서치 도구의 실제 실패 모드)
  • Desktop에 결과 저장 - 점수화된 CSV와 HTML overview를 만들고 완료 시 브라우저에서 엽니다.
사용자오늘

LinkedIn, Crunchbase, Google을 엽니다. 각 계정마다 투자 유치일, 직원 수, 기술 스택, 최근 게시물을 확인합니다. Notion 문서에 발견 사항을 입력합니다. 50개 계정에 반복합니다. 이메일 한 통 보내기 전 배치당 90분 이상이 걸립니다. 20번째 계정쯤부터 피로 때문에 품질이 떨어집니다.

“월요일의 절반을 타깃 리스트 만드는 데 썼습니다. 발송을 시작할 때는 이미 오전의 절반이 사라져 있었죠.”

— Series A SaaS의 영업 개발 담당자
/company-research 사용 시

ICP가 담긴 프롬프트 하나면 됩니다. 스킬이 사용자가 하던 리서치 루프를 50개 계정에 병렬로 실행합니다. 약 6분 뒤 Desktop에 점수화된 CSV와 HTML overview가 생깁니다. 월요일의 나머지는 리서치가 아니라 아웃바운드에 씁니다.

1 ICP를 한 번 정의합니다(스킬이 자사와 타깃 입력에서 학습하고 재사용을 위해 profil2 요청을 넣습니다: '미국 중견 fintech Series B 50개'(또는 원하는 세그먼트3 Desktop에서 점수화된 CSV와 HTML overview를 받습니다.4 브라우저에서 상위 10개 계정을 열고 계정별 근거 섹션을 바탕으로 아웃리치를 작성합니다.5 다음 세그먼트에도 내일 같은 업무 흐름을 재사용합니다. 프로필은 저장되어 있습니다.

대상

영업 개발 담당자 / 사업 개발 담당자

ICP에 맞는 SaaS 계정 50개를 프롬프트 하나에 넣습니다. 투자 유치, 채용, 사용 도구 신호가 담긴 점수화된 CSV를 받습니다. 월요일 90분짜리 리스트 구축이 6분으로 줄어듭니다.

이 역할의 스킬 보기
어카운트 이그제큐티브

탭을 잔뜩 열지 않고 미팅 전 리서치합니다. Discovery 전에 한 계정에 Deeper mode를 실행해 투자 유치, 채용, 고객 성과를 모두 출처와 함께 확인합니다.

이 역할의 스킬 보기
매출 운영 리더

Territory planning용 대량 ICP 리서치. 새로 정의한 ICP 기준으로 100개 계정에 점수를 매긴 뒤 영업 담당자에게 배정합니다.

이 역할의 스킬 보기
영업 담당자

오래된 territory 계정 중 실제 변화가 있는 곳에만 재접촉합니다. 신규 투자 유치, 신규 채용, 신규 제품이 있는 계정만 다루고 나머지는 건너뜁니다.

이 역할의 스킬 보기

기능

일일 잠재고객 발굴 배치 - 점심 전 새 계정 50개

ICP 정의를 한 번 넣습니다. 매일 아침 그 정의에 맞는 새 계정 50개를 요청합니다. standup 전에 점수화된 CSV를 받고 하루 동안 리스트를 위에서부터 처리합니다.

새 세그먼트 확장

영업 리드가 '미국 fintech Series B를 시도해보자'고 말합니다. Deeper mode를 실행해 채용 신호, 이미 쓰는 도구, 최근 투자 유치가 포함된 완전 리서치 계정 25개를 얻습니다. 그날 오후 첫 이메일 10개를 작성하기에 충분합니다.

미팅 전 계정 리서치

큰 잠재고객이 발견 통화을 예약했습니다. 직접 탭 15개를 열지 않고, 단일 계정 Deeper 리서치로 최근 뉴스, 고객 성과, 채용 급증 같은 공개 신호를 통화 전에 확보합니다.

분기별 territory refresh

영업 담당자가 '지난 분기 이후 내 territory에서 무엇이 바뀌었나?'라고 묻습니다. 기존 계정에 Quick mode 100개 계정 패스를 실행해 재접촉 근거가 되는 신규 투자 유치, 신규 채용, 제품 출시가 있는 계정만 표시합니다.

작동 방식

1

자사와 타깃 세그먼트를 알려줍니다(예: '미국, Series A 이상, 중견 이커머스').

2

먼저 자사의 ICP를 리서치합니다. 무엇을 팔고, 누구에게 팔며, 경쟁사는 어떤지 파악한 뒤 더 넓게 진행하기 전에 확인을 받습니다.

3

세그먼트에 맞춘 검색 쿼리로 타깃 계정을 발견합니다(업종 + 단계, 이미 쓰는 도구, 경쟁사 인접성).

4

예산에 맞는 깊이로 각 계정을 리서치합니다. 홈페이지, 투자 유치, 채용, 고객을 확인하고 근거와 함께 ICP 적합도 1-10점을 매깁니다.

5

Desktop에 점수화된 CSV와 HTML overview를 출력합니다. 브라우저에서 열리며 Apollo나 CRM에 바로 넣을 수 있습니다.

입력 옵션

Quick mode(약 100개 계정)

계정별 홈페이지 + 보조 검색 1-2개. 깊이보다 규모가 필요할 때 넓은 scan에 적합합니다.

예시

요청
AI 재고 자동화를 쓸 가능성이 있어 보이는 미국 기반 Series A 이상 중견 이커머스 SaaS 회사 50개를 찾아주세요. ICP 적합도로 점수화하고 CSV를 주세요.
받는 결과
채팅의 상위 5개(점수순)
Acme Inc - 점수 9/10 - Series A 이커머스 SaaS, 스크레이핑에 Selenium 사용, EU로 확장 중
Bolt Commerce - 점수 9/10 - 최근 $14M Series A 투자 유치, 데이터 엔지니어 3명 채용 중
Flux Inventory - 점수 8/10 - DTC 중심, 고객용 가격 페이지에서 다중 창고 조정 문제 언급
GridShop - 점수 8/10 - 공개 로드맵에서 재고 자동화를 Q2 우선순위로 언급
Helio Brands - 점수 7/10 - 인접 vertical(subscription DTC), 일부 신호 겹침
Desktop의 파일
~/Desktop/yourco_research_2026-05-21/
  ├ index.html              ← 자동으로 열림: 점수화된 개요 표
  ├ results.csv             ← Apollo / ZoomInfo / Sheets에 넣기
  ├ companies/acme-inc.html ← 계정별 상세 페이지
  └ companies/...
회사별 .md에는 제품 요약, ICP 적합도 근거, 신뢰도 수준과 출처 URL이 포함된 증거가 들어 있습니다.
점수를 만든 방법론
계획: 계정별 하위 질문 4개(제품, 이미 쓰는 도구, 성장 신호, 문제 적합도)
조사: Deep mode에서 계정별 웹 검색 + 페이지 가져오기 5-8회
종합: 인용된 근거가 있는 ICP 점수 - 홈페이지를 읽을 수 없으면 3점 초과 점수를 거부(얇은 신호에서 환각하지 않음)

개선되는 지표

전환율
영업 담당자가 round-robin 대신 사전 점수화된 리스트(상위 8-10점 계정부터)를 처리해 첫 접촉에서 미팅 전환까지의 전환율을 높입니다.
영업
ICP 명확도
계정별 ICP 적합도 1-10점과 인용된 근거를 제공해 감에 의존한 정렬을 대체하고 실제 정의에 맞는 계정을 드러냅니다.
영업
미팅 예약률
투자 유치, 채용, 고객 성과처럼 구체적으로 리서치된 신호에 아웃리치를 맞추기 때문에 계정당 예약률이 높아집니다. 'Acme에 계신 걸 봤습니다' 같은 일반 문구가 아닙니다.
영업

지원 도구

Browserbase
CLI

웹 브라우징 + 검색 인프라 - `browse` CLI가 모든 계정 리서치를 Browserbase Search API와 headless browser session으로 실행하고, HTML이 얇은 Framer/Next.js SPA에는 서버 측 fetch fallback을 사용합니다.

유사 스킬

속성 중복에 따라 자동 추천됩니다. 나란히 비교하면 차이가 드러납니다.

전체 4개 비교 →

부적격 리드 대응

제공: Gooseworks
↳MEDDIC, BANTvsBANT(영업 방법론)·투자 유치, 채용 급증 +1vs의도 데이터(트리거 신호)·텍스트, API 자격 증명vs텍스트(제공해야 하는 것)

투자 유치 신호 기반 영업 접촉

제공: Gooseworks
↳MEDDIC, BANTvsBANT(영업 방법론)·투자 유치, 채용 급증 +1vs투자 유치(트리거 신호)·인계 없음vs미팅 예약됨(인계 단계)

임원 인사 변화 기반 영업 연락

제공: Gooseworks
↳투자 유치, 채용 급증 +1vs리더십 변경(트리거 신호)·인계 없음vs미팅 예약됨(인계 단계)·CSV, MarkdownvsMarkdown, CSV(출력 형식)
속성 중복 × 차별화로 정렬. 기업 리서치은(는) 각 항목과 20개 이상의 속성을 공유합니다.

기업 리서치을(를) 사용해 보시겠어요?

시작 방법을 선택하세요.

Claude Code에서 실행
무료. 오픈 소스.

이 스킬을 컴퓨터에 로컬로 설치하고 실행합니다.

1
Claude Code 설치

컴퓨터에서 터미널을 열고 이 명령을 붙여넣으세요:

2
스킬 설치

이 명령은 스킬과 모든 파일을 컴퓨터에 다운로드합니다:

모든 프로젝트에서 사용하려면 끝에 -g를 추가하세요.

3
실행하기

Claude Code를 시작한 다음 명령을 입력하세요:

그다음
GitHub에서 소스 보기
ElasticFlow에서 사용
팀 및 협업 기능

브라우저에서 스킬을 실행. 결과 공유, 액세스 관리, 팀과 협업. 터미널 불필요.

14일 무료 평가판. 언제든 취소 가능.

GitHub에서 보기

기업 리서치

판매할 회사를 발견하고 깊게 리서치합니다. 발견에는 Browserbase Search API를 사용하고, 깊은 enrichment에는 Plan→Research→Synthesize 패턴을 사용해 점수화된 리서치 보고서와 CSV를 출력합니다.

필수: BROWSERBASE_API_KEY env var와 설치된 browse CLI.

첫 실행 setup: 첫 실행 시 browse cloud fetch, browse cloud search, cat, mkdir, sed 등의 승인을 요청받습니다. 세션 동안 자동 승인하려면 각 항목에서 "Yes, and don't ask again for: browse cloud fetch:*"(또는 동등 옵션)를 선택합니다. 영구 승인하려면 ~/.claude/settings.json의 permissions.allow 아래에 다음을 추가합니다.

"Bash(browse:*)", "Bash(bunx:*)", "Bash(bun:*)", "Bash(node:*)",
"Bash(cat:*)", "Bash(mkdir:*)", "Bash(sed:*)", "Bash(head:*)", "Bash(tr:*)", "Bash(rm:*)"

경로 규칙: 모든 Bash 명령에서 전체 literal path를 항상 사용합니다. ~ 또는 $HOME은 사용하지 마세요(둘 다 "shell expansion syntax" 승인 prompt를 유발합니다). 홈 디렉터리를 한 번 resolve하고 모든 곳에서 사용합니다. subagent prompt를 만들 때 {SKILL_DIR}를 전체 literal path로 바꿉니다.

출력 디렉터리: 모든 리서치 출력은 ~/Desktop/{company_slug}_research_{YYYY-MM-DD}/로 갑니다. 이 디렉터리에는 리서치한 회사별 .md 파일 하나와 최종 .csv가 들어 있습니다. 사용자는 Desktop에서 점수화된 spreadsheet와 전체 리서치 파일을 모두 받습니다.

중요 — 도구 제한(main agent와 모든 subagent에 적용):

  • 모든 web search: browse cloud search를 사용합니다. WebSearch는 절대 사용하지 않습니다.
  • 모든 page content extraction: node {SKILL_DIR}/scripts/extract_page.mjs "<url>"를 사용합니다. 이 script는 browse cloud fetch --output으로 fetch하고 title + meta tags + visible body text를 parse하며, fetch가 실패하거나 얇은 JS-rendered content를 반환하면 browse get markdown으로 자동 fallback합니다. browse cloud fetch | sed pipeline을 직접 만들지 마세요. meta tag를 제거하고 stdout JSON envelope를 parse하지 못합니다. WebFetch는 절대 사용하지 않습니다.
  • 모든 리서치 출력: subagent는 {OUTPUT_DIR}/{company-slug}.md에 회사별 markdown 파일 하나를 bash heredoc으로 씁니다. Write tool 또는 python3 -c는 절대 사용하지 않습니다. 파일 형식은 references/example-research.md를 참고하세요.
  • Report + CSV compilation: node {SKILL_DIR}/scripts/compile_report.mjs {OUTPUT_DIR} --open을 사용합니다. HTML report와 CSV를 한 번에 생성하고 overview를 브라우저에서 엽니다.
  • URL deduplication: discovery 이후 node {SKILL_DIR}/scripts/list_urls.mjs /tmp를 사용합니다.
  • Subagent는 Bash tool만 사용해야 합니다. 다른 도구는 허용되지 않습니다.
  • Main agent는 raw discovery JSON batch file을 절대 읽지 않습니다. dedup에는 list_urls.mjs를 사용합니다.

중요 — 환각 방지 규칙(main agent와 모든 subagent에 적용):

  • 사이트의 font, framework(Framer/Next.js/React), design system, typography만 보고 product_description, industry, target_audience를 절대 추론하지 않습니다. 이것들은 외형 요소이며 회사가 무엇을 파는지 말해주지 않습니다.
  • 사용자의 ICP가 target description에 새어 들어가게 하지 않습니다. 타깃이 무엇을 하는지 모르면 Unknown이라고 쓰세요. ICP에 맞춰 pattern-match하지 않습니다.
  • product_description은 extract_page.mjs output의 특정 문구(TITLE, META_DESCRIPTION, OG_DESCRIPTION, HEADINGS, BODY)를 quote하거나 paraphrase해야 합니다. 어떤 필드에서도 알아볼 수 있는 제품 설명이 나오지 않으면 Unknown — homepage content not accessible라고 씁니다.
  • product_description이 Unknown이면 icp_fit_score를 최대 3으로 제한하고 icp_fit_reasoning을 Insufficient evidence — homepage returned no readable content로 설정합니다.

중요 — permission prompt 최소화:

  • Subagent는 모든 파일 쓰기를 chained heredoc을 사용한 단일 Bash call로 batch 처리해야 합니다. Bash call 하나 = permission prompt 하나입니다.
  • 모든 search와 fetch는 && chaining을 사용한 단일 Bash call로 batch 처리합니다.

파이프라인 개요

다음 5단계를 순서대로 따릅니다. 단계를 건너뛰거나 순서를 바꾸지 마세요.

  1. 기업 리서치 — 사용자의 회사, 제품, 판매 대상 고객을 깊이 이해합니다.
  2. 깊이 모드 선택 — 원하는 target 수에 따라 리서치 깊이를 선택합니다.
  3. 발견 — 다양한 검색 쿼리로 target company를 찾습니다.
  4. 심층 리서치 및 점수화 — 각 회사를 리서치하고 ICP 적합도를 점수화합니다.
  5. 보고서 및 CSV — findings를 제시하고 점수화된 CSV를 컴파일합니다.

Step 0: 출력 디렉터리 설정

시작하기 전에 사용자의 Desktop에 출력 디렉터리를 만듭니다.

OUTPUT_DIR=~/Desktop/{company_slug}_research_{YYYY-MM-DD}
mkdir -p "$OUTPUT_DIR"

{company_slug}는 사용자의 회사 이름(소문자, hyphenated)으로, {YYYY-MM-DD}는 오늘 날짜로 바꿉니다. 모든 subagent prompt에는 {OUTPUT_DIR}를 ~가 아닌 전체 literal path로 전달해 리서치 파일이 그곳에 쓰이게 합니다.

이전 실행의 discovery batch file도 정리합니다.

rm -f /tmp/company_discovery_batch_*.json

Step 1: 심층 기업 리서치

이 단계가 가장 중요합니다. downstream의 모든 품질은 사용자의 회사를 얼마나 깊게 이해했는지에 달려 있습니다.

  1. 사용자에게 회사 이름 또는 URL을 묻습니다.

  2. 기존 profile 확인:

    • {SKILL_DIR}/profiles/의 파일을 나열합니다(example.json은 무시).
    • 일치하는 profile이 있으면 load하고 사용자에게 보여줍니다: "I have your profile from {researched_at}. Still accurate?" 맞다면 Step 2로 건너뜁니다.
    • profile이 없으면 아래의 deep research를 진행합니다.
  3. 사용자의 회사에 대해 전체 deep research를 실행합니다. Plan→Research→Synthesize 패턴을 사용합니다. sub-question template과 리서치 방법론은 references/research-patterns.md를 참고하세요.

    주요 리서치 단계:

    • Search: browse cloud search "{company name}" --num-results 10
    • Homepage fetch: node {SKILL_DIR}/scripts/extract_page.mjs "{company website}"
    • sitemap으로 site page 발견(/about 또는 /customers 같은 path를 hardcode하지 마세요):
      1. browse cloud fetch --allow-redirects "{company website}/sitemap.xml" — sitemap은 작으므로 raw browse cloud fetch 사용 가능
      2. 키워드가 있는 URL을 scan합니다: customer, case-stud, pricing, about, use-case, industry, solution
      3. 선택적으로 page description용 /llms.txt도 fetch합니다.
      4. 가장 관련 있는 URL 3-5개를 고르고 extract_page.mjs로 extract합니다(raw browse cloud fetch가 아님).
    • 외부 context와 competitor를 검색합니다.
    • confidence level과 함께 findings를 축적합니다.

    Profile로 종합: Company, Product, Existing Customers, Competitors, Use Cases. ICP나 sub-vertical은 포함하지 않습니다. 이것들은 per-run decision입니다.

  4. profile을 사용자에게 보여주고 확인을 받습니다. 확인 전에는 진행하지 않습니다.

  5. 확인된 profile을 {SKILL_DIR}/profiles/{company-slug}.json에 저장합니다.

  6. AskUserQuestion checkbox로 clarifying question을 묻습니다.

    • "Which segments are you targeting?" — company research에서 나온 option 사용
    • "Company stage?" — Startups, Mid-market, Enterprise, All
    • "How many companies / depth?" — Quick(약 100), Deep(약 50), Deeper(약 25)
    • 이것이 유일한 사용자 interaction입니다. 그 뒤에는 결과가 준비될 때까지 조용히 실행합니다.

Step 2: Depth Mode Selection

Mode회사별 리서치적합한 경우
quickHomepage + search 1-2개약 100개 회사, broad scan
deep하위 질문 2-3개, tool call 5-8회약 50개 회사, 탄탄한 리서치
deeper하위 질문 4-5개, tool call 10-15회약 25개 회사, full intelligence

Step 3: Discovery

공식: 필요한 search query 수 = ceil(requested_companies / 35). 필터링에서 보통 50-70%가 떨어지므로 약 2-3배 over-discover합니다.

다음 패턴으로 search query를 생성합니다.

  • 업종 + 회사 단계 + 지역("fintech startups series A Bay Area")
  • 기술 스택 + use case("companies using Selenium for web scraping")
  • 경쟁사 인접성("alternatives to {known company in ICP}")
  • Buyer persona + pain point("engineering teams struggling with browser automation")

프로세스:

  1. 모든 discovery subagent를 한 번에 launch합니다(메시지당 최대 약 6개). 각 subagent는 단일 Bash call로 query를 실행합니다.
    browse cloud search "{query}" --num-results 25 --output /tmp/company_discovery_batch_{N}.json
    
  2. 모든 wave 완료 후 deduplicate합니다: node {SKILL_DIR}/scripts/list_urls.mjs /tmp
  3. URL list 필터링 — 제거:
    • Blog post, news article(globenewswire.com, techcrunch.com 등)
    • Directory/aggregator(tracxn.com, crunchbase.com, g2.com)
    • 사용자의 직접 competitor와 기존 customer(profile 기준) 회사 homepage만 유지합니다.

Subagent prompt template과 wave management는 references/workflow.md를 참고하세요.

Step 4: Deep Research & Scoring

회사 리서치용 subagent를 병렬로 launch합니다. Enrichment subagent prompt template은 references/workflow.md를 참고하세요. 전체 리서치 방법론은 references/research-patterns.md를 참고하세요.

프로세스:

  1. 필터링된 URL을 subagent별 group으로 나눕니다(quick: 약 10개, deep: 약 5개, deeper: 약 2-3개).

  2. 모든 enrichment subagent를 한 번에 launch합니다(메시지당 최대 약 6개).

  3. 각 subagent는 Bash만 사용합니다. 각 회사에 대해:

    Phase A — Plan(quick mode에서는 skip): ICP와 enrichment field를 기준으로 알아야 할 것을 하위 질문 2-5개로 분해합니다.

    Phase B — Research Loop: Search와 page fetch를 수행하고 findings를 추출합니다. Step budget을 지킵니다(quick: 2-3, deep: 5-8, deeper: 10-15).

    Phase C — Synthesize: 근거와 함께 ICP 적합도 1-10점을 매깁니다. Findings로 enrichment field를 채웁니다.

  4. Subagent는 chained heredoc을 사용한 단일 Bash call로 모든 markdown file을 {OUTPUT_DIR}/에 씁니다.

  5. 모든 subagent 완료 후 Step 5로 진행합니다.

중요: 확인된 ICP description을 모든 subagent prompt에 그대로 포함합니다. 전체 literal {OUTPUT_DIR} path를 모든 subagent에 전달합니다.

Step 5: Report & CSV

  1. HTML report + CSV 생성(overview가 브라우저에서 자동으로 열림):

    node {SKILL_DIR}/scripts/compile_report.mjs {OUTPUT_DIR} --open
    

    생성되는 파일:

    • {OUTPUT_DIR}/index.html — 점수화된 table이 있는 overview page(브라우저에서 열림)
    • {OUTPUT_DIR}/companies/*.html — 개별 회사 page(overview에서 link)
    • {OUTPUT_DIR}/results.csv — sheets/CRM import용 점수화 spreadsheet
  2. 채팅에서도 요약을 제시합니다.

## 기업 리서치 완료

- **Total companies researched**: {count}
- **Depth mode**: {mode}
- **Score distribution**:
  - Strong fit (8-10): {count}
  - Partial fit (5-7): {count}
  - Weak fit (1-4): {count}
- **Report opened in browser**: ~/Desktop/{company_slug}_research_{date}/index.html
  1. ICP score 순으로 정렬한 상위 회사를 table로 보여줍니다.
| Company | Score | Product | Industry | Fit Reasoning |
|---------|-------|---------|----------|---------------|
| Acme | 9 | AI inventory management | E-commerce SaaS | Series A, uses Selenium, expanding to EU |
  1. 상위 3-5개 회사에 대해 간단한 리서치 요약을 보여줍니다. 핵심 findings, 왜 좋은 fit인지, 어떤 구체적 angle로 접근할지 포함합니다.

특정 회사를 더 깊게 파거나, scoring criteria를 조정하거나, 다른 query로 discovery를 다시 실행할 수 있다고 제안합니다.

참조 문서

기업 리서치 파일 예시

각 research subagent는 {OUTPUT_DIR}/{company-slug}.md에 회사별 markdown 파일 하나를 씁니다. 여기서 {OUTPUT_DIR}는 main agent가 Step 0에서 만든 per-run Desktop directory입니다(예: ~/Desktop/acme_research_2026-04-23/). YAML frontmatter에는 report + CSV compilation용 structured field가 들어 있습니다. Body에는 사람이 읽을 수 있는 리서치가 들어 있습니다.

템플릿

---
company_name: Acme Inc
website: https://acme.com
product_description: AI-powered inventory management for e-commerce brands
industry: E-commerce / SaaS
target_audience: Mid-market e-commerce brands
key_features: demand forecasting | automated reordering | multi-warehouse sync
icp_fit_score: 8
icp_fit_reasoning: Series A e-commerce SaaS, uses Selenium for scraping, expanding to EU — strong fit
employee_estimate: 50-100
funding_info: Series A, $12M
headquarters: San Francisco, CA
---

## Product
AI-powered inventory management for e-commerce brands. Helps DTC brands
automate reordering and sync across multiple warehouses.

## Research Findings
- **[high]** Checkout optimization for Shopify stores, serving mid-market DTC brands with $5M-$50M revenue (source: acme.com/about)
- **[high]** Series A, $12M raised in Q3 2025 from Sequoia (source: TechCrunch)
- **[medium]** Recently hired 3 data engineers, expanding platform team (source: LinkedIn job posts)
- **[medium]** Uses Selenium for web scraping in their data pipeline (source: careers page)

필드 규칙

  • YAML frontmatter: 모든 structured field는 여기에 둡니다. CSV compilation 때 추출됩니다.
  • key_features: YAML에서는 JSON array가 아니라 pipe-separated(|) list입니다.
  • icp_fit_score: 정수 1-10.
  • icp_fit_reasoning: 한 줄이며 specific finding을 참조합니다.
  • Body sections: ## Product, ## Research Findings.
  • Findings format: - **[confidence]** fact (source: url or description)
  • Filename: {OUTPUT_DIR}/{company-slug}.md, slug는 lowercase, hyphenated입니다(예: acme-inc.md).
  • Deduplication: 회사별 파일 하나. subagent가 이미 파일이 있는 회사를 만나면 더 풍부한 data로 overwrite합니다.

Bash Heredoc으로 쓰기

Subagent는 security prompt를 피하기 위해 bash heredoc으로 파일을 씁니다. 전체 literal {OUTPUT_DIR} path를 사용하세요. ~나 $HOME은 사용하지 않습니다.

cat << 'COMPANY_MD' > {OUTPUT_DIR}/acme-inc.md
---
company_name: Acme Inc
website: https://acme.com
...
---

## Product
...

## Research Findings
...
COMPANY_MD

Shell variable expansion을 막기 위해 delimiter는 'COMPANY_MD'(quoted)를 사용합니다.

중요: permission prompt를 최소화하려면 모든 company file을 chained heredoc을 사용한 단일 Bash call에서 씁니다.

기업 리서치 — Deep Research Patterns

개요

이 reference는 두 가지 리서치 context를 정의합니다.

  1. Self-Research(Step 1) — 강한 ICP 기반을 만들기 위한 사용자 회사 자체에 대한 deep research
  2. Target Research(Step 6) — 발견된 각 회사를 Plan→Research→Synthesize로 리서치

둘 다 같은 3-phase pattern을 사용하지만 sub-question과 목표가 다릅니다.

Self-Research(사용자 회사)

Pipeline에서 가장 중요한 리서치입니다. downstream의 모든 결정이 여기에 달려 있습니다.

Sub-Questions

  • "{company}는 무엇을 팔고 어떤 specific problem을 해결하는가?"
  • "{company}의 기존 customer는 누구인가? 어떤 industry, company size, use case인가?"
  • "{company}의 competitor는 누구이며 무엇이 차별점인가?"
  • "{company}는 어떤 pricing model을 사용하고 typical buyer persona는 누구인가?"
  • "{company}의 marketing은 어떤 use case와 pain point를 강조하는가?"

Page Discovery

Site page를 동적으로 발견합니다. /about 또는 /customers 같은 path를 hardcode하지 마세요.

  1. browse cloud fetch --allow-redirects "{company website}/sitemap.xml" fetch — primary source이며 모든 page가 있습니다.
  2. Sitemap URL에서 키워드를 scan합니다: customer, case-stud, pricing, about, use-case, blog, docs, industry, solution
  3. 선택적으로 page description용 browse cloud fetch --allow-redirects "{company website}/llms.txt"를 fetch합니다.
  4. Sitemap에서 가장 관련 있는 URL 3-5개를 고르고 fetch합니다.
  5. Sitemap이 source of truth입니다. llms.txt는 bonus context지만 종종 불완전합니다.

External Research

  • Search: "{company} customers use cases reviews"
  • Search: "{company} alternatives competitors vs"
  • 가장 정보가 많은 third-party result 1-2개를 fetch합니다(G2, blog post, comparison).

Synthesis Output

모든 findings에서 company profile을 만듭니다.

  • Company: 이름
  • Product: 무엇을 팔고, 어떻게 작동하며, 핵심 capability는 무엇인지(구체적인 2-3문장)
  • Existing Customers: 발견된 named customer 또는 customer type
  • Competitors: 경쟁 대상과 key differentiator
  • Use Cases: 제품이 제공하는 broad use case list(한 vertical에 묶지 않음)

Profile에는 ICP, pitch angle, sub-vertical을 포함하지 않습니다. 이것들은 profile 확인 후 Step 2에서 정하는 per-run targeting decision입니다. Profile은 다음에 어떤 vertical을 target하더라도 사용할 수 있는 범용 company fact sheet입니다.

왜 중요한가

얇은 profile은 generic search query, 약한 lead scoring, cookie-cutter email을 만듭니다. Specific customer, competitor, use case가 있는 rich profile은 targeted query, 정확한 scoring, 실제 pain point를 언급하는 email을 만듭니다.


타깃 기업 리서치(Step 6)

Sub-Question Templates

ICP와 요청된 enrichment field를 기준으로 아래 범주에서 sub-question을 생성합니다. 모든 범주가 모든 회사에 적용되는 것은 아닙니다. 가장 관련 있는 것을 고릅니다.

Priority 1(항상 질문)

  • Product/Market: "{company}는 무엇을 팔고 고객은 누구인가?"
  • ICP Fit: "{company}의 product/market은 {sender's ICP description}과 어떻게 관련되는가?"

Priority 2(deep/deeper에서 질문)

  • Tech Stack: "{company}는 어떤 technology, framework, infrastructure를 사용하는가?"
  • Growth Signals: "{company}가 최근 투자 유치, 제품 출시, 확장을 했는가?"
  • Pain Points: "{company}가 {sender's product}가 해결하는 어떤 challenge를 겪을 수 있는가?"

Priority 3(deeper에서만 질문)

  • Decision Makers: "{company}에서 engineering, product, growth를 누가 이끄는가?"
  • Competitive Landscape: "{company}의 competitor는 누구이고 어떻게 차별화되는가?"
  • Customers/Case Studies: "{company}의 notable customer는 누구이고 어떤 성과를 강조하는가?"

Search Query Patterns

각 sub-question마다 search query variation 2-3개를 생성합니다.

# Product/Market
"{company name} what they do"
"{company name} product features customers"

# Tech Stack
"{company name} tech stack engineering blog"
"{company name} careers software engineer" (job post는 stack을 드러냅니다)

# Growth Signals
"{company name} funding round 2025 2026"
"{company name} launch announcement"
"{company name} hiring"

# Pain Points
"{company name} challenges {relevant domain}"
"{company name} {problem sender solves}"

# Decision Makers
"{company name} VP engineering CTO LinkedIn"
"{company name} head of growth product"

Finding Format

각 finding은 source에 연결된 self-contained factual statement입니다.

{
  "subQuestion": "What does Acme sell and who are their customers?",
  "fact": "Acme provides checkout optimization for Shopify stores, serving mid-market DTC brands with $5M-$50M revenue",
  "sourceUrl": "https://acme.com/about",
  "sourceTitle": "About Acme - Checkout Optimization",
  "confidence": "high"
}

Confidence levels:

  • high: 회사의 own website 또는 official press에 직접 명시됨
  • medium: job posting, third-party article, indirect signal에서 추론됨
  • low: industry/category 기반 추측이거나 오래된 source

리서치 루프 규칙

  1. Priority 순서대로 sub-question 처리 — Priority 1 먼저, 그다음 2, 그다음 3
  2. Sub-question당 finding 3-5개를 모은 뒤 이동 — 한 topic을 과도하게 파지 않습니다.
  3. Parallel tool call 사용 — 가능하면 여러 query를 동시에 search합니다.
  4. Retry보다 rephrase — search result가 좋지 않으면 다른 keyword를 시도합니다.
  5. 선별적으로 fetch — search result의 모든 URL을 fetch하지 않습니다. title과 URL 기준으로 가장 관련 있는 1-2개를 고릅니다.
  6. Step limit에서 중지 — depth mode의 회사별 step budget을 지킵니다.
  7. Homepage first — 다른 page로 branching하기 전에 항상 company homepage를 fetch합니다.
  8. Finding deduplicate — 같은 fact를 다른 source에서 두 번 기록하지 않습니다.

깊이 모드 동작

Quick Mode(lead 100개 이상)

  • Phase A skip — sub-question decomposition 없음
  • Phase B: company homepage를 fetch합니다. homepage data가 얇으면 보조 search 1-2개를 실행합니다.
  • Phase C: 가능한 data를 extract하고 ICP를 점수화하며, 가능한 내용으로 email을 씁니다.
  • Budget: 회사당 총 tool call 2-3회
  • Trade-off: 빠르고 저렴하지만 이메일 개인화가 약할 수 있습니다.

Deep Mode(lead 25-50개)

  • Phase A: 하위 질문 2-3개로 분해합니다(Priority 1 + 선택된 Priority 2).
  • Phase B: 각 sub-question마다 search 2-3개 + URL fetch 1-2개. Sub-question당 finding 3-5개를 목표로 합니다.
  • Phase C: 모든 finding에서 종합합니다. ICP reasoning은 specific evidence를 참조합니다. Email은 가장 구체적이고 설득력 있는 finding을 사용합니다.
  • Budget: 회사당 총 tool call 5-8회
  • Trade-off: 깊이와 규모의 좋은 균형

Deeper Mode(lead 10-25개)

  • Phase A: 하위 질문 4-5개로 분해합니다(Priority 1 + 2 + 선택된 Priority 3).
  • Phase B: exhaustive research를 수행합니다. 회사별로 여러 page(homepage, about, blog, careers, product pages)를 fetch합니다. Sub-question당 finding 3-5개를 목표로 합니다.
  • Phase C: cited evidence로 종합합니다. ICP reasoning은 상세합니다. Email은 여러 specific signal을 참조합니다.
  • Budget: 회사당 총 tool call 10-15회
  • Trade-off: 고품질 intelligence이지만 느리고 비쌉니다.

종합 지침

회사에 대한 research loop가 끝나면 findings를 output record로 종합합니다.

ICP Scoring

축적한 모든 findings를 evidence로 사용해 1-10점으로 점수화합니다.

  • 8-10: Strong match. 여러 high-confidence finding이 올바른 industry, company stage, 명확한 pain point alignment를 확인합니다. Pitch angle이 evidence로 뒷받침되는 visible need를 직접 다룹니다.
  • 5-7: Partial match. 일부 finding은 relevance를 시사하지만 key signal이 없거나 low-confidence입니다. Adjacent industry 또는 불명확한 pain point.
  • 1-4: Weak match. Findings가 잘못된 segment, 너무 크거나 작은 규모, sender product와의 연결 없음 등을 나타냅니다.

icp_fit_reasoning은 specific finding을 참조해 작성합니다: "Series A fintech (from Crunchbase), uses Selenium for scraping (from job posting), expanding to EU market (from blog) — strong fit for browser infrastructure."

이메일 개인화

Email context에는 가장 풍부하고 구체적인 findings를 사용합니다.

  • Opening: 가장 구체적인 finding 사용(특정 product feature, 최근 launch, job posting)
  • Bridge: challenge/stack에 대한 finding을 sender의 pitch angle과 연결
  • low-confidence finding만 있으면 email을 더 짧고 일반적으로 유지합니다. 구체성을 지어내지 마세요.

Enrichment Fields

Findings를 enrichment field에 매핑합니다.

  • product_description → Product/Market findings에서
  • industry → Product/Market에서 추론
  • employee_estimate → LinkedIn search 또는 careers page findings에서
  • funding_info → Growth Signals findings에서
  • headquarters → company homepage 또는 about page에서
  • target_audience → Product/Market findings에서
  • key_features → product page findings에서

지원하는 finding이 없는 field는 추측하지 말고 비워둡니다.

Anti-Hallucination Rules

Synthesis 시점에 다음을 적용합니다. 특히 server-rendered copy가 거의 없는 Framer/Next.js landing page에서 subagent가 visual cue를 sender ICP에 pattern-match해 그럴듯한 설명을 지어내는 failure mode를 막기 위한 규칙입니다.

  1. Typography는 제품이 아닙니다. Font, design system, framework choice(Framer, Next.js, React), site polish만 보고 product_description, industry, target_audience를 추론하지 않습니다. "Framer-built"와 "uses Geist Mono"는 tooling에 대한 관찰이지 회사가 무엇을 파는지에 대한 signal이 아닙니다.
  2. ICP leakage 금지. Homepage가 얇고 external search에서도 아무것도 나오지 않으면 target description을 sender ICP 쪽으로 기본값 처리하지 않습니다. 둘 다 AI를 쓴다는 이유만으로 manufacturing AI가 browser automation인 것은 아닙니다.
  3. 기억에서 paraphrase하지 말고 quote하세요. product_description은 extract_page.mjs output(TITLE / META_DESCRIPTION / OG_DESCRIPTION / HEADINGS / BODY) 또는 external search result의 specific phrase를 quote하거나 가까이 paraphrase해야 합니다. 그런 phrase가 없으면 Unknown — homepage content not accessible라고 씁니다.
  4. 얇은 evidence에서는 score cap 적용. product_description이 Unknown이면 icp_fit_score ≤ 3으로 설정하고 icp_fit_reasoning: Insufficient evidence — homepage returned no readable content를 사용합니다. 추론 신호만으로 더 높은 score를 정당화하지 않습니다.

기업 리서치 — Workflow 참고 자료

Discovery Batch JSON 스키마

파일: /tmp/company_discovery_batch_{N}.json

browse cloud search --output은 flat array가 아니라 JSON object를 씁니다.

{
  "requestId": "abc123",
  "query": "AI data extraction startups",
  "results": [
    { "url": "https://example.com", "title": "Example Corp", "author": null, "publishedDate": null },
    ...
  ]
}

list_urls.mjs script는 두 형식(flat array와 { results: [...] })을 모두 처리합니다.

기업 리서치 Markdown 형식

파일: {OUTPUT_DIR}/{company-slug}.md

여기서 {OUTPUT_DIR}는 사용자의 Desktop에 있는 per-run directory입니다(예: ~/Desktop/acme_research_2026-04-23/). Main agent가 Step 0에서 이를 만들고 모든 subagent에 전체 literal path를 전달합니다.

각 research subagent는 회사별 markdown file 하나를 씁니다. 전체 템플릿은 references/example-research.md를 참고하세요.

YAML frontmatter fields(report + CSV compilation에 사용):

  • company_name(required)
  • website(required)
  • product_description
  • industry
  • target_audience
  • key_features(pipe-separated: feature1 | feature2 | feature3)
  • icp_fit_score(정수 1-10, required)
  • icp_fit_reasoning
  • employee_estimate
  • funding_info
  • headquarters

Body sections:

  • ## Product — 무엇을 하는지
  • ## Research Findings — confidence level과 source가 있는 증거

중요: 모든 파일에서 field name을 일관되게 사용합니다. compile_report.mjs script가 이 field들을 읽습니다.

Page Content 추출

모든 homepage/product-page content extraction에는 extract_page.mjs를 사용합니다. 이 script는 browse cloud fetch --output으로 fetch하고 title + meta + visible body text를 parse하며, fetch가 실패하거나 얇은 JS-rendered content를 반환하면 자동으로 browse get markdown으로 fallback합니다.

node {SKILL_DIR}/scripts/extract_page.mjs "https://example.com" --max-chars 3000

출력은 structured block입니다.

URL: https://example.com
FETCH_OK: true|false
FALLBACK_TO_BROWSE: true|false
TITLE: ...
META_DESCRIPTION: ...
OG_TITLE: ...
OG_DESCRIPTION: ...
HEADINGS: h1/h2/h3 joined by " | "
BODY_CHARS: N
BODY:
<cleaned visible text, max N chars>

raw browse cloud fetch | sed pipeline을 쓰지 않는 이유는? --output이 없으면 browse cloud fetch는 HTML이 escaped string으로 들어간 JSON envelope를 반환합니다. 단순 sed pipeline은 wrapper와 content에서 <>를 제거하고 <meta> tag를 없앱니다. Framer/Next.js SPA에서는 meta tag가 유일하게 읽을 수 있는 content인 경우가 많습니다. extract_page.mjs는 --output으로 raw HTML을 직접 parse합니다.

raw browse cloud fetch 사용 시점: JSON envelope를 그대로 보려는 작은 structured file에만 사용합니다. 예: sitemap.xml, robots.txt, llms.txt. 모델에 넣을 HTML page에는 extract_page.mjs를 사용합니다.

Content가 실제인지 검증하기(환각 방지)

회사 파일에 product_description, industry, target_audience를 쓰기 전에 claim이 extract_page.mjs output에 근거하는지 확인합니다. TITLE, META_DESCRIPTION, OG_DESCRIPTION, HEADINGS 또는 BODY에서 quote하거나 가까이 paraphrase합니다.

extract_page.mjs가 FETCH_OK: false와 FALLBACK_TO_BROWSE: false를 반환하거나 BODY_CHARS < 50이면 homepage 접근이 불가능합니다. 지어내지 마세요. 다음처럼 씁니다.

  • product_description: Unknown — homepage content not accessible
  • icp_fit_score: 3(또는 더 낮게)
  • icp_fit_reasoning: Insufficient evidence — homepage returned no readable content

이 규칙이 막는 전형적 실패 모드: server-rendered copy가 없는 Framer/Next.js landing page에서 subagent가 visual cue("design-forward", "Geist Mono", "Framer-built")를 사용자의 ICP에 맞춰 해석하는 경우. Typography는 제품이 아닙니다.

Discovery Subagent Prompt Template

당신은 company discovery subagent입니다. Search query를 실행하고 결과를 저장하세요.

도구 규칙 — 중요, 정확히 따르세요:
1. Bash tool만 사용할 수 있습니다. 예외는 없습니다.
2. 모든 search를 && chaining을 사용한 단일 Bash call에서 실행합니다.
3. 금지 도구: WebFetch, WebSearch, Write, Read, Glob, Grep — 모두 금지입니다.
   금지된 tool을 하나라도 사용하면 전체 run이 실패합니다. Bash만 사용하세요.
4. path에는 ~ 또는 $HOME을 절대 사용하지 말고 full literal path를 사용하세요.

TASK:
다음 모든 search를 하나의 Bash command에서 실행하세요.

browse cloud search "{query1}" --num-results 25 --output /tmp/company_discovery_batch_{N1}.json && \
browse cloud search "{query2}" --num-results 25 --output /tmp/company_discovery_batch_{N2}.json && \
browse cloud search "{query3}" --num-results 25 --output /tmp/company_discovery_batch_{N3}.json && \
echo "Discovery complete"

Command 완료 후 batch별 발견된 result count만 보고하세요.
실제 result를 분석, 요약 또는 반환하지 마세요.

리서치 Subagent Prompt 템플릿

당신은 company research subagent입니다. 각 company URL을 리서치하고 ICP fit을 점수화하세요.

CONTEXT:
- User's company: {user_company}
- User's product: {user_product}
- ICP description: {icp_description}
- Depth mode: {depth_mode}
- 출력 디렉터리: {OUTPUT_DIR}   ← research file을 여기에 쓰세요. full literal path입니다.

URLS TO PROCESS:
{url_list}

도구 규칙 — 중요, 정확히 따르세요:
1. Bash tool만 사용할 수 있습니다. 예외는 없습니다.
2. 모든 search: Bash → browse cloud search "..." --num-results 10
3. 모든 homepage/product-page content extraction:
   Bash → node {SKILL_DIR}/scripts/extract_page.mjs "URL" --max-chars 3000
   이 명령은 structured TITLE / META_DESCRIPTION / OG_DESCRIPTION / HEADINGS / BODY를 반환하고, fetch가 실패하거나 얇은 JS-rendered content를 반환하면 browse get markdown으로 자동 fallback합니다.
   `browse cloud fetch | sed` pipeline을 직접 만들지 마세요. meta tag를 제거하고 stdout JSON envelope를 parse하지 못합니다. sitemap.xml, robots.txt, llms.txt에만 raw `browse cloud fetch`를 사용하세요.
4. 모든 file write를 batch 처리하세요. Chained heredoc을 사용한 단일 Bash call에서 모든 markdown file을 씁니다(permission prompt 하나, 파일별 prompt 아님).
5. 금지 도구: WebFetch, WebSearch, Write, Read, Glob, Grep — 모두 금지입니다.
   금지된 tool을 하나라도 사용하면 전체 run이 실패합니다. Bash만 사용하세요.
6. path에는 ~ 또는 $HOME을 절대 사용하지 말고 full literal path를 사용하세요.

환각 방지 규칙 — 중요:
- font, framework(Framer/Next.js/React), design system, visual style만 보고 product_description, industry, target_audience를 절대 추론하지 않습니다. Typography는 제품이 아닙니다.
- sender의 ICP가 target description에 새어 들어가게 하지 않습니다. 타깃이 무엇을 하는지 모르면 "Unknown"이라고 쓰세요. ICP에 맞춰 pattern-match하지 마세요.
- product_description은 extract_page.mjs output의 문구를 quote하거나 가까이 paraphrase해야 합니다. TITLE/META/OG/HEADINGS/BODY 어느 곳에서도 알아볼 수 있는 product statement가 없으면 "Unknown — homepage content not accessible"라고 쓰고 icp_fit_score를 최대 3으로 제한하세요.

RESEARCH PATTERN(회사별):

Phase A — Plan(quick mode에서는 skip):
ICP와 enrichment field를 기준으로 알아야 할 것을 하위 질문으로 분해합니다.

Phase B — Research Loop:
각 하위 질문(또는 quick mode에서는 homepage만)에 대해:
1. 관련 query로 browse cloud search를 실행합니다.
2. Result에서 가장 관련 있는 URL 1-2개를 고릅니다.
3. Page content를 extract합니다: node {SKILL_DIR}/scripts/extract_page.mjs "URL" --max-chars 3000
   (`--output`을 사용해 stdout JSON envelope를 피하고, meta tag를 보존하며, 필요 시 browse get markdown으로 fallback합니다.)
4. Smart page discovery: /sitemap.xml 또는 /llms.txt에 `browse cloud fetch --allow-redirects`를 사용해 관련 URL을 찾습니다. 이것들은 작은 XML/text file이라 raw JSON envelope가 괜찮습니다. 발견한 실제 HTML page에는 extract_page.mjs를 사용합니다.
5. Findings를 추출합니다: source와 confidence level이 있는 factual statement.
6. Findings를 축적하고 다음 하위 질문으로 넘어갑니다.
7. Step budget을 지킵니다: quick=2-3 calls, deep=5-8, deeper=10-15.

Phase C — Synthesize:
축적한 findings에서:
1. ICP fit을 1-10점으로 매깁니다(아래 rubric 참고).
2. Findings로 enrichment field를 채웁니다.
3. icp_fit_reasoning에서 specific finding을 참조합니다.

ICP SCORING RUBRIC:
- 8-10: Strong match. 여러 high-confidence finding이 fit을 확인합니다.
- 5-7: Partial match. 일부 finding은 relevance를 시사하지만 key signal이 부족합니다.
- 1-4: Weak match. 잘못된 segment이거나 명확한 연결이 없습니다.

OUTPUT — chained heredoc을 사용한 단일 Bash call로 모든 company file을 {OUTPUT_DIR}에 직접 씁니다.

cat << 'COMPANY_MD' > {OUTPUT_DIR}/{slug1}.md
---
company_name: {name}
website: {url}
product_description: {description}
industry: {industry}
target_audience: {audience}
key_features: {feature1} | {feature2} | {feature3}
icp_fit_score: {score}
icp_fit_reasoning: {reasoning}
employee_estimate: {estimate}
funding_info: {funding}
headquarters: {location}
---

## Product
{product description paragraph}

## Research Findings
- **[{confidence}]** {finding} (source: {url})
COMPANY_MD
cat << 'COMPANY_MD' > {OUTPUT_DIR}/{slug2}.md
---
...
---
...
COMPANY_MD

Shell variable expansion을 막기 위해 heredoc delimiter는 'COMPANY_MD'(quoted)를 사용합니다.

다음만 보고하세요: "Batch {batch_id}: {succeeded}/{total} researched, {findings_count} total findings."
Raw data를 main conversation에 반환하지 마세요.

Wave Management

핵심 원칙: Parallelism 극대화, Prompt 최소화

한 메시지에서 가능한 한 많은 subagent를 launch합니다(메시지당 Agent tool call 약 6개까지). 각 subagent는 permission prompt를 최소화하기 위해 모든 Bash operation을 batch 처리해야 합니다.

Discovery Phase

  • 한 메시지에서 discovery subagent를 최대 6개 launch합니다.
  • 각 subagent는 && chaining을 사용한 단일 Bash call에서 모든 query를 실행합니다.
  • 모든 wave 완료 후 node {SKILL_DIR}/scripts/list_urls.mjs /tmp를 실행합니다.
  • URL 필터링: Blog post, news article, directory, competitor, existing customer를 제거합니다. company homepage만 유지합니다.

Research Phase

  • Depth별 subagent당 company 수:
    • quick: subagent당 약 10개 회사
    • deep: subagent당 약 5개 회사
    • deeper: subagent당 약 2-3개 회사
  • 각 subagent는 chained heredoc을 사용한 단일 Bash call로 모든 markdown file을 {OUTPUT_DIR}에 직접 씁니다.

Sizing Formula

search_queries = ceil(requested_companies / 35)
discovery_subagents = search_queries
expected_urls = search_queries * 20

quick:  research_subagents = ceil(expected_urls / 10)
deep:   research_subagents = ceil(expected_urls / 5)
deeper: research_subagents = ceil(expected_urls / 3)

Error Handling

  • subagent가 실패하면 error를 log하고 남은 batch를 계속 진행합니다.
  • 한 wave에서 subagent의 50% 초과가 실패하면 멈추고 사용자에게 알립니다.
  • extract_page.mjs는 browse cloud fetch → browse get markdown fallback을 내부적으로 이미 처리합니다. 그래도 empty BODY와 함께 FETCH_OK: false를 반환하면 회사를 skip하고 product_description을 Unknown으로 표시합니다(추측하지 않음).

Report + CSV Compilation

모든 research subagent가 완료되면 한 command로 HTML report와 CSV를 compile합니다.

node {SKILL_DIR}/scripts/compile_report.mjs {OUTPUT_DIR} --open

이 script는 다음을 수행합니다.

  • {OUTPUT_DIR}의 모든 .md file을 읽습니다.
  • YAML frontmatter + body section을 parse합니다.
  • Normalized company name으로 deduplicate합니다(가장 높은 ICP score 유지).
  • {OUTPUT_DIR}/index.html 생성 — 점수화된 overview page
  • {OUTPUT_DIR}/companies/{slug}.html 생성 — 회사별 page 하나
  • {OUTPUT_DIR}/results.csv 생성 — sheets/CRM용 spreadsheet
  • index.html을 default browser에서 엽니다(--open flag).
  • JSON summary를 stderr에 출력합니다.
ElasticFlow

AI 기반 워크플로 자동화로 비즈니스를 혁신하세요. 모든 엔터프라이즈 요구를 위한 통합 플랫폼.

팔로우

플랫폼

  • 기능
  • 장점
  • 사용 사례
  • 워크플로 라이브러리

사용 사례

  • 영업
  • 마케팅
  • 재무·법무
  • 인사

카탈로그

  • 부서
  • 역할
  • 도구
  • 지표
  • 플랫폼

성장

  • 추천 프로그램
  • 파트너

법무

  • 개인정보 처리방침
  • 서비스 약관
  • 쿠키 정책
  • 허용 사용
  • 보안
  • SLA

© 2026 ElasticFlow. 모든 권리 보유.