Pain-point discovery · inside AJO / Discovery

Pain Point Pipeline.

One query in; one honest verdict out — pursue, hold, or pass.

One run — query to verdict
Input
a domain, a question
01
Intake
02
Sourcing
03
Steering
04
Probes
05
Capture
06
Synthesis
Verdict
pending
One question becomes a fully scored verdict, and a pursue hands off directly to Tool Engineering to get built — every pain tied to a page the pipeline genuinely captured, weighted by proof that someone pays.

Most idea validation runs on complaints. This one runs on spend. Point it at a domain and it turns a single question into an evidence-backed verdict on a pain worth building for — every claim tied to a page it genuinely captured, weighted by proof that someone pays. It’s Discovery’s live engine.

01How it works

Six stages, one cited artifact.

  • Intake — the query is tagged as discovery with a recency window, deliberately with no heavy router in front of it — every ounce of weight sits downstream, where the evidence actually is.
  • Sourcing oracle — a single model call decides where to look at all: review sites for demonstrated spend, forums for raw complaints, press for a market read. That one decision is what determines whether a run finds real spend evidence or nothing at all.
  • Steering — probe queries, domains, and budget are derived in full, then filtered by a live-capability gate that skips any source whose keys aren’t configured, cleanly, without pretending otherwise.
  • Discovery probes — URLs are found per domain through whatever channel actually fits — native APIs for Hacker News, Reddit, and GitHub; site-search for review sites; a Perplexity fallback when neither one does.
  • Capture — a 51-adapter layer fetches each page’s real text and engagement signals, escalating from a real browser all the way to a residential unblocker for the sites walled hardest against it.
  • Synthesis — the model reads only what was actually captured and returns pains with citations — every evidence URL is a page the run genuinely fetched, never an assumption.
02What makes it different

Grounded on spend, not complaints.

A forum tells you people are annoyed. A review site tells you people are paying. The sourcing oracle routes toward review sites — G2, Capterra, Trustpilot — where the writing is genuinely about tools someone already bought. That distinction, fully drawn, is the entire difference between a complaint and a real market.

The routing is deliberate, and fragile in a way that says something real: the query has to name it precisely. Asking for "reviews" alone once sent every run to Reddit and scored everything a pass; asking for "user reviews" flips the whole run toward the sites that actually prove spend. Every pain the pipeline returns carries a citation to a page it genuinely fetched — the evidence is always a subset of what it actually captured, or the pain doesn’t ship at all.

03The verdict

Four scores, one call.

The Researcher layer wraps the pipeline fully — it writes the qualifying questions, runs every one of them through, and scores each candidate pain across four full dimensions before ranking it pursue, hold, or pass.

Severity
how much the pain genuinely hurts the people who actually have it.
Current spenddecisive
real proof that someone already pays to relieve it — the decisive score, and exactly what review-site capture feeds.
Reachability
whether the people carrying the pain can actually be found and reached.
Incumbent
who already solves it, and how much real room is left beside them.

A pursue never just sits in a doc. The verdict becomes a task in full, handed straight to Tool Engineering to get built. That handoff is where the whole system earns its keep.

04What was hard

The evidence is behind walls.

The sites carrying the best spend evidence sit behind the hardest anti-bot walls there are. A local headless browser gets handed a challenge page, never reviews. So capture runs a full escalation ladder — a real Chrome session first, then a residential unblocker for the domains that stay walled off. Getting G2 from a mislabeled "blocked" to 24,000 characters and 80 real reviews was a genuine fetch-layer fight, not a prompt tweak.

The recurring bug had one shape, every time. An over-broad match, or a label that lied outright about what happened — a capture tagged "browser" when the unblocker had actually served it. Most of a week’s fixes were spent making the system fully honest about its own behavior. Code is private; this page is the record.

← All work