Use when there's more worth building than time to build it, or two good options compete — make the tradeoff explicit, pick one, and say what you're NOT doing and why.
Use before committing to build anything non-trivial — name the one assumption that, if wrong, kills the idea, and design the cheapest test that could falsify it, run BEFORE the…
Use when proposing the approach for an initiative, or when tempted to add structure "for future scale" — design the idiomatic, simplest thing that solves the real problem and…
Use before you write a line of demand copy or plan a launch — when the value seems "nice to have," when adoption is flat despite good messaging, or when nobody can answer "why…
Use whenever sources disagree — record the contradicting evidence as its own signal against the belief, never average a real disagreement into false consensus.
Use the moment observed ≠ expected and especially when a result seems impossible (a deleted thing still appears, a fix has no effect, state lingers after teardown) — distrust your…
Use when assessing demand — trust what customers DID over what they say. Triangulate demand from the displaced status quo and the losses, never the TAM slide.
Use when judging whether "good" is good enough now — 10x is the floor, the visible playbook is a commodity, and the best companies are icebergs.
Use when reviewing an LLM feature, AI agent, RAG system, or tool/MCP integration — treat the OWASP LLM Top 10 as its own attack class: prompt injection, excessive agency, tool…
Use before you run anything — statically walk every user journey end-to-end (happy path plus the error, empty, returning-user, and cancel states) by reading flow + spec + code, to…
Use when deciding what to say where — a cold ad vs. a homepage vs. a pricing page vs. a re-engagement email — or when copy is pitching the offer to people who don't yet know they…
Use when a build is proposed with no path to reach users — force distribution (channel + activation + retention loop) into the product decision.
Use whenever the system spawns processes, sessions, jobs, workers, or connections (background daemons, tmux/PTY sessions, worker pools, cron jobs, subprocesses) — model the full…
Use when defining what "success" means for a feature/initiative, when picking a metric, or when a number looks suspiciously good — choose a North Star + guardrails, reject vanity,…
Use in a crowded/competitive space, when prospects keep comparing you to a rival, when "why you over X?" has no crisp answer, or to build battlecards.
Use to scan everything an outsider can read — README, marketing copy, docs, public config, AND error messages, stack traces, debug pages, response headers, and logs — for leaked…
Use on every surface — accessibility is designed in, not bolted on. ~80% of accessibility is design decisions (contrast, hierarchy, target size, focus order, labels) made before…
Use whenever copy is drifting into a feature list, spec dump, or internal jargon — onboarding, a feature page, a release note, a tagline.
Use when gathering directly from people — talk about their life and specific past behavior, not your idea; get past Q&A into story; embrace silence.
Use when applying AI to selling — conversation/deal intelligence, AI-assisted research/prioritization, AI SDRs, AI-aware forecasting.
Use when the build implies quality beyond "it works" — sweep the non-functional surface: performance under load, accessibility, the obvious security holes, and…
Use when deciding how much process a piece of work needs — match ceremony to stakes; full rigor for one-way doors, a lean path for a contained fix.
Use when assessing the founder's ceiling — can they paint the huge future AND walk the exact next step, and do they bend reality or wait for permission.
Use when filing a finding — write the bug report as a persuasive document that gets it fixed (Kaner's bug advocacy): exact repro, expected vs actual, severity, and the expectation…
Use when AI is in the loop — generating copy/variants at scale, personalizing messaging, or summarizing customer calls/competitive intel, and as the anti-AI-tell scrub on any…
Use to close the audit — render an honest ship / don't-ship verdict with the blocker list, what you tested and didn't, the residual risk, and the routing of every finding to the…
Use when the people who sell or talk to customers (sales, founders, support, partners) need the message in usable form — pitch deck, one-pager, demo script, objection handling,…
Use after any incident (or near-miss) — write a blameless postmortem that finds the systemic/contributing causes, not a person to blame, and produces tracked action items so the…
Use the moment prod is broken/degraded or an alert fires — declare an incident, take command, mitigate before diagnosing, and communicate on a cadence.
Use when scoping what to test on a non-trivial build — model coverage across the product's real dimensions (Structure, Function, Data, Integrations, Platform, Operations, Time) so…
Use mid-cycle on any multi-stakeholder deal — map the buying committee, multi-thread across it, develop a real champion (power + self-interest), TEST them, and reach the economic…
Use when a buyer pushes back (too expensive / no time / not now / need to check with X) — clarify and confirm the REAL concern before answering; separate a genuine blocker from a…
Use when forecasting, reviewing pipeline, or reporting deal status — enforce stage exit criteria, honest forecast categories, and kill zombie deals.
Use at the acceptance gate — verify the build by doing the user's flow yourself end-to-end and confirming persisted state, not by checking that "the parts exist per spec" or that…
Use when scoping or describing a feature — reframe it as the job the user is hiring it for (the outcome in their words), not the feature itself.
Use pre-build, for a new idea, or at n=1 — is there a real market and will anyone pay? Run Mom-Test conversations on real prospects, hunt commitment + advancement, say "no one…
Use when a design choice has to be justified to a founder/non-technical stakeholder, when proposing to spend (or take on) time/money/debt, or when "why does this matter to the…
Use at the ship gate for any release — enforce one sanctioned scripted door to prod, a rollback you have actually tested, no leaked secrets, no regressed control, and the…
Use when documenting how to deploy, operate, or recover a service, or after learning something a release/incident taught you — write a runbook so good a competent stranger could…
Use when a call is hard-to-change or a one-way door (persistence, boundaries, public interfaces, the build/deploy path, a dependency) — record an ADR; immutable once accepted,…
Use when AI coding agents will read/write this codebase, or an AI/LLM feature is proposed — design for the AI reader, defend against AI-accelerated drift, and treat…
Use when designing a module/function/API or when tempted to add abstraction "for the future" — reduce complexity; build deep modules with simple interfaces; the simplest thing…
Use for the pitch, the launch story, the homepage hero, the keynote, the fundraising or vision story — any artifact that must move someone emotionally, not just inform.
Use when recommending controls or evaluating whether a system is secure by construction — apply the classic security principles (least privilege, fail-safe defaults, complete…
Use while writing any diff — make it look like the rest of the codebase wrote it: match conventions, reuse shared components, stay DRY, write for the next human, and never leave a…
Use when writing a spec for a feature or a one-way-door decision — a Working-Backwards PRD whose whole top half is WHY before any WHAT.
Use before calling any design done, and for anything with concurrency, persistence, or external dependencies — risk-storm the design: attack it, then decide resilient vs fail-fast…
Use when ops work is manual, repetitive, and scaling with growth (manual deploys, hand-run migrations, copy-paste fixes, ticket-driven provisioning) — identify the toil and…
Use when auditing code that takes user or network input — hunt the OWASP web vuln classes by tracing untrusted input to a dangerous sink, and substantiate every finding input →…
Use when scoping how to land a change — prefer small, short-lived, independently-safe increments over a big-bang merge; keep the codebase deployable; gate risky changes behind…
Use at the end of an evaluation — would this pitch still be on your mind at dinner, or does it blur into the other AI/SaaS pitches? Name the one compounding idea, and the single…
Use when performance matters, something is slow, or a job is failing/timing out — measure before optimizing, profile to find the real bottleneck, parallelize independent work and…
Use when a new dependency is added, a CVE is reported, or the build/CI pipeline is reviewed — assess reachability not just presence, pin and lock deps, and treat the…
Use when someone demands "100% uptime," when arbitrating ship-speed vs stability, or when defining how reliable a service must be — set an SLI/SLO and an error budget so…
Use when naming a product, feature, category, or pricing tier — or when an existing name confuses, over-promises, or fights the positioning.
Use when the feature is AI/LLM-powered (generation, summarization, classification, agents, RAG) — its acceptance is an EVAL, not "it runs." Define the dataset, graders,…
Use whenever a load-bearing call is made (or asked again) — record problem, options, what was chosen, why, and what was rejected, so settled questions aren't re-litigated and "why…
Use BEFORE code is written — when a story, spec, or design is being shaped — to prevent the bug instead of catching it later: question the story, surface the missing examples and…
Use when more than one entry surface exists or is proposed (CLI, API, MCP, UI, webhook, cron) — make every surface route to one shared core code path, and run a DRY pass for the…
Use when the system must change safely over time, when an invariant needs protecting, for "should we rewrite this?", or for a behavior-preserving refactor — protect the…