agentleFS
guerrilla2799guerrilla2799/ops-and-scale-os/skills/icp-scoring-engine/SKILL.md

icp-scoring-engine

Skill1 starsChanged 3 months agoMITView on GitHub

Use when the user says "build a scoring model", "ICP score", "lead scoring", "our score doesn't work", "fit and intent", "which accounts should reps work", "MQL threshold", "prioritize this list". Builds fit and intent as separate axes, fits thresholds to the real distribution, and runs the discrimination test before shipping. Writes workspace/data/scoring-model.md.

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 5 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    No scoring model exists

    line 12
  2. Distinctive:

    Never blend them into one number.

    line 27
  3. Distinctive:

    No band holds more than half the list

    line 57
  4. Distinctive:

    If the test fails, the usual cause is a criterion that correlates with being in the database rather than with buying.

    line 79
  5. Distinctive:

    Every band needs a destination, including the bottom one, where the destination is suppression.

    line 89

≈ “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

ICP Scoring Engine

Score fit and intent separately, set thresholds from the actual distribution, and prove the model separates outcomes before anybody routes on it.

When to use

  • No scoring model exists
  • A model exists and sales ignores it, which is the most common case
  • Routing decisions need a priority signal
  • Threshold review, quarterly

Inputs

  • Reads: workspace/data/universe.csv enriched, workspace/data/object-model.md
  • Needs from user: last year's closed-won and closed-lost account lists, current model if any, and the weekly account capacity of the team that will work the output

The capacity number is required. A model whose top band exceeds what the team can work is not a prioritization.

Workflow

1. Score fit and intent as two separate axes

Never blend them into one number. A perfect-fit account with no activity and a bad-fit account browsing pricing produce the same average, and that average routes both to the same place.

Fit (10 points), the account's structural suitability:

CriterionPoints
In target industry or vertical2
Correct size band, employees or revenue2
Trigger event present2
Budget authority identifiable in the committee2
Competitive alternative confirmed, including status quo2

Intent, separately, time-decayed. Comes from signal-pipeline. Weight by proximity to a purchase decision, and decay by age.

2. Read the quadrants, do not average them

High intentLow intent
High fitWork now. This is the whole point of the modelNurture and warm. The largest quadrant and the most neglected
Low fitInspect before acting. Usually a competitor, a student, or a job seekerSuppress. Do not spend on this

Each quadrant gets a different motion. That is the output of a scoring model, not a ranked list.

3. Score the existing database before setting any threshold

This is the step that gets skipped and it is the reason most models fail.

Score everything you already have, then look at the distribution. Set thresholds so that:

  • The top band is a volume the team can actually work in a week
  • No band holds more than half the list
  • The bottom band is genuinely suppressible

Thresholds come from the distribution, not from the design meeting. A threshold chosen before you see the spread produces the 78%-in-one-band failure, where the field still populates and nobody looks at it.

4. Run the discrimination test

Non-negotiable before shipping.

Take last year's closed-won accounts    → score with the new model
Take last year's closed-lost accounts   → score with the new model
Compare the distributions
Lift, top band vs bottomVerdict
Over 3xShip it
2 to 3xUsable. Note which criterion is doing the work
Under 2xDo not ship. The model is decoration
Under 1.5xSomething is inverted. Check the criteria individually

If the test fails, the usual cause is a criterion that correlates with being in the database rather than with buying. Drop criteria one at a time and re-run.

5. Write the routing table

A score with no routing rule changes nothing.

Score band → what happens, who owns it, in what timeframe

Every band needs a destination, including the bottom one, where the destination is suppression.

6. Refit quarterly

Distributions shift as the market and the list change. A threshold set once is right for one quarter. Put the refit on a calendar and run the discrimination test again each time.

Output

  • Writes: workspace/data/scoring-model.md, scored list with both axes as separate columns
  • Uses: templates/icp-scoring-rubric-template.md
  • Prints: the rubric, the actual distribution, the chosen thresholds with their justification, the discrimination test result, and the routing table

Rules & quality bar

  • Fit and intent never blend into one number
  • Score the existing database before setting thresholds
  • No band over 50% of the list
  • Top band sized to real team capacity
  • Discrimination test runs before shipping. Under 2x lift means do not ship
  • Every band has a routing destination, including suppression
  • Refit quarterly, with the test re-run

Related skills

  • Requires: enrichment-waterfall, signal-pipeline for the intent axis
  • Hands off to: lifecycle-and-routing
  • See also: docs/metrics.md for scoring health metrics

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.