I wrote a while back about why lists usually matter more than copy. The obvious follow-up question is: okay, so how do you actually build a list around a real problem instead of a firmographic guess? Here's the framework I use, stripped down to the parts that generalize beyond my own outreach at Studio Utexo.
Step 1: Define a problem you can prove, not describe
"Could use better marketing" is a description. It applies to almost every business and can't be verified without a conversation. "Site takes 7.2 seconds to load on mobile" is a proof — it's a specific, checkable fact about the world that either is or isn't true, and you can show it. The framework depends on starting from problems in the second category, because they're the only ones you can lead with evidence instead of assertion.
Good proof-based problems share three traits: they're externally observable, they're specific enough to be falsifiable, and they connect obviously to a business outcome the recipient already cares about — lost sales, wasted ad spend, missed calls.
Step 2: Score, don't just filter
A binary filter (has this problem / doesn't) throws away information. A scored approach — weighting severity, business impact, and how fixable the problem looks from outside — lets you rank a list by expected response rate rather than treating every match equally. A business with three stacked problems should sit above a business with one minor issue, even though both technically "match."
Step 3: Layer in timing
A problem that's been present for two years is a weaker signal than one that appeared recently, because a static problem implies the business has already decided to live with it. Layering in a timing signal — a recent site change, a new page that introduced the issue, a recent review complaint about the exact thing you'd fix — moves the list from "has a problem" to "has a problem and is plausibly still deciding what to do about it."
Step 4: Keep the volume honest
This is the part people skip because it feels like giving something up. A diagnostic approach will produce a smaller list than a database export, and that's not a bug to engineer around — it's the constraint that makes the targeting work. Padding a diagnostic list back up to database-sized volumes by loosening the criteria just re-creates the firmographic problem with extra steps.
Step 5: Let the evidence do the opening
Once you have a scored, time-relevant list, the email itself gets simpler, not harder. You're not manufacturing a hook — you're reporting one. "I noticed your checkout errors out on mobile when I tested it this week" doesn't need a clever subject line to earn attention; the specificity is the attention-getter. This is also why diagnostic lists tend to survive spam filtering better: the content is genuinely unique per recipient rather than templated with swapped-in variables. More on the deliverability side of this on the studies page.
How the scoring actually breaks down
In practice we score each candidate on three weighted factors: severity (1-5, how much the problem plausibly costs the business), recency (whether there's a dated trigger within the last 30-60 days), and confirmability (can the claim be stated as a specific, checkable fact rather than an inference). A business with a severity-4 problem, a trigger from two weeks ago, and a confirmable claim outranks a business with three minor, unconfirmed, stale issues — even though the second one technically has "more" flags. The threshold we send at is usually a combined score that requires at least one high-severity, confirmable item; anything below that gets dropped rather than padded into the list.
What this costs you
Being direct about the trade-off: this approach requires either building or buying tooling that can check thousands of sites against defined criteria, which is more setup than exporting a database. It's slower to start and won't produce a six-figure contact list on day one. What it produces instead is a list where a much higher share of recipients have an actual reason to read past the first line — which, if reply rate rather than list size is the metric that matters to you, is the entire point.