Build a near-complete company list for any ICP by learning how your real customers label themselves, pulling every industry and keyword they use, judging every single row with a cheap AI model (Jev…

MITAuto-check passed

Install Perfect Company List

skills CLI
$ npx skills add growthenginenowoslawski/coldoutboundskills --skill perfect-company-list -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install growthenginenowoslawski/coldoutboundskills perfect-company-list --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/perfect-company-list .claude/skills/perfect-company-list && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
perfect-company-list
GitHub stars
753
Token cost
~1.9k tokens
SKILL.md length
924 words
Files
3 (incl. scripts)
Skills in repo
49
Repo updated
First seen
Licence
MIT

At a glance

Build a near-complete company list for any ICP by learning how your real customers label themselves, pulling every industry and keyword they use, judging every single row with a cheap AI model (Jev…

  • Works in 5 steps: Learn from your customers → Pull every industry and keyword → Judge every row → …
  • A database filter feels too narrow
  • SKILL.md covers The workflow, Checking yourself, Gotchas we hit and Files
  • Runs Python scripts from its folder; calls python; needs TYPESAFE_API_KEY

What it does

Perfect Company List is an agent skill from growthenginenowoslawski/coldoutboundskills. Build a near-complete company list for any ICP by learning how your real customers label themselves, pulling every industry and keyword they use, judging every single row with a cheap AI model (Jev or gpt-5-nano), and running a Claygent lookalike loop until it runs dry. The method from the SCULPT 2026 talk "Build the perfect company list". Use when a database filter feels too narrow or too noisy, when someone says "find every company like our customers", "our TAM looks too small", or "why is this list full of…

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `clay-workflow.md` and `scripts/jev_judge.py`).

It works with OpenAI and LinkedIn. The repository describes itself as: Open-source Claude Code skills for cold email and outbound sales. Grade campaigns, export Prospeo searches, scrape Google Maps — all from Claude Code. The licence is MIT.

When your agent uses it

  • A database filter feels too narrow
  • Someone says find every company like our customers
  • Our TAM looks too small
  • Why is this list full of junk

Example prompts

  • “Build the perfect company list”
  • “find every company like our customers”
  • “our TAM looks too small”
  • “/perfect-company-list”

Requirements

  • Python 3
  • A credential in TYPESAFE_API_KEY

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Learn from your customers
  2. Pull every industry and keyword
  3. Judge every row
  4. Loop with Claygent
  5. Stop when it runs dry

What it can do on your machine

Read from SKILL.md and the folder at commit 25c5d85. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • TYPESAFE_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Perfect Company List loads about 1.9k tokens when it runs. Until then it costs about 136 tokens; SKILL.md has 924 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~136
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from growthenginenowoslawski/coldoutboundskills at commit 25c5d85, republished under its MIT licence (© growthenginenowoslawski). 924 words, ~1,909 tokens.

Download SKILL.mdSave it as .claude/skills/perfect-company-list/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
perfect-company-list
description
Build a near-complete company list for any ICP by learning how your real customers label themselves, pulling every industry and keyword they use, judging every single row with a cheap AI model (Jev or gpt-5-nano), and running a Claygent lookalike loop until it runs dry. The method from the SCULPT 2026 talk "Build the perfect company list". Use when a database filter feels too narrow or too noisy, when someone says "find every company like our customers", "our TAM looks too small", or "why is this list full of junk".

Perfect company list

Database filters fail in two directions at once.

  • They miss real fits. Industry labels are self-reported, or guessed: many LinkedIn company pages carry the banner "This listing was automatically created by LinkedIn", which means nobody at the company picked the label. We found an FDIC bank listed as Construction, an SEC-registered wealth manager listed as Semiconductor Manufacturing, and a New Jersey school district listed as Retail Luxury Goods and Jewelry.
  • They pull in junk. A plain Banking + United States filter returned 16,895 companies. About 10,500 of them were not banks: 3,679 mortgage companies and lenders, 2,414 credit unions, 2,210 dead sites or unrelated businesses (a Toyota dealer, a pawn and gun shop, a youth soccer club), 839 vendors that sell to banks, and the Federal Reserve Bank of St. Louis.

The fix is not a better filter. It is: use filters to cast a wide net, and use AI to decide who is in it. Judging is now cheap enough that pulling five times too many companies costs almost nothing.

The workflow

1. Learn    your customers  -> the industries and keywords they actually use
2. Pull     every one of those industries + keywords (keep size and geo tight)
3. Judge    every single row with one ICP question
4. Loop     Claygent finds lookalikes of your fits -> dedupe -> same judge -> repeat
5. Stop     when 20 runs in a row add one company or fewer
1. Learn from your customers

Put your customer list (or dream accounts) through Clay's Enrich Company and record, per customer:

  • the LinkedIn industry they self-selected
  • keywords in their description and job posts
  • headcount and HQ geography (the fields databases get right)

Then tally the industries. In our bank demo, 50 known banks used as the "customer list" came back 43 Banking, 4 Financial Services, 2 blank and 1 Telecommunications. You pull all four.

2. Pull every industry and keyword

If even one customer shows up under an industry, pull every company in that industry inside your size and geography band. Add keyword searches over name and description ("bank", "school district", "wealth management") with no industry filter, which is how blank-industry records get in.

Keep headcount and geography tight. Keep industries wide open. You will pull a lot of junk. That is the point.

3. Judge every row

One question per company, yes or no. Write it so the edge cases are decided in the criteria, not left to the model:

text
Question: Is this company a bank or savings institution that takes deposits and would be
          FDIC-insured (commercial bank, community bank, savings bank, thrift, trust bank)?
Yes:      A deposit-taking bank or thrift (FDIC-insured type)
No:       Anything else: credit union, mortgage lender, fintech, broker, wealth manager,
          insurance, payments, consultancy, bank software vendor, bank holding company with
          no bank, association

Run it with scripts/jev_judge.py (Jev, standard library only):

bash
TYPESAFE_API_KEY=... python scripts/jev_judge.py pulled.csv judged.csv \
  --question "Is this company a bank or savings institution that takes deposits?" \
  --yes "A deposit-taking bank or thrift" \
  --no  "Anything else: credit union, lender, fintech, vendor, association"

It sends 20 companies per request as one shared state with one question per company, which keeps you under Jev's default 1,200 requests per minute. On a 60-row canary, batched and one-at-a-time answers agreed on 51 of 54 rows. Canary 50 to 100 rows before you run the whole pull.

Any cheap model works for this step. What it costs to judge 10 million companies at ~350 input tokens each, minimal reasoning:

ModelCost for 10M
GPT-6 Luna$375 to $450 (batch: $188 to $225)
gpt-5-nano$195 to $255 (batch: $98 to $128)
Jevabout $147 (output tokens are free)

Leave reasoning on and output tokens dominate: $1,000 to $3,000 for the same job.

4. Loop with Claygent

Take companies you have judged as fits and ask Claygent: "these companies fit our ICP, find more like these that we might have missed." For each result:

  1. Check the domain against everything you have already judged. Skip it if you have seen it.
  2. Run anything new through the same judge question.
  3. New fits become the next seeds.
5. Stop when it runs dry

Stop when 20 runs in a row add one company or fewer. In our demos the loop was still adding about one company per run at 150 runs, so also set a budget cap.

Show full SKILL.md (353 more words)Show less

Checking yourself

When a public registry exists, score against it. Registries are complete lists you can match on:

RegistryCount (Sept 2026)Has websites
FDIC BankFind (active insured banks)4,23198%
SEC investment adviser roster (US)14,86360% list a real website
NCES district directory (New Jersey)668 districtsyes

Results from our runs, normal filter = every LinkedIn industry label that fits, industry only:

ListNormal filterThis process
FDIC banks3,356 (79%)3,718 (88%)
SEC advisers4,636 (31%)13,621 (92%)*
NJ school districts360 (54%)532 (80%)

* The SEC number counts every firm found anywhere in the data stack, including exact-name matches in a second database, because 2,729 advisers list no usable website on the SEC roster.

Gotchas we hit

  • Match on every website a registry lists. The SEC roster CSV shows only the first URL, which is often an Instagram or LinkedIn link. The full IAPD XML feed has all of them; switching added 1,263 matches that were already in our list.
  • Enrichment providers mis-join. One provider mapped mariner.com to a nursing home's LinkedIn page and tagstonecapital.com to a nail salon's. Verify any label you plan to quote on the live page.
  • Registries go stale too. Some "missing" companies had a parked domain on the registry but a live site elsewhere. Search the name before you call something unfindable.
  • Some entities are not companies. Separate bank charters of big brands, fund GP shells and tiny banks with no website exist in registries and nowhere else. No database will have them.

Files

FileWhat it is
SKILL.mdthis method
clay-workflow.mdthe three Clay workflows (learn, judge, loop) built from the clay CLI
scripts/jev_judge.pybatch judge for a CSV with Jev

Verification: the method, numbers and gotchas above come from runs on 2026-09-27 against FDIC, SEC and NCES registries (more than 900,000 company judgments across the demos, about $12 of Jev in total). scripts/jev_judge.py was run on a 40-row sample (40 in / 2 fit). The Clay workflow in clay-workflow.md is a specification: it has not been built and published end to end.

Related: list-expander (seed fingerprinting and filter mining), list-builder (multi-source lanes), icp-prompt-builder.

© growthenginenowoslawski, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (scripts) in skills/perfect-company-list of growthenginenowoslawski/coldoutboundskills.

  • SKILL.md
  • clay-workflow.md
  • scripts/jev_judge.py

Open the folder on GitHubat commit 25c5d85

Compare with similar skills

Perfect Company List next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Perfect Company List compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Perfect Company List this skillgrowthenginenowoslawski/coldoutboundskills753—~1.9kAutomated safety check: PassMIT
Marketing OsYuzzyuk/marketing-os540—~2.5kAutomated safety check: PassMIT
Ad Creativecoreyhaines31/marketingskills54k—~6.3kAutomated safety check: PassMIT
CarouselsTheCraigHewitt/skills159—~2.3kAutomated safety check: PassMIT
Linkedin Profile OptimizerBrianRWagner/ai-marketing-claude-code-skills441—~3.8kAutomated safety check: PassNone
Ad Creativeaiskillstore/marketplace433—~5.2kAutomated safety check: PassNone

Similar skills

  • Marketing Os

    Yuzzyuk/marketing-os

    A complete marketing department in one skill. An agent skill from Yuzzyuk/marketing-os.

    540 GitHub stars~2.5k tokensUpdated 1 mo ago
    Marketing & SEOAuto-check passed
  • Ad Creative

    coreyhaines31/marketingskills

    When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, or full ad variations — for any paid advertising platform.

    54k GitHub stars~6.3k tokensUpdated 2 days ago
    Marketing & SEOAuto-check passed
  • Carousels

    TheCraigHewitt/skills

    Turns a piece of Craig's content (an email, a YouTube script, an essay, or pasted text) into a polished image carousel publishable to both LinkedIn and Instagram from one set of 1080x1350 slides.

    159 GitHub stars~2.3k tokensUpdated 4 mo ago
    Media & CreativeAuto-check passed
  • Linkedin Profile Optimizer

    BrianRWagner/ai-marketing-claude-code-skills

    Audit and rewrite your LinkedIn profile to attract the right people.

    441 GitHub stars~3.8k tokensUpdated 6 mo ago
    Business, Finance & HRAuto-check passed
  • Ad Creative

    aiskillstore/marketplace

    When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, or full ad variations — for any paid advertising platform.

    433 GitHub stars~5.2k tokensUpdated yesterday
    Marketing & SEOAuto-check passed
  • SEO Geo Optimizer

    NeverSight/learn-skills.dev

    Comprehensive SEO/GEO/AEO analysis toolkit for optimizing content visibility across traditional search engines (Google, Bing), AI platforms (ChatGPT, Perplexity, Claude, Gemini, Grokipedia), answer…

    217 GitHub starsUsed in 1 repo~2.6k tokens
    Marketing & SEOAuto-check passed

More from growthenginenowoslawski/coldoutboundskills

All 49 skills in this repo
  • Email Deliverability Audit

    growthenginenowoslawski/coldoutboundskills

    Diagnostic audit for a running cold email program. An agent skill from growthenginenowoslawski/coldoutboundskills.

    753 GitHub stars~3.4k tokensUpdated 5 days ago
    Auto-check passed
  • Icp Onboarding

    growthenginenowoslawski/coldoutboundskills

    Conversational intake for cold email campaigns. An agent skill from growthenginenowoslawski/coldoutboundskills.

    753 GitHub stars~1.9k tokensUpdated 5 days ago
    Auto-check passed
  • List Builder

    growthenginenowoslawski/coldoutboundskills

    META skill — build the largest possible qualified lead list for any request, end to end.

    753 GitHub stars~4.7k tokensUpdated 5 days ago
    Auto-check: notes
  • Auto Research Public

    growthenginenowoslawski/coldoutboundskills

    Autonomous cold email campaign launcher. An agent skill from growthenginenowoslawski/coldoutboundskills.

    753 GitHub stars~2.9k tokensUpdated 5 days ago
    Auto-check passed
  • Blitz List Builder

    growthenginenowoslawski/coldoutboundskills

    Use the Blitz API to find decision-makers at specific companies when you already have a list of company domains.

    753 GitHub stars~2k tokensUpdated 5 days ago
    Auto-check passed
  • Deliverability Test Public

    growthenginenowoslawski/coldoutboundskills

    Compare reply rates, bounce rates, and positive reply rates broken down by inbox type (SMTP / Gmail / Outlook) for a Smartlead account.

    753 GitHub stars~1k tokensUpdated 5 days ago
    Auto-check passed

Works with

Questions about Perfect Company List

What does Perfect Company List do?

Build a near-complete company list for any ICP by learning how your real customers label themselves, pulling every industry and keyword they use, judging every single row with a cheap AI model (Jev…. Perfect Company List is an agent skill from growthenginenowoslawski/coldoutboundskills. Build a near-complete company list for any ICP by learning how your real customers label themselves, pulling every industry and keyword they use, judging every single row with a cheap AI model (Jev or gpt-5-nano), and running a Claygent lookalike loop until it runs dry.

When should I use Perfect Company List?

Perfect Company List fits situations like: A database filter feels too narrow; someone says find every company like our customers; our TAM looks too small; why is this list full of junk.

How do I install Perfect Company List in Claude Code?

Run `npx skills add growthenginenowoslawski/coldoutboundskills --skill perfect-company-list -a claude-code`. Or copy the skill folder (skills/perfect-company-list in growthenginenowoslawski/coldoutboundskills) into .claude/skills/perfect-company-list in your project. Claude Code loads it when a task matches its description.

How do I install Perfect Company List in Codex?

Run `npx skills add growthenginenowoslawski/coldoutboundskills --skill perfect-company-list -a codex`. Or copy the skill folder (skills/perfect-company-list in growthenginenowoslawski/coldoutboundskills) into .agents/skills/perfect-company-list in your project. Codex loads it when a task matches its description.

Can I use Perfect Company List in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add growthenginenowoslawski/coldoutboundskills --skill perfect-company-list -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/perfect-company-list, .gemini/skills/perfect-company-list, .github/skills/perfect-company-list and .opencode/skills/perfect-company-list in your project.

What does Perfect Company List need to run?

Going by SKILL.md and its folder, Perfect Company List needs Python for the scripts in its folder, the command-line tools its instructions call (python) and credentials named TYPESAFE_API_KEY. Our summary lists: Python 3; A credential in TYPESAFE_API_KEY.

Does Perfect Company List access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Perfect Company List safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Perfect Company List use?

Perfect Company List is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Perfect Company List use?

About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Perfect Company List?

Skills that share tags, products or a category with Perfect Company List: Marketing Os (Yuzzyuk/marketing-os, 540 stars), Ad Creative (coreyhaines31/marketingskills, 54k stars), Carousels (TheCraigHewitt/skills, 159 stars) and Linkedin Profile Optimizer (BrianRWagner/ai-marketing-claude-code-skills, 441 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Perfect Company List?

growthenginenowoslawski (a GitHub user) maintains it in growthenginenowoslawski/coldoutboundskills, which has 753 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 5, 2026.

Source: growthenginenowoslawski/coldoutboundskills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.