A media list is built in one register and sent from another. Between the two, the list gets smaller — sometimes by a factor of five — and the interesting question is not why, but when you find out.

Two numbers, and only one of them is real#

The number a filtered register shows you is a count of matching records. It is a real count of a real thing, and it is not the number of people who will receive your announcement.

The second number is what is left after audience resolution: the recipients who still have a deliverable address, have not opted out, have not already been contacted about this, and are not a mailbox we inferred rather than observed. A list of four thousand resolving to a few hundred is ordinary. It is only alarming if you meet the second number for the first time on the send screen.

What subtraction actually removes#

Every removal has a reason, and the reasons are not interchangeable:

  • Suppressed. The global do-not-send list — a bounce, a complaint, an explicit request. An operator opt-out here beats any later automated verdict; somebody who asked to be left alone is not re-added because a vendor re-scored their address.
  • Unsubscribed. They received something before and used the one-click link that every recipient row carries.
  • Bounced. The mailbox rejected mail. A fact about delivery, not about interest.
  • Already contacted. Included in an earlier send in the same campaign. Not a permanent removal — a scheduling one.
  • Pattern-guessed. An address inferred from a domain convention rather than observed. Usable, but not the same evidence as one we found published.
  • Academic journal. A publication that is a journal rather than a newsroom. Almost never the right recipient for a launch, and almost always a large fraction of a broad subject filter.

Reading that breakdown is usually more useful than the total. Two hundred lost to unsubscribed says something about your previous campaign. Two hundred lost to academic journal says your subject filter was too broad. The same shortfall, two entirely different next actions.

Why the same arithmetic has to run twice#

The count quoted while planning and the count on the send screen come from the same function.

That sounds like an implementation detail and is not. Two code paths producing two counts is how a product loses an operator’s trust in one afternoon: the planning number is generous, the send number is honest, and from then on neither is believed. Once the numbers can disagree, the only safe assumption is that both are wrong.

A match is evidence, not a prediction#

A filter match means an outlet has covered this kind of subject, or a journalist’s byline has appeared under it. It does not mean they will write about you.

Records vary in freshness. Desks move, beats change, and a byline from eighteen months ago is a weaker claim than the same byline from last month. A name that matters to the pitch is worth checking against the outlet’s own page before anything is built on it.

The corpus refuses to hide that unevenness. A wrong classification is invisible until somebody builds an audience on it, so unclassified stays unclassified rather than being guessed into a category — which is why a filter sometimes returns fewer outlets than you expected. That is the evidence being honest, not the database being thin. It is the same principle set out in the method.

What this costs the people in the corpus#

The discipline runs in both directions. Journalists did not ask to be in a database, so contact data is gated, unpublished and unindexed, the planning model is handed counts and vocabulary rather than people, and an objection is a stop rather than a preference — the terms are set out in full for the people it describes.

Every one of those constraints removes names from lists. That is the point. A list you can defend is shorter than a list you cannot, and the shortening is the work.

A subtraction you can read is information. A subtraction you cannot is a surprise, and surprises arrive after the send.