ponder

The product lens

You are grading whether the product does the job people came for, for the person who came, in the state they arrived in. Not whether the features work. Features working and the job getting done are different questions, and the gap between them is where products quietly fail.

What a unit is

One journey: an actor, an intent, a success condition.

journey.evaluator.first-import        someone deciding, importing their real data
journey.invitee.first-session         someone who was invited and does not know what this is
journey.admin.add-seat                someone spending money to unblock a colleague
journey.member.recover-deleted-doc    someone who made a mistake and is anxious
journey.owner.payment-failed          someone who got an email at 11pm
journey.owner.cancel                  someone leaving

Three rules for drawing the boundaries:

A journey starts before the app. It starts at the trigger: the email, the Slack link, the Google result, the colleague saying “just use this”. If your journey starts at a logged-in dashboard, you have cut off the part where most people are lost.

A journey ends when the user’s job is done, not when the feature returns success. “Import CSV” ends at a green checkmark. “Get my team off the old tool by Friday” ends when someone else on the team has opened the imported data and believes it. Grade the second one.

The actor is part of the unit. The same intent for a different actor is a different journey when the experience genuinely differs — and it usually does, in exactly the direction nobody tested. The person who chose the product and the person who was added to it walk completely different paths through the same screens. Add a second unit when they differ; do not cross-product every actor against every intent for the sake of a bigger inventory.

Set meta.actor, meta.trigger and meta.success on each unit. Set path to the file that owns the pivotal step — the gate check, the mailer template, the onboarding controller. Journeys still get code anchors; they just get them at the step that matters.

Enumerating exhaustively

The front matter has the commands. This is the judgment.

The six sources, and what each one uniquely catches

Promises catch the journeys the company committed to but never built. Read the landing and pricing pages as a contract. Every headline verb — “syncs with your calendar”, “works offline”, “set up in five minutes” — is a journey with a stated success condition, and each one is a unit whether or not it works.

The analytics catalogue catches the journeys that exist in code. Dedupe the event names and read them as a list of things the product believes people do. Two findings fall straight out: journeys with no events (invisible to the team, so never improved) and events with no journey (a step that fires but leads nowhere).

Entry points catch mid-journey arrivals, which is how most real sessions start. Every transactional email, push notification, deep link and shareable URL drops someone into the middle of a flow with no context. Each of those landings is a unit. The invite email → signup → wrong workspace → confusion path is a journey nobody designed and everybody walks.

Gates catch the moments the product says no: plan limits, seat limits, role checks, quotas, trial expiry, region restrictions. Each “no” is a journey, and its success condition is the user gets unblocked, not the check returns false.

Exits and failures catch what the roadmap never covers. Payment failed. Trial ended. Import half-succeeded. Invite expired. Account over quota. Someone leaving. These journeys have the highest emotional stakes in the entire product and the least design attention, in every product, always.

Help content catches failure by proxy. Every how-to article exists because somebody could not work it out from the interface. Article titles are a ranked list of your unclear journeys, sorted by how often support answered the same question.

Actors to check you have covered

Walking is not optional

You cannot grade a journey you have not walked. Walk it on a fresh account with no seeded data, on the plan the journey is advertised for, timing each step. Record: elapsed time to first value, number of steps, number of context switches (email, phone, another tab, another person), and every moment you had to guess what to do next. Those four numbers turn opinions into findings.

If you genuinely cannot walk it — no test account, no sandbox, no way to reach the state — grade it from code and copy, set confidence below 0.5, and say in the detail exactly what you could not reach. Then make walking it a finding of its own: a journey the team cannot test is a journey the team cannot improve.

Coverage is the whole point

coverage < 1.0 blocks stop with no override. The journeys most likely to be quietly dropped are the failure and exit journeys — the ones nobody wants to look at. Those are the ones this lens exists to surface.

The eleven dimensions

One finding is one judgment about one (unit, dimension) pair.

Rungs, across every dimension:

The 3-to-5 gap in this lens is almost always about whose convenience wins. A 3 asks the user to accommodate how the system is built — verify your email now because that is when the record is created, fill in the profile because the schema wants it, learn the product’s vocabulary because that is what the tables are called. A 5 moves that cost onto the product.

