A few months ago I bought a list of 500 people. Real names, real companies, real links. On the screen it looked very good.
Then I sat down to find out which of them were worth a message.
You open the first row. You read the profile. You open the company website. You think for a minute. You decide. If you do it properly, that is 5 to 10 minutes for one person.
At row 30 I was tired. And here is the honest part. After row 30 I was not really checking anything. I was guessing.
A bigger list does not solve this. It only gives you more rows to guess.
This is how most people check a list:
You open the profile
You read the short bio
You look at the last few posts
You decide by feeling, and in the middle of the list your feeling is tired
But the checking is not the difficult part. You already know what a good client looks like. The problem is that the rules are only in your head. So you are the only person who can use them, and you can only use them for about 30 rows.
Write the rules down one time, and a machine can do the first pass for you. It sorts the list. You still decide.
What you get from this article
This article is the overview. At the end of it you will know:
What you are building, in simple words
The one field that decides if it works at all
The 4 rules that decide if you can trust the answer
How the whole thing works, in one picture
An empty template of the skill, for you to fill in with your own rules
One thing you can do by hand today, in 10 minutes, with no tools
Number 6 is not a small extra. It is the most difficult part of the whole system, and you can do it before you build anything.
Let’s start.
1. What you are building
You are writing a short file. It says 3 things: who you want, who you never want, and how to put a row into 1 of 3 piles.
The 3 piles are simple. Message this person. Look at this one yourself. Delete this one.
That is all. No dashboard, no tool, no API key.
In Claude this file is called a skill. It has 3 fields: a name, a description, and the instructions.
I know, this sounds boring. Please stay with me for one minute, because the difference between those last 2 fields is the most important thing here.
Step 1 done.
2. The one field that decides if it works
The description is one paragraph. Claude keeps it in every conversation you have.
The instructions are the long part with your real rules. Claude does not read them at all until the description matches what you just typed.
Please read that again, because nobody tells you this part.
That one paragraph decides if the long part is ever read.
So this is what happens to most people. They write 2,000 careful words in the instructions. Then they write “scores leads” in the description and they stop there. They give Claude a list, Claude answers with normal advice about lead qualification, and they think the skill is broken.
The skill was fine. Claude never opened it.
So write the description with the words you really use on a Monday morning. Put the real sentences in it: “score these leads”, “which of these should I message”, “who do I contact first”, “is this person worth my time”. Five or six of them.
Then test it in an honest way. Open a completely new chat. Never say the name of the skill. Give it a list and write normally. If the answer sounds like a normal chatbot, your description is too general, and that is the field to fix, not the instructions.
Step 2 done.
3. The 4 rules that decide if you can trust the answer
A machine can give you a clean, confident, well organised table that is completely wrong. These 4 rules protect you from that table.
1. Ask for the reason before the number.
One simple sentence about what matched and what did not. Then the number. Never in the other order.
If the number comes first, everything after it is only an excuse for that number, and a model will always find one. It looks like a small detail about format. It is really the difference between an answer you can check and an answer you can only believe.
2. Ask it to open the real page.
A company name tells you almost nothing. Many names on any list could be software, or consulting, or a building company, and you cannot know from the name. The model cannot know either, but it will still choose one.
So write it in simple words: open the company website, open the person’s profile, read both, and never describe a page you did not open.
This is also where most bad rows fail. A company on a list you bought can be closed. The website shows a parked page for sale, or a casino, or a completely different business. In the row it looks perfect. On the homepage you see the truth in 2 seconds.
3. Never let it invent a fact.
If it cannot find the revenue, the honest answer is “I cannot tell”, and “I cannot tell” must count as a no.
Put that sentence in the instructions with those exact words. If you do not, the model quietly fills the empty space with something that sounds correct, and then you write to a person because of a number that nobody ever checked.
4. Ask for the counts.
Rows in. Copies removed. How many went into each pile. How many websites did not open.
You want these numbers because rows disappear silently. You give it 500 and it scores 460, and nothing tells you that 40 people are missing.
The counts also tell you about your list, not only about the run. If almost everything comes back as “message this person”, your rules are too soft. If a large part of the list fails because of dead websites, your problem is not the scoring. Your problem is where the rows came from.
Step 3 done.
4. How the whole thing works, in one picture
Look at where the human is. Not at the start, reading 500 rows. At the end, looking at a short pile.
That is the whole idea. You are not automating the decision. You are automating the reading.
Step 4 done.
5. The template you can copy
Here is the skill, empty. The structure is real and it works. The parts in < > are yours to write, because they are the parts nobody can write for you.
Skill name
lead-scorerDescription. Remember section 2. This field decides if the rest is ever read, so put your real words in it.
Scores a list of leads against the user's ICP and deal-breakers. Takes a CSV or a pasted list of people with their links, opens each company website and each person's profile in the browser, reads both, then gives every lead a verdict: MESSAGE, CHECK or DELETE, with a one-line reason. Use when the user pastes or uploads a lead list, a CSV, or profile URLs, or says "<your phrase 1>", "<your phrase 2>", "<your phrase 3>", "<your phrase 4>", "<your phrase 5>".Instructions
You score lead lists. You do not find leads and you do not write messages.
You sort what you are given and you show your work.
## Stage 1: Get the rules
Ask the user for 2 things before you score anything.
The ICP, 5 lines:
1) <job title>
2) <company type>
3) <company size>
4) <location>
5) <money: how old the company is, and revenue>
The deal-breakers, up to 5 lines. Facts that end it whatever the score is:
<deal-breaker 1>
<deal-breaker 2>
<deal-breaker 3>
Repeat both back in one short paragraph and wait for a yes before you score.
## Stage 2: Read the list
Say how many rows you read before you score anything.
Never fill in a field that is missing.
Never decide what a company does from its name alone.
Remove copies and say how many you removed.
## Stage 3: Open the real pages
For every row, open the company website and the person's profile. Read both.
If a page does not open, say so on that row in plain words.
Never describe a page you did not open.
If you cannot find something, the answer is "I cannot tell", and
"I cannot tell" counts as a no.
## Stage 4: Score
First the deal-breakers. If one of them is true, the row is out.
Write which one and move on. Do not score it.
Then score what is left against the 5 ICP lines.
Write the reason BEFORE the number. Never the other way round.
<your top score> MESSAGE
<your middle score> CHECK
<anything lower> DELETE
## Stage 5: Give back the counts
Rows read: X
MESSAGE: X CHECK: X DELETE: X
Which deal-breakers fired, and how many times each
Copies removed: X
Pages that would not open: X
Then a table, MESSAGE first:
name | company | verdict | what matched | what failed
Then tell me the most common reason rows were deleted. And if MESSAGE is
more than half the list, say so plainly.
## What you never do
- Never write outreach messages
- Never move a lead up a pile to be helpful
- Never give a verdict without the reason next to it
- Never claim you opened a page that did not open
- Never tell me a list is good. Tell me what is in it.Fill in the 5 ICP lines, your deal-breakers, your 5 phrases and your 3 score levels, and you have a working scorer today. It will not be perfect on the first run. That is normal, because the third run is the one you trust anyway.
If you want the filled-in version instead of the empty one, the paid edition this week has the exact build I use: my deal-breakers written out, the scoring rule with the real numbers, and the complete file with nothing removed. It also has what happened when I ran it on 25 real leads from my own list, and the result was not good for me.
Step 5 done.
6. Where your rows come from is as important as the scoring
A weak list is still weak after you score it. Nothing in that file can change what is already dead.
A list you buy as a single CSV file is the cheapest and usually the most dead. Companies close, people change jobs, and nobody updates the file you paid for.
Sales Navigator and Apollo cost more and give you pages that a real person still updates. Clay is a different job. It fills the empty columns on rows you already have, so you use it later, not first.
Choose one and stay with it for a few months. Two sources you know a little are worse than one source you know well.
And be careful here. A live page is not the same as the right company. A business that started last year updates its profile every week, and it is still a no if you only work with older companies. Fresh and correct are 2 different problems.
Step 6 done.
Do this today: your 3 delete-on-sight facts
By hand. Before you build anything.
Write down the 3 facts that make you delete a lead immediately, even when the rest of the row looks good.
One fact about the company, something anyone can check from outside
One fact about the person
One fact about the row, for example a missing or guessed email address
Every fact must be checkable. “Not ambitious enough” is not checkable. “The website does not open” is.
Then open the 10 newest rows on your list, and delete every row where one of your 3 facts is true.
If none of them is ever true, they are too soft, and you should rewrite them. A rule that never says no is not a rule.
This takes 10 minutes and it costs nothing. Most people never do it. It also does the most work for you later, because the same 3 lines go directly into the file when you build it.
Is this useful for you?
I publish one of these every week, free. The paid edition has the full build.
Finding people is cheap now, and every year it gets cheaper. Reading the list and finding the 3 people who deserve a real message from you costs the same as it always did.
Writing the rules down one time does not remove that job. It only stops the reading from growing every time your list grows.
Talk soon,
Ilya




