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.
- Activity
- New: be the first to try it
- Installs
- 0 installs
- Likes
- 0 likes
- Clones
- 0 clones
What it makes
Real output from this kit
- Sample file2 KB, download to openTam accountsFrom the kit's tests
- Sample file2 KB, download to openTamFrom the kit's tests
- Sample file935 bytes, download to openTamFrom the kit's tests
How this works
- 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.
- While it works, it reads and changes files in the places it lists, nowhere else.
- It runs these commands on your computer: node scripts/tam.mjs.
- 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
- 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,Websiteall work). Employee ranges like51-200use the midpoint;2000+uses 2000. ICP at
data/icp.json(start from the kit'sexamples/icp.json):market: hard filters.countries(2-letter codes; common country names are converted),employees_min,employees_max,industries(allow list) and orexclude_industries.score: rules withfield,op(in,not_in,==,contains_any,exists,between,>=,<=),value,points, and a readablelabel.tiers: minimum score per tier.target_tiers: which tiers count as the target (default the top two).bands: employee size bands withmaxandacv(annual value per customer). The last band has nomax.
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
- Build or confirm
data/icp.json. Check the ACVs against real deals if the user has them. Run:
node scripts/tam.mjs data/companies.csv data/icp.json --out out --name tam- Read
out/tam.json. Report TAM, SAM, target, the tier split, and the top reasons companies fall out of market. 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).
- 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.csvGuardrails
- 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):
| Layer | Companies | Annual value |
|---|---|---|
| TAM | 15 | $440,000 |
| SAM | 9 | $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 ownexamples/), writesdata/andout/.
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.
