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

Build and maintain a scored Total Addressable Market

Tam builder

by gooseworks-ai · MIT license · ★ 1,220 on GitHub · updated Sep 21

Tam builder cover

Build and maintain a scored Total Addressable Market (TAM) using Apollo Company Search. Discovers companies matching ICP, scores fit (0-100), assigns tiers (1/2/3), and auto-builds a persona watchlist for Tier 1-2 companies using Apollo…

---
name: tam-builder
description: >
  Build and maintain a scored Total Addressable Market (TAM) using Apollo Company Search.
  Discovers companies matching ICP, scores fit (0-100), assigns tiers (1/2/3), and
  auto-builds a persona watchlist for Tier 1-2 companies using Apollo People Search (free).
  Outputs to CSV.
tags: [lead-generation]
---

# TAM Builder

Build and maintain a scored Total Addressable Market. Uses Apollo Company Search to discover companies, scores ICP fit (0-100), assigns tiers (1/2/3), and auto-builds a persona watchlist for Tier 1-2 companies using Apollo People Search (free).

**Three modes:**
- **build** — First-time TAM construction from Apollo search
- **refresh** — Update existing TAM: re-score, detect tier changes, deprecate stale companies
- **status** — Read-only report of current TAM state

Overview

Build and maintain a scored Total Addressable Market. Uses Apollo Company Search to discover companies, scores ICP fit (0-100), assigns tiers (1/2/3), and auto-builds a persona watchlist for Tier 1-2 companies using Apollo People Search (free).

