A list cut without reasons is cut again next quarter. Scored by Claude Code with reasons in fields, every company is kept or archived once, in writing.
A thousand rows and a sore thumb. Every company opened by hand, judged in a glance, and cut or kept with nothing written down about why. For a forty-person agency the reason lives in the memory of whoever did the cutting.
By hand today
“There are ~1,000 companies in my ideal customer profile… it’s just a total O(N^2) pain to clean and aggregate it”
dyim, on Hacker News
That is a founder with a thousand companies and no way to cut the list except by hand. The technical phrase in the middle means the pain grows faster than the list does: every new row has to be checked against every rule.
The hire who does this stage is told to pre-qualify before passing anything on, and to check specific facts first. The advert does not say where the answer should be written, so it is written nowhere. A company is cut, and a quarter later somebody researches it again, because the reason for the cut left with the person who made it.
What it costs you each week
About 33 hours to read a thousand companies by eye at two minutes each, before anyone has been written to. Then again next quarter, because nothing was written down the first time.
Source: modelled. A thousand companies, from the quote above, at two minutes a company
No sourced hour count exists for this stage, so the figure above is a model, and the assumption is shown so you can swap in your own list size and your own pace. Scoring templates exist, weighting industry, size, technology, place and signals, but a method still has to be run over every row by someone, with the result written where it can be read again.
The hidden cost is the repeat. A list cut without reasons is cut again next quarter, by a different edge.
The build
Open Claude Code. Score with reasons. Research goes in fields, never in a note. A score out of a hundred, with the reasons beside it. A company that fails a gate is kept too, archived with the gate named, so nobody researches it twice.
Open Claude Code in the engine folder, where market.yml and companies.csv from the listing run sit. Then say what you want:
Read market.yml and companies.csv. For every company, fetch its website and
fill the research fields: fit with the market from nought to ten, how likely
they are to answer a cold approach on the same scale, the source and date of
each, a confidence of high, medium or low, and a flag for anything doubtful,
such as a stale page or a headcount that is only a band. Then score each
company from nought to a hundred against the market, with two or three
reasons in plain words. Apply the never-contact rule in market.yml as a
gate: a company that fails it is scored below the archive floor with the
gate named. Never write a score for a company you could not research.
Write kept.csv and archived.csv, each row with its reasons, and report the
counts.
What comes back is a run over the list and two files. kept.csv holds the companies that fit, each with a score and its reasons. archived.csv holds the rest, each with the reason it left: a failed gate, a headcount outside the band, a site that no longer exists. Nothing is deleted. Load both into the CRM, because the archive is what stops the same company being researched twice.
The report says how many were kept, how many archived, and how many could not be researched at all. Those are shown as not scored, and a person decides whether to look by hand or leave them.
The pattern is the assembly line ArkOne runs on its own CRM. docs/crm-module.md lines 148 to 168 set the rule that research goes into fields, never into a note: a fit score, a reply score, a source, a confidence and a flags line, then a judgement from nought to a hundred written with its reasons through crm_score_project_account. A failed company is loaded too, with a low fit and a flags line naming the gate it failed, so it archives itself with the reason attached. The scout that feeds it writes a Reason column on every shortlist row and a disqualified.csv with every rejection and its named cause (.claude/agents/prospect-scout.md lines 77 to 78 and 89).
What it feeds
Finding the right person. The next stage looks for one name at each company kept. It starts from a list that has already said why. The number to read: kept against archived, each with a reason. A company nobody scored says not scored, never nought.
The next stage finds the one person at each kept company who can say yes. It spends time only on companies that passed for a written reason, which is what makes the time worth spending.
Two numbers prove this stage worked. The first is companies kept against companies archived, and every archived row must carry its reason. The second is a check rather than a count: a company nobody has scored shows as not scored, never as a nought (docs/crm-module.md line 370). A nought is a judgement; a blank is honest.
What stays with a person
The borderline company. Fits on paper, fails in fact. Passes the headcount, fails the never-contact rule. One fact unknown. A person writes the score on that one, with the reasons, and the machine keeps the rest.
The tool scores the clear cases. The borderline ones come back to a person. A company that passes every size and sector edge and then fails the never-contact rule, because it already sells what you sell. A company with one fact missing, scored with lower confidence and a flag saying which fact. A company that fits on paper and, on reading its site, plainly does not.
A person writes the score on those, with the reasons, in the same fields the machine uses. The next run reads the ruling and does not ask again.
The tools you already pay for
Nothing new to buy.
CRM gains the research fields and the score with its reasons, on every company, kept or archived.
Browser is driven by the tool, which reads each company site for the facts no directory carried.
Spreadsheet holds the archive with its reasons, so no company is researched twice.
Every company kept for a written reason, and every one archived for one too. Then the right person can be found.
Ask: For the companies you cut from your list last quarter, could anyone on your team say today why?
The filter here is chapter 3 of twelve, after listing every company and before finding the one person who can say yes. The book, Building a real outbound engine with Claude Code and Codex, end to end, runs the whole engine in order, one chapter per stage. A free starter edition for firms under fifty people is coming through the 100k programme.