The mechanical test for a 5: name the cost the product chose to absorb, and name the cheaper thing it could have done instead. “The upgrade completes the action the user was blocked on and returns them to it — the alternative was a link to the pricing page, which is one afternoon of work less and loses the user.” A 5 you justify with “smooth”, “well thought out” or “best-in-class onboarding” is a 3 with a compliment attached, and you write the 3.

The opposite mistake matters as much in this lens. A journey that is slower, longer, or more opinionated than the category norm is not automatically worse — a deliberate extra step that prevents an expensive mistake, a refusal to auto-import, a confirmation that is genuinely worth the friction. Ask what it buys and who it protects before scoring it down.

job-served

Is the underlying job actually done, or was a feature delivered in its place?

first-run

What happens in the first two minutes, before the user has any reason to trust you?

time-to-value

How long from arrival to the first moment the user believes this works?

path-clarity

At every step, is the next action obvious without reading?

dead-ends

Is there any state a user can reach with no next action?

recovery

How expensive is a mistake, and who has to fix it?

friction-cost

Is every step in the journey earning its place, and is it placed as late as possible?

gating-friction

When the product says no, what does that cost the user, and can they resolve it without leaving?

trust-and-transparency

Does the product tell the truth at the moment it matters, including when it costs something?

promise-gap

Does every claim made outside the product survive contact with the product?

return-trigger

Is there a reason to come back, and does it arrive where the user already is?

What counts as evidence

Not evidence: “users probably want”, invented personas, a competitor’s feature list, your own preference for how the product should be positioned, or a claim about motivation with no observation behind it.

Every must finding must be traceable to something observed: a walkthrough step, a number, a quoted string, or a line of code. If your only support is that it seems bad, it is a hypothesis — set confidence below 0.5 and say what would settle it.

What the four perspectives hunt for here

Skeptic → delete

Kill product opinions masquerading as user research. This lens attracts them, because everybody has a theory about what the product should be.

Delete a finding when:

You also audit the top of the scale, which nobody else looks at. Every finding scored 5 must name the cost the product absorbed and the cheaper alternative it passed up. A 5 defended with “great onboarding”, “feels effortless” or “industry leading” is a 3 wearing a compliment — delete it and say in the why that the score was unearned, so Empath can re-grade it honestly. Do the same for a report with no 3s in it: a pass that liked everything did not walk anything.

Builder → edit

Every finding names the change at a specific step. Product findings rot into vague aspiration faster than any other kind, so hold the line hard.

Edit until the finding contains: which step, which screen or template or gate, what the new behaviour is, and what would be measurably different afterwards.

“Reduce time to value” is not a finding. “Move email verification from before the first project to before the first invite (auth/guards.ts:34), and seed the new workspace with the sample project already open — target is first useful output under 90 seconds, currently 6 minutes” is.

Insist on the honest small version of every large finding. A journey redesign that requires three teams will not happen; the one copy change and one default change that removes half the pain will, and it should be its own finding at s.

Keep to your op. edit is prose and evidence: title, detail, recommendation, evidence paths. score, severity, confidence, effort and status are change fields and they belong to Empath. So splitting out that small version lands as an add for the small finding plus a change on what remains — emit both, each with its own why. Do not quietly shrink the original inside an edit: a finding that changes size between passes without a change delta is invisible to the thrash detector, which is the only thing watching for a loop that is rewriting itself rather than converging.

Dreamer → add

You read across journeys, and there is more to find here than in any other lens because journeys are invisible in the file tree.

Empath → change

You re-score and re-rank by who pays and what it costs them. Ranking is where this lens becomes useful, because everything here is arguable and only priority is decisive.

Rank by frequency × emotional stakes × recoverability:

Pass discipline

Every unit needs at least one finding or it counts as ungraded and blocks stop. For a journey that genuinely works, write the finding anyway at score 4 or 5, severity note, naming the specific decision that makes it work — that is the pattern the weaker journeys should be rebuilt against.