What you get

  • tam-companies-{date}.csv — All discovered companies with ICP score and tier
  • tam-personas-{date}.csv — Persona watchlist for Tier 1-2 companies (from People
Manual install (npx, ZIP)
Claude Codenpx skills add gooseworks-ai/goose-skills --skill tam-builder -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \ | tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/lead-generation/capabilities/tam-builder
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/fcfa845775203f337dda/tam-builder.zip" -OutFile "$env:TEMP\tam-builder.zip"; Expand-Archive "$env:TEMP\tam-builder.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.md5.7 KB
  • skill.meta.json252 B
Read the files here
gooseworks-ai/615c6852 files
SKILL.md
Show the full text157 lines

TAM Builder

Build and maintain a scored Total Addressable Market. Uses Apollo Company Search to discover companies, scores ICP fit (0-100), assigns tiers (1/2/3), and auto-builds a persona watchlist for Tier 1-2 companies using Apollo People Search (free).

Three modes:

  • build — First-time TAM construction from Apollo search
  • refresh — Update existing TAM: re-score, detect tier changes, deprecate stale companies
  • status — Read-only report of current TAM state

Prerequisites

Apollo API Key

Add to .env:

APOLLO_API_KEY=your-api-key-here

That's it — one env var.

Config Format

Create a JSON config per client/segment:

{
  "client_name": "happy-robot",
  "tam_config_name": "voice-ai-midmarket",

  "company_filters": {
    "organization_num_employees_ranges": ["51,200", "201,500", "501,1000"],
    "q_organization_keyword_tags": ["call center", "contact center"],
    "organization_locations": ["United States"]
  },

  "scoring": {
    "weights": {
      "employee_count_fit": 30,
      "industry_fit": 25,
      "funding_stage_fit": 20,
      "geo_fit": 15,
      "keyword_match": 10
    },
    "tier_thresholds": { "tier_1_min_score": 75, "tier_2_min_score": 50 },
    "target_industries": ["Telecommunications", "Customer Service"],
    "target_employee_ranges": [[51, 200], [201, 500], [501, 1000]],
    "target_funding_stages": ["Series A", "Series B", "Series C"],
    "target_geos": ["United States"]
  },

  "watchlist": {
    "enabled": true,
    "personas_per_company": 3,
    "person_filters": {
      "person_titles": ["VP of Operations", "Head of Customer Service"],
      "person_seniority": ["vp", "director", "c_suite"]
    },
    "tiers_to_watch": [1, 2]
  },

  "mode": "standard",
  "max_pages": 50
}

Approval Gate

CRITICAL: Never export results without explicit user approval.

Required flow:

  1. Search Apollo for a small sample first (~100 companies)
  2. Score them and present: tier distribution, example Tier 1/2 companies, scoring sanity check
  3. Get explicit user approval before running the full build
  4. Only then run the full search + score + export

Pipeline: Build Mode

Step 0: --preview → total count + cost estimate (no DB writes)
Step 1: --sample --test → search 1 page, score in-memory, show results (no DB writes)
Step 2: User reviews sample → approves, adjusts filters, or caps scope
Step 3: Full build → Apollo Company Search → Export to CSV → Score → Tier → Watchlist

Phase details (Step 3 only — after user approval):

Phase 1: Apollo Company Search → Upsert raw companies → Score ICP fit → Assign tiers
Phase 2: (skipped in build mode — no prior data to deprecate)
Phase 3: Persona Watchlist — pull 2-3 personas per Tier 1-2 company (free)

Pipeline: Refresh Mode

Phase 1: Apollo Company Search → Upsert/update companies → Re-score → Detect tier changes
Phase 2: Deprecation — companies missing 2+ consecutive refreshes get deprecated
Phase 3: Persona Watchlist — pull personas for new/promoted Tier 1-2 companies,
         disqualify personas at deprecated companies

ICP Scoring (0-100)

Pure function, no API calls. Weighted scoring across 5 dimensions from config:

  • employee_count_fit — headcount in target ranges?
  • industry_fit — industry matches targets?
  • funding_stage_fit — funding stage in targets?
  • geo_fit — HQ location in target geos?
  • keyword_match — org keywords overlap config keywords?

Score thresholds (configurable): >=75 = Tier 1, >=50 = Tier 2, else Tier 3.

Deprecation Rules (refresh only)

  • First miss (not returned by search): metadata.refresh_miss_count = 1, keep active
  • Second consecutive miss: tam_status = 'deprecated'
  • Employee count drops to 0: immediate deprecation
  • Companies with tam_status = 'converted' are always exempt

Watchlist — Persona Sync

Scenario Behavior
New Tier 1-2 company Pull 2-3 personas immediately
Company promoted Tier 3→2 Pull personas during refresh
Company deprecated Disqualify monitoring personas
Company demoted Tier 1→3 Keep existing personas, stop refreshing

Mode Caps

Parameter Test Standard Full
Max pages 1 50 200
Max companies 100 5,000 20,000

Apollo API Reference

  • Company Search: POST https://api.apollo.io/api/v1/mixed_companies/search — Returns matching companies in the accounts array (not organizations). Fields: name, primary_domain, estimated_num_employees, industry, keywords, city, state, country.
  • People Search: POST https://api.apollo.io/api/v1/mixed_people/search — $0.01 flat per call (cheapest people search). Returns matching people in the people array. Fields: first_name, title, organization.name. Email/LinkedIn obfuscated on free tier.
  • People Match (enrich): POST https://api.apollo.io/api/v1/people/match — ~$0.03 per match. Reveals email, phone, LinkedIn URL, full name.
  • Auth: x-api-key: {APOLLO_API_KEY} header on all requests
  • Pagination: per_page (max 100), page (1-indexed). pagination.total_entries gives total count.

Output

Save results as CSV to the current working directory:

  • tam-companies-{date}.csv — All discovered companies with ICP score and tier
  • tam-personas-{date}.csv — Persona watchlist for Tier 1-2 companies (from People Search)
1---
2name: tam-builder
3description: >
4 Build and maintain a scored Total Addressable Market (TAM) using Apollo Company Search.
5 Discovers companies matching ICP, scores fit (0-100), assigns tiers (1/2/3), and
6 auto-builds a persona watchlist for Tier 1-2 companies using Apollo People Search (free).
7 Outputs to CSV.
8tags: [lead-generation]
9---
10 
11# TAM Builder
12 
13Build and maintain a scored Total Addressable Market. Uses Apollo Company Search to discover companies, scores ICP fit (0-100), assigns tiers (1/2/3), and auto-builds a persona watchlist for Tier 1-2 companies using Apollo People Search (free).
14 
15**Three modes:**
16- **build** — First-time TAM construction from Apollo search
17- **refresh** — Update existing TAM: re-score, detect tier changes, deprecate stale companies
18- **status** — Read-only report of current TAM state
19 
20## Prerequisites
21 
22### Apollo API Key
23Add to `.env`:
24```
25APOLLO_API_KEY=your-api-key-here
26```
27 
28That's it — one env var.
29 
30## Config Format
31 
32Create a JSON config per client/segment:
33 
34```json
35{
36 "client_name": "happy-robot",
37 "tam_config_name": "voice-ai-midmarket",
38 
39 "company_filters": {
40 "organization_num_employees_ranges": ["51,200", "201,500", "501,1000"],
41 "q_organization_keyword_tags": ["call center", "contact center"],
42 "organization_locations": ["United States"]
43 },
44 
45 "scoring": {
46 "weights": {
47 "employee_count_fit": 30,
48 "industry_fit": 25,
49 "funding_stage_fit": 20,
50 "geo_fit": 15,
51 "keyword_match": 10
52 },
53 "tier_thresholds": { "tier_1_min_score": 75, "tier_2_min_score": 50 },
54 "target_industries": ["Telecommunications", "Customer Service"],
55 "target_employee_ranges": [[51, 200], [201, 500], [501, 1000]],
56 "target_funding_stages": ["Series A", "Series B", "Series C"],
57 "target_geos": ["United States"]
58 },
59 
60 "watchlist": {
61 "enabled": true,
62 "personas_per_company": 3,
63 "person_filters": {
64 "person_titles": ["VP of Operations", "Head of Customer Service"],
65 "person_seniority": ["vp", "director", "c_suite"]
66 },
67 "tiers_to_watch": [1, 2]
68 },
69 
70 "mode": "standard",
71 "max_pages": 50
72}
73```
74 
75## Approval Gate
76 
77**CRITICAL: Never export results without explicit user approval.**
78 
79**Required flow:**
801. Search Apollo for a small sample first (~100 companies)
812. Score them and present: tier distribution, example Tier 1/2 companies, scoring sanity check
823. **Get explicit user approval** before running the full build
834. Only then run the full search + score + export
84 
85## Pipeline: Build Mode
86 
87```
88Step 0: --preview → total count + cost estimate (no DB writes)
89Step 1: --sample --test → search 1 page, score in-memory, show results (no DB writes)
90Step 2: User reviews sample → approves, adjusts filters, or caps scope
91Step 3: Full build → Apollo Company Search → Export to CSV → Score → Tier → Watchlist
92```
93 
94Phase details (Step 3 only — after user approval):
95```
96Phase 1: Apollo Company Search → Upsert raw companies → Score ICP fit → Assign tiers
97Phase 2: (skipped in build mode — no prior data to deprecate)
98Phase 3: Persona Watchlist — pull 2-3 personas per Tier 1-2 company (free)
99```
100 
101## Pipeline: Refresh Mode
102 
103```
104Phase 1: Apollo Company Search → Upsert/update companies → Re-score → Detect tier changes
105Phase 2: Deprecation — companies missing 2+ consecutive refreshes get deprecated
106Phase 3: Persona Watchlist — pull personas for new/promoted Tier 1-2 companies,
107 disqualify personas at deprecated companies
108```
109 
110## ICP Scoring (0-100)
111 
112Pure function, no API calls. Weighted scoring across 5 dimensions from config:
113- `employee_count_fit` — headcount in target ranges?
114- `industry_fit` — industry matches targets?
115- `funding_stage_fit` — funding stage in targets?
116- `geo_fit` — HQ location in target geos?
117- `keyword_match` — org keywords overlap config keywords?
118 
119Score thresholds (configurable): >=75 = Tier 1, >=50 = Tier 2, else Tier 3.
120 
121## Deprecation Rules (refresh only)
122 
123- First miss (not returned by search): `metadata.refresh_miss_count = 1`, keep active
124- Second consecutive miss: `tam_status = 'deprecated'`
125- Employee count drops to 0: immediate deprecation
126- Companies with `tam_status = 'converted'` are always exempt
127 
128## Watchlist — Persona Sync
129 
130| Scenario | Behavior |
131|----------|----------|
132| New Tier 1-2 company | Pull 2-3 personas immediately |
133| Company promoted Tier 3→2 | Pull personas during refresh |
134| Company deprecated | Disqualify monitoring personas |
135| Company demoted Tier 1→3 | Keep existing personas, stop refreshing |
136 
137## Mode Caps
138 
139| Parameter | Test | Standard | Full |
140|-----------|------|----------|------|
141| Max pages | 1 | 50 | 200 |
142| Max companies | 100 | 5,000 | 20,000 |
143 
144## Apollo API Reference
145 
146- **Company Search:** `POST https://api.apollo.io/api/v1/mixed_companies/search` — Returns matching companies in the `accounts` array (not `organizations`). Fields: `name`, `primary_domain`, `estimated_num_employees`, `industry`, `keywords`, `city`, `state`, `country`.
147- **People Search:** `POST https://api.apollo.io/api/v1/mixed_people/search` — **$0.01 flat per call** (cheapest people search). Returns matching people in the `people` array. Fields: `first_name`, `title`, `organization.name`. Email/LinkedIn obfuscated on free tier.
148- **People Match (enrich):** `POST https://api.apollo.io/api/v1/people/match` — ~$0.03 per match. Reveals email, phone, LinkedIn URL, full name.
149- **Auth:** `x-api-key: {APOLLO_API_KEY}` header on all requests
150- **Pagination:** `per_page` (max 100), `page` (1-indexed). `pagination.total_entries` gives total count.
151 
152## Output
153 
154Save results as CSV to the current working directory:
155- `tam-companies-{date}.csv` — All discovered companies with ICP score and tier
156- `tam-personas-{date}.csv` — Persona watchlist for Tier 1-2 companies (from People Search)
157 
View all files on GitHub →

Details

Updated
Sep 21, 2026
License
MIT
Stars on the repo
★ 1,220
Checked
Source
gooseworks-ai/goose-skills ↗
Creator
gooseworks-ai · 206 listings
View creator

Made with tam-builder

Tam builder — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)
Tam builder — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)

