New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

You need to enumerate every business of a given type

Market finder

by swan-gtm · MIT license · ★ 159 on GitHub · updated Sep 23

Market finder cover

Use this skill when you need to enumerate every business of a given type in a geography — "find all X in Y", "build a list of", "market sizing", "account universe", "how many X in Y", "TAM for", "discover all", "prospect list" — or when…

---
name: market-finder
title: Market finder
description: |
  Use this skill when you need to enumerate every business of a given type in a
  geography — "find all X in Y", "build a list of", "market sizing", "account
  universe", "how many X in Y", "TAM for", "discover all", "prospect list" — or
  when you already have a list and want it checked: "audit my list", "compare
  against", "what am I missing", "gap analysis", "verify my business list".
  Produces a deduplicated, source-linked market inventory with a confidence
  score per entity; in audit mode, a three-way comparison of your list against
  fresh discovery (matched / discovered-only / reference-only) with a coverage
  score. Not for monitoring known competitors over time or deep-diving a single
  company — this play is for mapping a whole market.
category: Prospecting
tags: [Sales]
---

Overview

Runs when someone needs the full universe of businesses of one type in one geography — for territory planning, TAM sizing, list building, or checking an existing account list for gaps.

Manual install (npx, ZIP)
Claude Codenpx skills add swan-gtm/gtm-skills --skill market-finder -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/swan-gtm/gtm-skills/tar.gz/e65d97205fd2 \ | tar -xz -C ~/.claude/skills --strip-components=3 gtm-skills-e65d97205fd2/skills/uri-knorovich/market-finder
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/e17c3b15bcb7a19981d2/market-finder.zip" -OutFile "$env:TEMP\market-finder.zip"; Expand-Archive "$env:TEMP\market-finder.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md9.0 KB
  • references/3 files · 15.9 KB
Read the files here
swan-gtm/e65d9724 files
SKILL.md
Show the full text111 lines

Market finder

Runs when someone needs the full universe of businesses of one type in one geography — for territory planning, TAM sizing, list building, or checking an existing account list for gaps.

Produces a deduplicated entity list with per-entity strength scores and mandatory source links; in audit mode, your list categorized against fresh discovery with a coverage percentage.

The play

1. Detect the mode

Two modes, and the difference is whether the user handed you a list:

Signal Mode
Spreadsheet link, CSV file, or inline list of 3+ businesses Audit
Explicit audit language ("audit my list", "compare against", "gap analysis") Audit
No reference list Discovery (default)

If a list is present but intent is ambiguous, ask: "Want me to audit your list against fresh discovery, or use it as a starting point?" If audit language appears but no list does, ask for the list — never run an audit against an imagined reference.

2. Scope the request

Extract: business type (required), geography (required — except software/SaaS markets, which are not geography-bound), qualification criteria (optional: "must have a website", "10+ reviews"), and depth. If type and geography are both clear, confirm in one line and go; if not, ask one combined question — never a drip of clarifications.

Two depth modes: quick scan (one discovery pass over all sources, enrich only the top 5, verify only the top 5) and comprehensive (all sources with retries, full enrichment, verify everything). Default to quick scan unless the user signals they want the complete universe.

3. Load the vertical preset

Read references/vertical-presets.md and match the business type against preset trigger keywords (Healthcare, SaaS/Software, Restaurants, Legal/Financial, Auto/Home Services, Custom fallback). The preset tells you which sources to search, in what priority order, what query pattern to use per metro, and whether the vertical is geographic at all. A partial match gets confirmed ("This looks like Healthcare — use healthcare sources?"); no match falls through to the Custom preset with the user's own keywords.

4. Tile the geography

Skip for SaaS. Otherwise:

Geography Tiling
City Single query set
Metro area Single query set per source
State Top 5–10 metros in the state
Region States, then top metros per state
Nationwide All states, then top metros per state

Estimate the total work before starting: metros × discovery sources × (1 + ~0.3 enrichment ratio). A nationwide comprehensive run is thousands of lookups — state the estimate and get an explicit go-ahead before launching anything that large. Derive a market slug (dentists-florida, hvac-nationwide) and keep a working file per slug in your workspace; save intermediate results after each phase so a long run can resume instead of restarting, and so a repeat run can load prior entities and only chase what's new (new metros, new entrants) rather than re-discovering everything.

5. Discover

