Skip to content
SlashClone

Tam builder

@gtmengineer/tam-builder

Define your ICP and size the market from a companies CSV (a CRM export or any company list). Applies market filters for SAM, scores every company into A, B, and C tiers with reasons, values each layer with ACV by size band, and writes a tiered account list ready for territories or outbound.

SkillDatav1.0.0 (latest)Tested
Activity
New: be the first to try it

Real output from this kit

How this works

  1. It is a skill: written instructions Claude reads when your request matches what the skill is for. You do not call it by name; just ask for the task.
  2. While it works, it reads and changes files in the places it lists, nowhere else.
  3. It runs these commands on your computer: node scripts/tam.mjs.
  4. Nothing runs until you choose to use it, and you can remove it any time.

SKILL.md

TAM builder

Makes the ICP concrete enough to count. Hard filters define the market you can serve; a points score ranks fit inside it; ACV by size band turns counts into dollars. Every account gets a tier and the reasons, so sales can see why.

When to use

  • Planning: territory design, headcount, board or fundraising market slides.
  • Building or re-tiering a target account list for outbound or ABM.
  • Not a market research report. The answer is only as good as the company list; say so.

Inputs

  1. Companies at data/companies.csv: a CRM company export, a data provider list, or a merged file. Needs an employee count. Uses name, domain or website, industry, country, and any other column the score refers to (technologies, funding stage, growth). Column names are matched loosely (Number of Employees, Country/Region, Website all work). Employee ranges like 51-200 use the midpoint; 2000+ uses 2000.
  2. ICP at data/icp.json (start from the kit's examples/icp.json):

    • market: hard filters. countries (2-letter codes; common country names are converted), employees_min, employees_max, industries (allow list) and or exclude_industries.
    • score: rules with field, op (in, not_in, ==, contains_any, exists, between, >=, <=), value, points, and a readable label.
    • tiers: minimum score per tier. target_tiers: which tiers count as the target (default the top two).
    • bands: employee size bands with max and acv (annual value per customer). The last band has no max.

If the user has no ICP yet, interview them first: best 10 customers and what they share, deals lost on fit, segments they cannot serve (country, regulation, size), and ACV by size. Turn the answers into the JSON and show it back before running.

Steps

  1. Build or confirm data/icp.json. Check the ACVs against real deals if the user has them.
  2. Run:

    node scripts/tam.mjs data/companies.csv data/icp.json --out out --name tam
  3. Read out/tam.json. Report TAM, SAM, target, the tier split, and the top reasons companies fall out of market.
  4. Sanity checks to raise with the user:

    • Large "no employee count" or "no country" numbers: enrich before trusting the sizing.
    • A tier with almost everyone in it: the score is too generous. Suggest raising a threshold or adding a rule.
    • Tier A with very few companies: fine for ABM, too small for a whole team's quota. Show the math (accounts per rep).
  5. Point to out/tam-accounts.csv (sorted by fit, with reasons) as the list for territories or outbound.

Output to the user

**TAM 15 companies ($440,000/yr). SAM 9 ($296,000). Target tiers A and B: 6 companies ($203,000).**

| Tier | Companies | Annual value |
| --- | ---: | ---: |
| A | 4 | $135,000 |
| B | 2 | $68,000 |

Out of market: 3 outside US, CA, GB; 2 under 50 employees; 1 government.
1 company has no employee count. Accounts list: out/tam-accounts.csv

Guardrails

  • Dollar figures are count times ACV: a planning number, not a forecast. Say this whenever you share them.
  • Do not add companies or fill in missing data from memory. Missing data is reported, not guessed.
  • Never score on protected or sensitive attributes of people. This kit scores companies.

README.md

TAM builder

Turns your ideal customer profile into numbers. From a list of companies it works out the total market, the part you can serve, and the best-fit accounts, puts a dollar value on each layer, and gives every company a tier with the reasons.

Who it is for

Founders, GTM engineers, and RevOps teams sizing a market, planning territories, or building a target account list from a CRM export or a company list.

Example

Input: examples/companies.csv (15 companies) and examples/icp.json (North America and UK, 50 to 10,000 employees, no government; points for software and financial services, 200 to 2,000 employees, a CRM in the tech stack, growth-stage funding, and headcount growth).

Output (out/tam.md):

LayerCompaniesAnnual value
TAM15$440,000
SAM9$296,000
Target (A, B)6$203,000

Plus a size band by tier table, why companies fell out of market, and out/tam-accounts.csv with every company's tier, score, and reasons.

What it can access

  • Runs node scripts/tam.mjs (Node built-ins only, no network).
  • Reads data/ (plus the kit's own examples/), writes data/ and out/.

Setup

None. Put your company list in data/companies.csv and your ICP in data/icp.json.

Files

  • README.md
  • SKILL.md
  • examples/companies.csv
  • examples/icp.json
  • kit.json
  • scripts/tam.mjs

Did it work?

0worked for them0did not work

Sign in to say whether it worked for you.

Nobody has said yet. Tried it? Tell the next person.