by gooseworks-ai

Similar skills

See all →
SkillAct as the company research engine for /sales research <urlCompany Research & Firmographic Analysiszubair-trabzada/ai-sales-team-claude · by zubair-trabzadaYou are the company research engine for /sales research <url>. You produce deep, structured intelligence on a prospect company covering 8…★ 1.4k GitHub starsSkillEthical people-finding and identity verificationPrivateinvestigatordanielmiessler/LifeOS · by danielmiesslerEthical people-finding and identity verification via parallel research agents across people-search sites, social media, public records, and reverse phone/email/image/username lookups, with confidence-scored results requiring 3+ matching identifiers. USE WHEN find person, locate person, reconnect, lost contact, old friend, reverse phone lookup, who owns this email, reverse image search, find by username, verify identity, people search, public-data background check, who is this caller. NOT FOR structured due-diligence or company/entity intelligence investigations, or general web research synthesis (use Research).★ 19.3k GitHub starsSkillFree People Search to discover ICP-matching leadsApollo lead findergooseworks-ai/goose-skills · by gooseworks-aiTwo-phase Apollo.io prospecting: free People Search to discover ICP-matching leads, then selective enrichment to reveal emails/phones (credits per contact). Creates Apollo lists. Deduplicates against existing contacts by LinkedIn URL.★ 1.2k GitHub starsSkillFind decision-makers at a specific company using ApolloCompany contact findergooseworks-ai/goose-skills · by gooseworks-aiFind decision-makers at a specific company using Apollo, Crustdata, Fiber, and PDL people search via Gooseworks MCP. Given a company name and target titles, returns a list of contacts with name, title, LinkedIn URL, and location.★ 1.2k GitHub starsSkillFind company funding history, investorsCompany funding searchgooseworks-ai/goose-skills · by gooseworks-aiFind company funding history, investors, and investment details★ 1.2k GitHub starsSkillFull company intelligence reportCompany Intelligence - Comprehensive Company Reportsgooseworks-ai/goose-skills · by gooseworks-aiFull company intelligence report - overview, team, funding, products, news★ 1.2k GitHub stars