For each metro in the tiling plan, run the preset's discovery queries against its sources in parallel — primary source first (maps-style listings), secondary (review directories), tertiary only when the first two return fewer than ~10 combined unique results for that metro. When a structured source is unavailable or fails, fall back to a plain web search for "{type} in {metro}" — partial data beats none; never abort a whole run for one empty metro.

SaaS discovery is different: two parallel search passes, no geography. Pass 1 finds the players (software review directories, "best {vertical} software" roundups, launch platforms, open-source repos); pass 2 finds the money (funding databases, funding news, market-landscape pieces). Pass 2 is not optional — without it, funding and traction data will be missing or wrong.

Then deduplicate in strict key order: place identifier → root domain → fuzzy name + city. Merge fields across sources into one record per entity and track source_count — how many independent sources found it. That count is the backbone of scoring.

6. Enrich and verify

Enrich highest-source_count entities first, using the preset's enrichment targets (review volume, accreditation, complaint history, funding profile). Skip entities missing the identifier the enrichment source needs.

For SaaS, run a financial verification pass on top entities: search "{company} funding raised series" and use only sourced amounts and dates. No source found → report "Undisclosed." Never guess "early stage" or "bootstrapped" — an unverified funding label is worse than an honest blank.

7. Score

Strength is earned by independent corroboration, not by any single listing:

Geographic verticals — High: 3+ sources, or 2+ sources with >50 reviews. Medium: 2 sources, or 1 source with >10 reviews. Low: 1 source, few/no reviews.

SaaS — High: verified funding >$10M, or 3+ directory sources, or 1000+ reviews on a major software directory. Medium: verified funding <$10M, or 2 sources, or 100+ reviews. Low: 1 source, no verified funding.

8. Audit comparison (audit mode only)

Read references/audit-mode.md for the full parsing rules, normalization, and matching algorithm. In short: normalize every reference record to {name, domain, city, state, phone}, then match in three layers — exact root-domain, fuzzy name + same city at an 80% word-overlap threshold, then normalized phone. First match wins; record which layer matched. Categorize everything as matched, discovered_only (expansion candidates), or reference_only (coverage gaps), and compute the coverage score: matched / reference_count × 100. A 0% score is a valid, informative result — report it, don't retry until it looks better.

9. Report

Follow references/output-formats.md — discovery format, SaaS tier-grouped variant, and audit variant. Non-negotiable: every entity carries at least one clickable source URL. Save the report and the structured entity data to the market slug's workspace files, then offer natural follow-ups: filter, expand geography, export the discovered-only set for outreach, or investigate reference-only gaps to see who closed, moved, or rebranded.

What good looks like

  • The best operator scopes cost before spending it: the nationwide estimate is on the table before the first query fires, and the user chose comprehensive knowingly. The mediocre version discovers halfway through that the job is 10× bigger than anyone wanted.
  • Strength scores mean something: a High entity was independently confirmed by multiple sources, not enthusiastically listed once. If most of your list is single-source Low, say so in "What's missing" instead of dressing it up.
  • SaaS funding claims all trace to a source or read "Undisclosed". The mediocre version copies a stale directory figure and labels a Series C company "early stage".
  • In audit mode, the interpretation earns the run: "82% coverage; your gaps cluster in Orlando; three reference-only entries appear to have closed" — not just three tables.
  • Dedup held: no business appears twice under name variants, because domain matching ran before fuzzy names and suffixes ("LLC", "Associates", "DDS") were stripped before comparing.
  • A repeat run surfaces the delta — new metros, new entrants — instead of re-presenting last month's list as fresh discovery.

Rules

  • MUST attach at least one source URL per entity in every output. An entity nobody can verify doesn't ship.
  • MUST get explicit approval before launching a large run (nationwide or multi-state comprehensive), and before any bulk export intended for outreach.
  • MUST deduplicate in key order (place identifier → domain → fuzzy name+city) before scoring — scores on a duplicated list are fiction.
  • MUST report unverifiable funding as "Undisclosed". NEVER fabricate or infer a funding stage.
  • NEVER run audit mode without an actual reference list in hand.
  • NEVER abort an entire discovery run because one metro or one source returned nothing — log the gap and continue.
  • NEVER present a stale prior run as fresh discovery; either refresh it or label its date.
