Blog / Data / No.014

We rejected 379 companies for every one we contacted

Six months of running Knockwire against our own business, with every refusal counted and filed under the gate it failed. The ratio is real. About a third of it turns out to be data cleaning rather than judgment.

Mohamad · KnockwireJuly 28, 202611 min readData

Between 27 January and 26 July 2026 we pointed Knockwire at our own business, Crawlbase, and kept a written reason for every rejection it made. The pipeline read 4,182 companies, turned down 4,171 of them, and delivered 11 knocks. That is 379 rejections for every message a human approved, and the ratio is only worth publishing because we can say what each rejection was.

Most outbound tooling reports the numerator. We built this thing to report the denominator, because the denominator is where the honesty sits. What follows is the six month version: what was read, what was turned down, at which gate, and the two places where our own reasoning was weaker than the headline makes it look.

01What 4,171 refusals were actually made of

Every candidate passes through gates in a fixed order and stops at the first one it fails. So the chart below is not a set of overlapping reasons. Each company appears exactly once, filed under the first thing that disqualified it.

WHAT 4,171 REFUSALS ACTUALLY WERENot a real company1,447Not a buyer2,190No reason to write now367No legitimate door122Not allowed to knock45
One row per company, filed at the first gate it failed. 4,182 read, 4,171 turned down, 11 knocked.

Two gates do almost all of the work. "Not a buyer" is the largest bucket at 2,190, and it is the gate we trust most, because a company can be real, healthy, reachable and still have no reason on earth to pay for scraping infrastructure. "Not a real company" is second at 1,447, and it is the one that turned out to be a problem for us rather than for the candidates.

"No reason to write now" is a timing gate rather than a fit gate. 367 companies were plausible buyers with nothing in the previous ninety days worth writing about: no new target site, no hiring for a data team, no public complaint about blocks. A message with no reason attached is precisely the thing we are trying not to send, so they wait.

The last two buckets are small, they total 167 companies, and they are by a wide margin the most expensive rejections in the set. That is the second half of this post.

02A third of what we called judgment was input hygiene

1,447 of the 4,171 rejections, just under 35 per cent, were not judgments about a business at all. They were the pipeline discovering that the thing it had read was not a business.

  • No resolvable website, or a domain that stopped answering somewhere between the source last indexing it and the night we read it.
  • A GitHub organisation belonging to one person, with a bio written in the first person plural and a payroll of zero.
  • A name collision. The source returned a real trading company, just not the one whose product the description was written about.
  • A parked domain, a holding page, or a registrar placeholder sitting where a product used to be.
  • An entry already marked dead upstream that we read anyway, because we had not yet wired the status field through from the directory.

None of that is discernment. It is data cleaning. Counting it inside a selectivity ratio is a way of taking credit for the current state of the public internet, and we have been quietly doing exactly that in conversation for months.

So here is the honest version of the headline. Against companies that were genuinely trading at the moment we read them, we read 2,735, turned down 2,724, and knocked 11. That is roughly 1 in 250. The 379 figure is a true count of rows, and it is also inflated by about a third by work that any competent crawler does before breakfast.

A ratio that flatters you is usually measuring the state of your input, not the quality of your judgment.

We are keeping both numbers on the record rather than choosing the better one. The first describes the pipeline end to end. The second describes the decision, and only the second is a claim anybody should argue with us about.

MethodEvery figure here is a count of rows the pipeline wrote between 27 January and 26 July 2026. Nothing is a projection, an estimate, or a sample scaled up. One tenant (Crawlbase), one ICP definition, four discovery sources. A company read more than once in the window is counted once, at its first rejection. Your own ratio will differ from ours, and if it comes out far lower we would want to read the reasons before believing it.

03The expensive rejections are the near misses

A rejection at the first gate costs a DNS lookup. A rejection at the fourth costs everything spent getting there: the fit read, the timing read, the research pass, and the human attention that goes with reviewing any of it.

Exactly 178 companies reached the door gate, meaning they cleared the reality check, cleared fit, and cleared timing. Of those, 122 had no legitimate door, 45 we were not allowed to knock, and 11 became knocks. Those 167 near misses are companies we wanted to write to and could not.

"No legitimate door" means we could not find a public contact route we were willing to use. Usually that is a support portal sitting behind a login, a ticketing system open only to existing customers, or a form that exists to collect CVs. Occasionally it is a company with no contact page at all, which in 2026 reads as a decision rather than an oversight.

"Not allowed to knock" is our own policy firing rather than the market rejecting us: a jurisdiction excluded by default, a domain already sitting on the tenant suppression list, or a per domain cap already spent for the month.

The obvious optimisation is to check the door first and stop paying for research nobody uses. We tried it and put it back. Door discovery is the most expensive read in the pass, and running it across 4,182 candidates instead of 178 costs considerably more than the research it saves. The near miss is a real cost and it is still the cheaper ordering.

There is a second reason to leave the order alone. A near miss is documented. When a company clears fit and timing and then fails on the route, we end up with a written list of businesses we would have written to and could not reach, which is more useful to us than four thousand rejections at gate one will ever be. Those 122 are the closest thing we have to a demand signal.

04What we refuse to do to make this number look better

Every item below would raise the knock count this quarter. We do none of them, and the refusals are enforced in the pipeline rather than written on a values page.

  • We do not guess an email address when there is no form. If the only route we can construct is a pattern matched inbox at a domain, the company is turned down for no legitimate door and stays turned down.
  • We do not solve CAPTCHAs. A protected form is a stated preference, and the job parks in needs_review for a human. That is the designed behaviour, not a fallback.
  • We do not knock into Germany or Italy by default, because their rules require prior consent even between businesses. A tenant can change that policy deliberately and in writing, and the change is recorded.
  • We do not send a second message into a domain inside the cap window, including when the first one reached the wrong person.
  • We do not deliver anything a human has not read. Drafts stay drafts. A draft is not a knock and we never report it as one.

Email sending is not part of this pipeline at all. It is scheduled for Q4 2026 and it stays marked as unbuilt until it ships. All 11 knocks in this dataset went through a contact form the target company published itself.

The temptation with a ratio like 379 to 1 is to treat it as the achievement. It is not. The achievement, such as it is, is that for any of the 4,171 we can produce the gate it failed and the sentence explaining why, six months after the fact. A refusal you cannot explain afterwards is not a standard. It is a mood.

Knockwire reads the internet, throws out the companies that will never buy from you, and knocks on the doors of the ones that will. Run it on your own domain and read your own refusals.

Run it on my siteAll posts