More from gooseworks-ai

SkillMine the highest-converting ad angles from customer reviewsAd angle minergooseworks-ai/goose-skills · by gooseworks-aiMine the highest-converting ad angles from customer reviews, Reddit complaints, support tickets, and competitor ads. Extracts actual pain language, competitor weaknesses, and outcome phrases that real buyers use. Outputs a ranked angle bank with proof quotes and recommended ad formats per angle.★ 1.2k GitHub starsSkillAnalyze ad campaign performance data to identify what'sAd campaign analyzergooseworks-ai/goose-skills · by gooseworks-aiAnalyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's working, what's wasting budget, and specific cut/scale/test recommendations. Runs statistical analysis, funnel diagnostics, and multi-channel budget reallocation with specific dollar-amount shift recommendations and scenario modeling.★ 1.2k GitHub starsSkillFor paid lead-gen and participant-recruitment adsAd lead quality analyzergooseworks-ai/goose-skills · by gooseworks-aiFor paid lead-gen and participant-recruitment ads, replaces vanity CPA with true CAC per qualified lead by joining ad-platform data with downstream funnel events, surfaces tracking gaps, and classifies every creative into Scale / Keep / Investigate / Cut.★ 1.2k GitHub starsSkillAnalyze the message match between your ads and landing pagesAd to landing page auditorgooseworks-ai/goose-skills · by gooseworks-aiAnalyze the message match between your ads and landing pages. Checks if the promise in the ad copy carries through to the landing page headline, body, and CTA. Flags disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.★ 1.2k GitHub starsSkillCheck and improve your brand's visibility across AI searchAeogooseworks-ai/goose-skills · by gooseworks-aiCheck and improve your brand's visibility across AI search engines (ChatGPT, Perplexity, Gemini, Grok, Claude, DeepSeek). Set up tracking, run visibility analyses, audit your website for AI readability, and get actionable recommendations. Uses the npx goose-aeo@latest CLI.★ 1.2k GitHub starsSkillSearch Amazon products - find items, compare pricesAmazon Product Searchgooseworks-ai/goose-skills · by gooseworks-aiSearch Amazon products - find items, compare prices, read reviews★ 1.2k GitHub stars