1---
2name: market-finder
3title: Market finder
4description: |
5 Use this skill when you need to enumerate every business of a given type in a
6 geography — "find all X in Y", "build a list of", "market sizing", "account
7 universe", "how many X in Y", "TAM for", "discover all", "prospect list" — or
8 when you already have a list and want it checked: "audit my list", "compare
9 against", "what am I missing", "gap analysis", "verify my business list".
10 Produces a deduplicated, source-linked market inventory with a confidence
11 score per entity; in audit mode, a three-way comparison of your list against
12 fresh discovery (matched / discovered-only / reference-only) with a coverage
13 score. Not for monitoring known competitors over time or deep-diving a single
14 company — this play is for mapping a whole market.
15category: Prospecting
16tags: [Sales]
17---
18 
19# Market finder
20 
21Runs when someone needs the full universe of businesses of one type in one geography — for territory planning, TAM sizing, list building, or checking an existing account list for gaps.
22 
23Produces a deduplicated entity list with per-entity strength scores and mandatory source links; in audit mode, your list categorized against fresh discovery with a coverage percentage.
24 
25## The play
26 
27### 1. Detect the mode
28 
29Two modes, and the difference is whether the user handed you a list:
30 
31| Signal | Mode |
32|--------|------|
33| Spreadsheet link, CSV file, or inline list of 3+ businesses | **Audit** |
34| Explicit audit language ("audit my list", "compare against", "gap analysis") | **Audit** |
35| No reference list | **Discovery** (default) |
36 
37If a list is present but intent is ambiguous, ask: "Want me to audit your list against fresh discovery, or use it as a starting point?" If audit language appears but no list does, ask for the list — never run an audit against an imagined reference.
38 
39### 2. Scope the request
40 
41Extract: business type (required), geography (required — except software/SaaS markets, which are not geography-bound), qualification criteria (optional: "must have a website", "10+ reviews"), and depth. If type and geography are both clear, confirm in one line and go; if not, ask one combined question — never a drip of clarifications.
42 
43Two depth modes: **quick scan** (one discovery pass over all sources, enrich only the top 5, verify only the top 5) and **comprehensive** (all sources with retries, full enrichment, verify everything). Default to quick scan unless the user signals they want the complete universe.
44 
45### 3. Load the vertical preset
46 
47Read `references/vertical-presets.md` and match the business type against preset trigger keywords (Healthcare, SaaS/Software, Restaurants, Legal/Financial, Auto/Home Services, Custom fallback). The preset tells you which sources to search, in what priority order, what query pattern to use per metro, and whether the vertical is geographic at all. A partial match gets confirmed ("This looks like Healthcare — use healthcare sources?"); no match falls through to the Custom preset with the user's own keywords.
48 
49### 4. Tile the geography
50 
51Skip for SaaS. Otherwise:
52 
53| Geography | Tiling |
54|-----------|--------|
55| City | Single query set |
56| Metro area | Single query set per source |
57| State | Top 5–10 metros in the state |
58| Region | States, then top metros per state |
59| Nationwide | All states, then top metros per state |
60 
61Estimate the total work before starting: `metros × discovery sources × (1 + ~0.3 enrichment ratio)`. A nationwide comprehensive run is thousands of lookups — state the estimate and get an explicit go-ahead before launching anything that large. Derive a market slug (`dentists-florida`, `hvac-nationwide`) and keep a working file per slug in your workspace; save intermediate results after each phase so a long run can resume instead of restarting, and so a repeat run can load prior entities and only chase what's new (new metros, new entrants) rather than re-discovering everything.
62 
63### 5. Discover
64 
65For each metro in the tiling plan, run the preset's discovery queries against its sources in parallel — primary source first (maps-style listings), secondary (review directories), tertiary only when the first two return fewer than ~10 combined unique results for that metro. When a structured source is unavailable or fails, fall back to a plain web search for `"{type} in {metro}"` — partial data beats none; never abort a whole run for one empty metro.
66 
67SaaS discovery is different: two parallel search passes, no geography. Pass 1 finds the players (software review directories, "best {vertical} software" roundups, launch platforms, open-source repos); pass 2 finds the money (funding databases, funding news, market-landscape pieces). Pass 2 is not optional — without it, funding and traction data will be missing or wrong.
68 
69Then deduplicate in strict key order: place identifier → root domain → fuzzy name + city. Merge fields across sources into one record per entity and track `source_count` — how many independent sources found it. That count is the backbone of scoring.
70 
71### 6. Enrich and verify
72 
73Enrich highest-`source_count` entities first, using the preset's enrichment targets (review volume, accreditation, complaint history, funding profile). Skip entities missing the identifier the enrichment source needs.
74 
75For SaaS, run a financial verification pass on top entities: search `"{company} funding raised series"` and use only sourced amounts and dates. **No source found → report "Undisclosed."** Never guess "early stage" or "bootstrapped" — an unverified funding label is worse than an honest blank.
76 
77### 7. Score
78 
79Strength is earned by independent corroboration, not by any single listing:
80 
81Geographic verticals — **High:** 3+ sources, or 2+ sources with >50 reviews. **Medium:** 2 sources, or 1 source with >10 reviews. **Low:** 1 source, few/no reviews.
82 
83SaaS — **High:** verified funding >$10M, or 3+ directory sources, or 1000+ reviews on a major software directory. **Medium:** verified funding <$10M, or 2 sources, or 100+ reviews. **Low:** 1 source, no verified funding.
84 
85### 8. Audit comparison (audit mode only)
86 
87Read `references/audit-mode.md` for the full parsing rules, normalization, and matching algorithm. In short: normalize every reference record to `{name, domain, city, state, phone}`, then match in three layers — exact root-domain, fuzzy name + same city at an 80% word-overlap threshold, then normalized phone. First match wins; record which layer matched. Categorize everything as `matched`, `discovered_only` (expansion candidates), or `reference_only` (coverage gaps), and compute the coverage score: `matched / reference_count × 100`. A 0% score is a valid, informative result — report it, don't retry until it looks better.
88 
89### 9. Report
90 
91Follow `references/output-formats.md` — discovery format, SaaS tier-grouped variant, and audit variant. Non-negotiable: **every entity carries at least one clickable source URL.** Save the report and the structured entity data to the market slug's workspace files, then offer natural follow-ups: filter, expand geography, export the discovered-only set for outreach, or investigate reference-only gaps to see who closed, moved, or rebranded.
92 
93## What good looks like
94 
95- The best operator scopes cost before spending it: the nationwide estimate is on the table before the first query fires, and the user chose comprehensive knowingly. The mediocre version discovers halfway through that the job is 10× bigger than anyone wanted.
96- Strength scores mean something: a High entity was independently confirmed by multiple sources, not enthusiastically listed once. If most of your list is single-source Low, say so in "What's missing" instead of dressing it up.
97- SaaS funding claims all trace to a source or read "Undisclosed". The mediocre version copies a stale directory figure and labels a Series C company "early stage".
98- In audit mode, the interpretation earns the run: "82% coverage; your gaps cluster in Orlando; three reference-only entries appear to have closed" — not just three tables.
99- Dedup held: no business appears twice under name variants, because domain matching ran before fuzzy names and suffixes ("LLC", "Associates", "DDS") were stripped before comparing.
100- A repeat run surfaces the delta — new metros, new entrants — instead of re-presenting last month's list as fresh discovery.
101 
102## Rules
103 
104- MUST attach at least one source URL per entity in every output. An entity nobody can verify doesn't ship.
105- MUST get explicit approval before launching a large run (nationwide or multi-state comprehensive), and before any bulk export intended for outreach.
106- MUST deduplicate in key order (place identifier → domain → fuzzy name+city) before scoring — scores on a duplicated list are fiction.
107- MUST report unverifiable funding as "Undisclosed". NEVER fabricate or infer a funding stage.
108- NEVER run audit mode without an actual reference list in hand.
109- NEVER abort an entire discovery run because one metro or one source returned nothing — log the gap and continue.
110- NEVER present a stale prior run as fresh discovery; either refresh it or label its date.
111 
View all files on GitHub →

