audience-filterlisted
Install: claude install-skill automatewithuday/gtm-prospecting-system
# ICP Prompt Builder
## Pipeline contract
**Stage 6 of 20.** Reads `05-audience-raw/*.csv` and `02-client-profile.yaml`. Writes `06-judge-prompt.txt` and `06-audience-qualified.csv`.
- Normalize every raw CSV to the lead columns in [`/prospecting-system`](../prospecting-system/SKILL.md) first. Keep `source_type` (follower / engager / member / attendee) and `source_detail` (which page) on every row.
- Dedupe by `linkedin_url`, else `domain+first_name+last_name`, BEFORE judging. A person following three competitor pages is one row with three sources — that overlap is a signal, keep the count in `source_count`.
- Drop rows whose company is in `excluded_domains`.
- The judge sees people here, not only companies: title + company description. Same 10-row approval loop.
- Output adds `qualified` (true/false), `judge_reason`. Rejected rows stay in the file.
Files live in `runs/<run>/`. Column definitions: [`/prospecting-system`](../prospecting-system/SKILL.md). Standalone use: ignore this block.
Before you pay to pull 5,000 companies, tune a qualification prompt on 10-50 of them. This skill walks you through the iterative loop.
## Why this exists
List-builder skills (DiscoLike, Blitz, Prospeo, Google Maps) return COMPANIES, but they don't know whether those companies match your ICP. If your list-builder returns 5,000 companies and 80% are wrong fits, you'll waste money enriching them for emails that go nowhere.
The fix: build an AI qualification prompt BEFORE scaling. Pull 1