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
- 1{
- 2 "name": "tam-builder",
- 3 "owner": "gtmengineer",
- 4 "version": "1.0.0",
- 5 "type": "skill",
- 6 "description": "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.",
- 7 "category": "data",
- 8 "license": "MIT",
- 9 "compat": [
- 10 "claude-code"
- 11 ],
- 12 "permissions": {
- 13 "shell": [
- 14 "node scripts/tam.mjs"
- 15 ],
- 16 "files": {
- 17 "read": [
- 18 "./data/**"
- 19 ],
- 20 "write": [
- 21 "./data/**",
- 22 "./out/**"
- 23 ]
- 24 }
- 25 },
- 26 "tests": {
- 27 "cases": [
- 28 {
- 29 "name": "TAM, SAM, and tiers with country names, ranges, and exclusions",
- 30 "inputs": {
- 31 "data/companies.csv": "Company Name,Website,Industry,Employees,Country,Technologies,Funding Stage,Headcount Growth (%)\nNorthwind Traders,northwind.example,Software,350,United States,salesforce; slack,Series B,18\nContoso Robotics,contoso.example,Manufacturing,1200,Germany,hubspot,Series C,6\nFabrikam Health,fabrikam.example,Healthcare,4200,US,salesforce,Private equity,3\nTailspin Toys,tailspin.example,Retail,45,US,shopify,Seed,25\nLitware,litware.example,Software,12,Canada,hubspot,Seed,40\nAdventure Works,adventure.example,Software,600,United Kingdom,salesforce; hubspot,Series C,22\nWide World Importers,wideworld.example,Logistics,250,GB,,Bootstrapped,2\nProseware,proseware.example,Software,51-200,US,hubspot,Series A,30\nCoho Winery,coho.example,Food and beverage,80,France,,Bootstrapped,1\nLucerne Publishing,lucerne.example,Media,150,US,salesforce,Series B,12\nWoodgrove Bank,woodgrove.example,Financial services,9000,US,salesforce,Public,4\nAlpine Ski House,alpine.example,Hospitality,,Switzerland,,Bootstrapped,\nCity Power and Light,citypower.example,Government,3000,US,salesforce,,0\nTrey Research,trey.example,Financial services,900,Canada,hubspot,Series B,15\nMargie's Travel,margies.example,Software,2000+,US,salesforce,Series D,9\n",
- 32 "data/icp.json": "{\n \"name\": \"Mid-market B2B software and fintech, North America and UK\",\n \"market\": {\n \"countries\": [\"US\", \"CA\", \"GB\"],\n \"employees_min\": 50,\n \"employees_max\": 10000,\n \"exclude_industries\": [\"Government\", \"Education\"]\n },\n \"score\": [\n { \"field\": \"industry\", \"op\": \"in\", \"value\": [\"Software\", \"Financial services\"], \"points\": 30, \"label\": \"Core industry\" },\n { \"field\": \"employees\", \"op\": \"between\", \"value\": [200, 2000], \"points\": 25, \"label\": \"200 to 2,000 employees\" },\n { \"field\": \"technologies\", \"op\": \"contains_any\", \"value\": [\"salesforce\", \"hubspot\"], \"points\": 20, \"label\": \"Uses a CRM we integrate with\" },\n { \"field\": \"funding_stage\", \"op\": \"in\", \"value\": [\"Series B\", \"Series C\", \"Series D\"], \"points\": 15, \"label\": \"Growth-stage funding\" },\n { \"field\": \"headcount_growth\", \"op\": \">=\", \"value\": 10, \"points\": 10, \"label\": \"Headcount growing 10%+\" }\n ],\n \"tiers\": [\n { \"name\": \"A\", \"min_score\": 75 },\n { \"name\": \"B\", \"min_score\": 50 },\n { \"name\": \"C\", \"min_score\": 25 }\n ],\n \"target_tiers\": [\"A\", \"B\"],\n \"bands\": [\n { \"name\": \"SMB\", \"max\": 199, \"acv\": 8000 },\n { \"name\": \"Mid-market\", \"max\": 999, \"acv\": 25000 },\n { \"name\": \"Enterprise\", \"acv\": 60000 }\n ]\n}\n"
- 33 },
- 34 "checks": [
- 35 {
- 36 "type": "command_exits_zero",
- 37 "command": "node scripts/tam.mjs data/companies.csv data/icp.json --out out"
- 38 },
- 39 {
- 40 "type": "file_exists",
- 41 "path": "out/tam-accounts.csv"
- 42 },
- 43 {
- 44 "type": "file_contains",
- 45 "path": "out/tam-accounts.csv",
- 46 "text": "Proseware,proseware.example,Software,US,126,SMB,B,60"
- 47 },
- 48 {
- 49 "type": "output_matches_schema",
- 50 "path": "out/tam.json",
- 51 "schema": {
- 52 "type": "object",
- 53 "required": [
- 54 "tam",
- 55 "sam",
- 56 "target",
- 57 "by_tier"
- 58 ],
- 59 "properties": {
- 60 "tam": {
- 61 "type": "object",
- 62 "properties": {
- 63 "companies": {
- 64 "const": 15
- 65 },
- 66 "dollars": {
- 67 "const": 440000
- 68 }
- 69 }
- 70 },
- 71 "sam": {
- 72 "type": "object",
- 73 "properties": {
- 74 "companies": {
- 75 "const": 9
- 76 },
- 77 "dollars": {
- 78 "const": 296000
- 79 }
- 80 }
- 81 },
- 82 "target": {
- 83 "type": "object",
- 84 "properties": {
- 85 "companies": {
- 86 "const": 6
- 87 },
- 88 "dollars": {
- 89 "const": 203000
- 90 }
- 91 }
- 92 },
- 93 "by_tier": {
- 94 "type": "object",
- 95 "properties": {
- 96 "A": {
- 97 "type": "object",
- 98 "properties": {
- 99 "companies": {
- 100 "const": 4
- 101 }
- 102 }
- 103 }
- 104 }
- 105 },
- 106 "missing_data": {
- 107 "type": "object",
- 108 "properties": {
- 109 "employees": {
- 110 "const": 1
- 111 }
- 112 }
- 113 }
- 114 }
- 115 }
- 116 }
- 117 ]
- 118 },
- 119 {
- 120 "name": "HubSpot-style headers and no market filters",
- 121 "inputs": {
- 122 "data/co.csv": "Company name,Company Domain Name,Industry,Number of Employees,Country/Region\nA Co,a.example,COMPUTER_SOFTWARE,500,United States\nB Co,b.example,RETAIL,20,United States\n",
- 123 "data/icp.json": "{\"score\":[{\"field\":\"industry\",\"op\":\"in\",\"value\":[\"computer_software\"],\"points\":50}],\"tiers\":[{\"name\":\"A\",\"min_score\":50}],\"bands\":[{\"name\":\"Small\",\"max\":99,\"acv\":5000},{\"name\":\"Large\",\"acv\":20000}]}"
- 124 },
- 125 "checks": [
- 126 {
- 127 "type": "command_exits_zero",
- 128 "command": "node scripts/tam.mjs data/co.csv data/icp.json --out out"
- 129 },
- 130 {
- 131 "type": "output_matches_schema",
- 132 "path": "out/tam.json",
- 133 "schema": {
- 134 "type": "object",
- 135 "properties": {
- 136 "sam": {
- 137 "type": "object",
- 138 "properties": {
- 139 "companies": {
- 140 "const": 2
- 141 },
- 142 "dollars": {
- 143 "const": 25000
- 144 }
- 145 }
- 146 },
- 147 "target": {
- 148 "type": "object",
- 149 "properties": {
- 150 "companies": {
- 151 "const": 1
- 152 },
- 153 "dollars": {
- 154 "const": 20000
- 155 }
- 156 }
- 157 }
- 158 }
- 159 }
- 160 }
- 161 ]
- 162 }
- 163 ]
- 164 }
- 165}