Details

Updated
Sep 23, 2026
License
MIT
Stars on the repo
★ 159
Checked
Source
swan-gtm/gtm-skills ↗
Creator
swan-gtm · 51 listings
View creator

Similar skills

See all →
SkillAnalyzes market trends across platforms for a given topicSkill: trend-analysisMaxKmet/idea-validation-agents · by MaxKmetAnalyzes market trends across platforms (TikTok, Reddit, App Store, Google Trends) for a given topic or category. Writes a new file to memory/market_insights/.★ 468 GitHub starsPromptIts goal is to help users quickly understand confusingInternet Trend & Slang Intelligencef/prompts.chat · by Scott MalinIts goal is to help users quickly understand confusing or unfamiliar phrases appearing in social media, news, workplaces, or online conversations.New listingPromptAct as a cutting-edge market trend analystTrend researcherf/prompts.chat · by Ersin YılmazAct as a cutting-edge market trend analyst specializing in identifying viral opportunities and emerging user behaviors across social media platforms, app stores, and digital culture. Your superpower is spotting trends before they peak and translating cultural moments into product opportunities that can be built within 6-day sprints.New listingMCPExpert investment researcher specializing in market research🔍 Investment Researcher Agentmsitarzewski/agency-agents · by msitarzewskiExpert investment researcher specializing in market research, due diligence, portfolio analysis, and asset valuation. Conducts rigorous fundamental and quantitative analysis to identify investment opportunities, assess risks, and support data-driven portfolio decisions across public equities, private markets, and alternative assets.★ 154k GitHub starsMCP3-7 days | Agents: 6 | Gate Keeper: Executive Summary🔍 Phase 0 Playbook — Intelligence & Discoverymsitarzewski/agency-agents · by msitarzewski> Duration: 3-7 days | Agents: 6 | Gate Keeper: Executive Summary Generator★ 154k GitHub starsMCPExpert market intelligence analystProduct Trend Researcher Agentmsitarzewski/agency-agents · by msitarzewskiExpert market intelligence analyst specializing in identifying emerging trends, competitive analysis, and opportunity assessment. Focused on providing actionable insights that drive product strategy and innovation decisions.★ 154k GitHub stars

