agentleFS
guerrilla2799guerrilla2799/ops-and-scale-os/skills/tam-and-sourcing/SKILL.md

tam-and-sourcing

Skill1 starsChanged 3 months agoMITView on GitHub

Use when the user says "how big is our TAM", "source my market", "build the universe", "pull a list of companies", "market sizing", "where do we find these accounts", "we need more accounts in the funnel". Sizes the addressable universe, then pulls it in cost-controlled pages with dedup against what already exists. Writes workspace/data/universe.csv.

The file

We split this skill into the rules it gives an agent

9 rules. About 0 are common, 8 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If a filter cannot be expressed as a field, it is a qualification criterion for later, not a sourcing filter.

    line 41
  2. Distinctive:

    Run a count-only query first.

    line 45
  3. Distinctive:

    Before pulling, compute the overlap:

    line 60
  4. Distinctive:

    Never a single unbounded pull.

    line 73
  5. Distinctive:

    Pull identifiers only at this stage: Do not enrich during sourcing.

    line 81
  6. Very specific:

    Use whatever is available for free at this stage: employee count, industry match strength, geography, existing relationship, known …

    line 87
  7. Distinctive:

    Every row carries where it came from and when.

    line 91
  8. Distinctive:

    Size before pulling: Always. Counting is free

    line 98
  9. Distinctive:

    Reconcile against CRM and suppression first: Never pay for what you own

    line 100

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

TAM and Sourcing

Turn a market definition into a deduplicated, sized, prioritized universe. Sizing first, pulling second, and never the reverse.

When to use

  • Standing up a program and nobody knows how many accounts exist
  • A segment expansion decision needs a denominator
  • The current list is too small to hit a pipeline number and you need to know whether more exist
  • Territory planning

Inputs

  • Reads: workspace/data/object-model.md, workspace/data/suppression.csv (both required)
  • Needs from user: the segment definition in firmographic terms, geography, the exclusions, and the current account list

Do not run this without the object model. Sourcing into an undefined model produces a universe you cannot dedup.

Workflow

1. Write the segment definition as filters

Vague segment definitions produce unusable universes. Convert prose into filters.

"Mid-market SaaS in North America" is not a definition. This is:

Industry:        <specific codes or categories, listed>
Employee count:  <range>
Revenue:         <range, or a proxy>
Geography:       <countries, or regions>
Business model:  <B2B, subscription, etc.>
Technology:      <required stack signals, if any>
Excluded:        <competitors, resellers, staffing, agencies, franchises>

If a filter cannot be expressed as a field, it is a qualification criterion for later, not a sourcing filter. Note it and move on.

2. Probe the size before pulling anything

Run a count-only query first. Sizing costs nothing and pulling costs money.

Then react to the number:

Universe sizeReadingAction
Under 200Very tight, possibly too tightConfirm the filters are not accidentally excluding. Consider widening one dimension
200 to 2,000The workable band for account-based workProceed. Full enrichment is affordable here
2,000 to 20,000Too large to treat individuallyAdd a prioritization dimension before pulling. Pull the top tier only
Over 20,000The segment is not a segmentGo back to step 1. Something is wrong with the definition

A universe larger than your team can work is a definition problem, not a capacity problem. Adding a filter is cheaper than enriching 20,000 records you will never touch.

3. Reconcile against what you already have

Before pulling, compute the overlap:

Universe size                 n
Already in CRM                n   (matched on normalized key)
On the suppression list       n
Net new to source             n   ← the only number that should be pulled

Teams routinely pay to source records they already own. The reconciliation is one join and it is always worth doing.

4. Pull in pages, with a ceiling

Never a single unbounded pull.

Page size:        500 rows
Ceiling:          <stated before starting>
Fields at pull:   identifiers and firmographics only

Pull identifiers only at this stage. Do not enrich during sourcing. Sourcing establishes existence, enrichment fills detail, and they have completely different cost profiles. Mixing them means paying enrichment prices on records that will be disqualified thirty seconds later.

5. Prioritize before handing off

The universe is not a work list. Add a coarse priority so enrichment runs on the top of the list first.

Use whatever is available for free at this stage: employee count, industry match strength, geography, existing relationship, known technology fit. A three-band split is enough. Precision comes later in icp-scoring-engine.

6. Record the provenance

Every row carries where it came from and when. Without provenance you cannot tell a stale 2024 pull from a fresh one, and you will re-source records you already have.

Output

  • Writes: workspace/data/universe.csv with provenance columns
  • Prints: the filter definition, the probe count, the reconciliation table, rows actually pulled, spend, and the priority band distribution

Rules & quality bar

  • Size before pulling. Always. Counting is free
  • Identifiers only at sourcing. Enrichment is a separate, gated step
  • Reconcile against CRM and suppression first. Never pay for what you own
  • Every pull is capped. State the ceiling before starting
  • Provenance columns on every row: source, query, date
  • A universe over 20,000 means the definition is wrong. Say so rather than pulling it

Related skills

  • Requires: data-model-and-sync
  • Hands off to: data-hygiene, then enrichment-waterfall, then icp-scoring-engine
  • See also: docs/cost-model.md

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.