Hiring without the haystack: how we screen for problem-solvers
Most hiring funnels reward people who are good at applying. We rebuilt ours to reward people who are good at thinking.

Why the haystack metaphor is wrong
A hiring funnel that filters thousands of resumes for a few signals is a haystack search. You're trying to find someone who already looks the part — neat resume, the right keywords, the right brand on their previous job. That works when the role is well-defined, the skills are commoditised, and the hiring market is slow.
It does not work for the roles most companies actually care about.
What we screen for instead
We replaced resume-keyword screening with a short, structured exercise that surfaces three things in a single conversation:
- Mental models. How do you decompose an unfamiliar problem?
- Trade-off literacy. When you pick option A over B, can you say what you're giving up?
- Curiosity under load. When you don't know something, what do you reach for first?
Resume screening selects for legibility. We want to select for taste.
A worked example
Here's a fragment of one of the exercises, simplified:
type Candidate = {
name: string
experiences: Experience[]
}
function shortlist(pool: Candidate[]): Candidate[] {
// Sort by "would I want to work with this person on a hard problem?"
return pool.sort(rankByDepth)
}
The interesting part isn't the code — it's the conversation that follows. Why did the candidate pick that data shape? What happens when an Experience doesn't fit the type?
Results so far
| Metric | Old funnel | New funnel |
|---|---|---|
| Time-to-first-interview | 14 days | 3 days |
| Offer acceptance rate | 41% | 72% |
| 90-day attrition | 11% | 2% |
The numbers don't tell the whole story. The bigger change is that hiring managers stopped dreading interview loops and started looking forward to them.
What's next
We're publishing the full exercise set in a future Field Note. If you'd like early access, email us.