More from swan-gtm

SkillAn ABM program cannot prove engagement mattersAccount-Based Engagement Scoring and Buying Group Measurementswan-gtm/gtm-skills · by swan-gtmUse this skill when an ABM program cannot prove engagement matters, accounts get handed to sales on gut feel, or nobody knows which activity moves buying groups forward. Builds an account engagement score (weighted signals plus decay), maps buying group coverage across the decision-making unit, and defines explicit handover gates so marketing and sales agree on readiness. Produces a scoring model, a buying group tracker template, and a handover decision rule. Rule: without buying group visibility a high engagement score is a false positive; handover requires both the score and the coverage threshold met. Trigger phrases: ABM measurement, which accounts are hot, buying committee coverage, when do we hand this to sales, account engagement score, ABM ROI.★ 159 GitHub starsSkillWriting ad copy — headline formulas, visual directionAd Copywriting - Headline Formulas, Visual Design & Voice of Customerswan-gtm/gtm-skills · by swan-gtmUse this skill when writing ad copy — headline formulas, visual direction, and voice-of-customer sourcing that makes ads specific instead of generic.★ 159 GitHub starsSkillDefining ad personasAd Persona Frameworkswan-gtm/gtm-skills · by swan-gtmUse this skill when defining ad personas — translating ICP segments into the persona lens every ad, angle, and offer gets built against.★ 159 GitHub starsSkillA percentage in a commercial term is being set, questionedAudit the base not the rateswan-gtm/gtm-skills · by swan-gtmUse this skill when a percentage in a commercial term is being set, questioned, or is producing a number nobody expected — sales commission, revenue share, affiliate and creator payouts, channel margin, agency fees, referral fees, rebates. Triggers: "reps are hitting quota but margin isn't moving", "what does this promo actually cost us", "our partner payouts are higher than the model", "is 15% a fair rate", "we're renegotiating the split", "the comp plan is paying out on deals we lost money on". It finds what the percentage multiplies, identifies the condition under which that choice starts to matter, quantifies the gap at that condition, and identifies the clause to revisit.★ 159 GitHub starsSkillInbound leads arrive incomplete B2B Data Enrichment for Revenue Operationsswan-gtm/gtm-skills · by swan-gtmUse this skill when inbound leads arrive incomplete (missing company size, industry, revenue), the TAM list lacks data for scoring, or the CRM cannot route and segment without enrichment. Maps coverage gaps, compares single-source and waterfall provider strategies, and builds an integration roadmap with cost guardrails and quality gates. Produces a provider recommendation matrix, a waterfall architecture, and a go or no-go checklist. Rule: no single provider has full coverage; a waterfall across two or more providers in sequence beats any one source on match rate. Trigger phrases: data enrichment, leads come in with no company info, enrichment coverage, firmographic data, which enrichment tool, data freshness.★ 159 GitHub starsSkillYou need to know what people are saying about a brandBrand mention monitorswan-gtm/gtm-skills · by swan-gtmUse this skill when you need to know what people are saying about a brand across the web and social — "monitor brand mentions", "what are people saying about [brand] this week", "run a brand sweep", "social listening", "find high-risk mentions", or "how does [brand] compare to [competitor] in the conversation". Sweeps social platforms, news, forums, and review sites; scores every mention on reach, velocity, sentiment, and risk-topic match; and produces a triage report bucketed into Crisis / Watch / Engage / Log with a suggested owner and response window for each mention, so the team responds before one spirals.★ 159 GitHub stars