SKILL
icp-scoring✓ APPROVED

Turn a pile of accounts into a stack rank with a reason on every row.

Fair across channels, blank fields never scored as zero, with a why behind each account's score.

Inside: The three score modes, the gates and escalators, and per-account reasoning.

01 / HOW TO USE

Install it in one line, or paste it in.

1
In Claude Code (one command)
Copy the install line, paste it into your terminal, and restart Claude Code. The skill installs itself to ~/.claude/skills/ and runs automatically when it is relevant.
2
In Claude, ChatGPT, or a Project (no terminal)
Open the file, then upload it to your chat or paste its contents in. A skill is just a markdown file of instructions, so any capable AI can follow it.
New to skills? A skill is a plain-text file that teaches your AI a workflow. Point any capable assistant at it and it follows the steps, on your data.
02 / MAKE IT YOURS

Connect your context. Set it to your motion.

CONNECT YOUR CONTEXT · AND WHY IT HELPS
a CRM

it reads your account fields automatically, across the whole list.

enrichment tools

fills the gaps (firmographics, technographics, hiring, contacts) so more signals are present per account.

a product-analytics tool

adds live usage as a boost on accounts already in your product.

SET IT TO YOUR MOTION

This was built for a B2B SaaS org scoring accounts across mixed acquisition channels. Set these to your stack:

Score on the signals you actually have. The skill does not care whose weights they are; point it at your ICP evidence, not anyone else's.

Set thisWhat it isDefault / Example
SIGNAL LIBRARYthe signals you score onsize bandtech stackhiringwebsite CTAusageintent
GATEShard caps applied before rankingemail-stack fairnessICP disqualifierno-sales-motion
WEIGHTShow much each signal countsevidence-weightedrenormalized over the signals that are filled
ESCALATORSbounded additive boosts on top of the base rankproduct usage +6 / +12buyer intent +8 / +15
TIERSthe score bandsHot >=80 / Warm 65-79 / Watch 50-64 / DQ <50
STRIKE_BANDthe action cutoff (work these first)>=90
03 / THE FULL SKILL

Everything the skill does, in full.

WHAT THIS DOES

Reads a list of accounts and gives each one a fit score and a rank, with the reasoning spelled out per account: what pushed it up, what held it back, and what you could not see. It blends many signals into one number without letting the signal you happen to have the most of drown out the ones you have less of. The output is a stack rank you can work top-down, plus a short "why this score" on every row.

THE METHOD
  1. 1
    Score modes (pick by lifecycle, never by channel)

    Three modes read one signal library: NEW-BUSINESS (accounts you have not sold), EXPANSION (current customers), WIN-BACK (churned accounts). Mode is chosen by commercial state. Channel segments an account inside a mode, it never picks the mode and it is never a scoring input.

  2. 2
    Layer 0: gates

    Hard caps applied before any ranking. Examples: an email-stack fairness multiplier so an account on a provider that fits your motion is not penalized against one that does not; an ICP disqualifier cap when a hard "not our fit" signal is present; a "no sales-motion fingerprint" cap. Gates answer yes/no questions from the cheapest source first. A DNS MX lookup for the email stack costs nothing and covers every domain, so it beats a paid field.

  3. 3
    Layer 1: base rank, renormalized over the signals you have

    score = SUM(weight x value x filled) / SUM(weight x filled). Only the signals actually present count toward the denominator, so a missing enrichment field is never scored as a zero. A Coverage stamp caps the score and says so when too little is filled. This is the channel-fair core: every account is ranked on its own present signals, and the highest-fill signal cannot dominate the rest.

  4. 4
    Layer 2: escalators (bounded, additive)

    Product usage and buyer intent add points on top. They add, they never multiply, because multiplying saturates the ceiling and buries the base rank. Example bands: product usage +6 for a foothold, +12 for real depth; buyer intent +8 for one in-market person, +15 for two or more. Disqualified accounts get their boosts capped low so a gate is never bought back by usage.

  5. 5
    Reasoning per account ("why this score")

    Every row ships with its evidence in order: the live escalators first (usage, intent, the outreach hook), then the fit case (tech-stack match, hiring, a displaceable competitor, a talk-to-sales CTA), then the qualifiers, then the caveats stated plainly (disqualifier cap, coverage cap, unknown-stack haircut). A score is never delivered without its evidence.

QUALITY GATES
  • No score without its per-component reasoning. Every row explains itself.
  • Missing signals are renormalized out, never scored as zero.
  • A Coverage stamp rides on every account; a thin account is flagged, not silently ranked next to a fully-enriched one.
  • Weights change only through a pre-registered lift test, never a hunch. A new signal enters at weight zero, shadow-scores, earns its weight, then gets promoted.
  • Recompute a handful of scores by hand every run; they must match the machine.
OUTPUT (EXAMPLE)
EXAMPLE OUTPUT
ICP STACK RANK - 8 accounts
Account      Score  Tier    Why
Acme Corp    92     Hot     CRM in stack + hiring 3 sales roles + demo CTA; 12 weekly users
Vertex       78     Warm    Right size + hiring; no product usage yet
Blend Labs   64     Watch   Fits size band; thin coverage (2 of 6 signals)
Northwind    38     DQ      Disqualifier cap: not our motion

Work first (>=90 strike band):
  1. Acme Corp. Product foothold plus in-market this week. Lead with the usage hook.
WHERE THE NUMBERS COME FROM

The weights, the +6 / +12 escalator bands, and the tier cutoffs (Hot / Warm / Watch / DQ) are defaults from one team's win/loss backtest, not laws. They fit that team's motion. If your ICP is different, re-fit them on your own closed cohort. The layering logic (gate, renormalize over filled, add bounded boosts) is the part that carries over; the exact numbers are yours to earn.

EXAMPLE CHAT
EXAMPLE CHAT
You
Score this list of 8 accounts and give me a stack rank I can work top-down.
CLAUDE
Ranked, gated, and every row has its reasoning. Account Score Tier Why Acme Corp 92 Hot CRM in stack + hiring 3 sales roles + demo CTA; 12 weekly users Northwind 38 DQ Disqualifier cap: not our motion The thing worth catching: Blend Labs scored 64 on 2 of 6 signals filled, which is the coverage cap doing its job, a thin account never gets to hide next to a fully-enriched one at the same score. One sharpener: connect an enrichment tool so accounts like Blend Labs get scored on their real signals instead of getting capped by what's missing.
04 / GO FURTHER

Where an operator takes this next.

The rank is step one. Here is where an operator takes it once the manual version proves out.

You built the rank once, now it stays current without anyone re-running it by hand.

01
Rescore the pipeline nightly

Point a scheduled Claude task at Salesforce and your enrichment stack, and write the score, tier, and reasoning back to each account record every night.

02
Alert on the strike band only

Send a Slack DM to the account owner the moment an account crosses the >=90 strike threshold, so the hottest accounts get worked same-day.

03
Backtest the weights on a real cohort

Pull closed-won and closed-lost from Snowflake or Salesforce quarterly and re-fit the escalator bands against what actually converted, instead of leaving them frozen at launch defaults.

05 / PART OF A BIGGER PLAY

One skill is the on-ramp.

GET NEW SKILLS IN YOUR INBOX

One operator-built skill a week. Free.