Roast My Product
Your product, roasted by a panel of experts before your users find the flaws.
Maximize user experience and product quality at any stage. This method
was forged across three real audit rounds on a production Chrome extension:
journey lenses found the catastrophic breaks, role lenses found the
professional debt, and a journey re-run on the already-fixed codebase surfaced
four more P0s — so both lens families are mandatory, plus a live
walkthrough and hard regression gates.
Project facts (fill in for YOUR product, keep current)
Replace this block with your product's ground truth. Examples of what belongs
here: production identifiers the code must match, the single owner of every
threshold/rubric/schema other surfaces display, deploy commands and who runs
them, quota/limit values, and any "never do X" rules your history has earned.
An audit without this block re-litigates settled facts and misses drift.
Phase 0 — Scope
git log <last-release>..HEAD --oneline + git diff --stat: know what changed.
- Read every prior report (keep them in
docs/audits/) and build the
exclusion list (fixed + explicitly deferred). Agents must be told what
NOT to re-report; novelty is the whole value of a new round.
- Code written since the last audit is the highest-defect-density target —
name those files explicitly in the engineer and journey prompts.
- Never audit a working tree another session/person is actively editing;
audit a dedicated worktree or a clean checkout.
Phase 1 — Dual-lens agent fleet (launch all in ONE message, in background)
Journey agents — each walks a named user path step by step, "reading the
code as the product"; every finding must name the exact step where it bites:
- First-run: discover → install/sign up → first setup → first core action → understanding the result
- Heavy week: day 1 intensive use → day 2 return (caches! persisted state!) → day 3 secondary platforms/surfaces → day N hitting limits → comeback after absence
- Create-and-deliver: produce the core artifact → review it → export/share it → the artifact's fate after the session ends → second use the same day
- Acquisition: ad/social click as desktop AND mobile personas → landing → store/app listing → decision moment → what happens to the 90% who don't convert
Role agents — professional checklists:
- PM: funnel completeness, day-2 retention hooks, monetization runway,
measurement within your privacy promises, listing/landing conversion,
competitive positioning
- Engineer: correctness of the NEWEST code first; injection/XSS on every
sink fed by external or model-generated text; abuse and cost exposure of
every public endpoint; platform lifecycle traps; validator false-positive
rates; the minimal unit-test set worth building
- UX: state coverage per surface (empty/loading/error/stale); copy register
consistency; competing callouts; keyboard and assistive-tech access;
click-cost of the core loop
- UI: cross-surface tokens (color/radius/type scale/iconography); embedded
UI quality inside host contexts incl. dark mode; whether new elements join
the existing design system
Prompt contract for every agent: fully self-contained context, the exclusion
list ("do NOT re-report"), and a structured output requirement:
Return ONLY a JSON array: [{"area","priority":"P0|P1|P2","problem","impact":"one sentence","fix":"concrete","evidence":"file:line"}] — 4-10 findings you genuinely believe in; no filler.
Phase 2 — Live walkthrough (while agents run)
Real browser or device, real product: trigger the core action, screenshot the
response, time it, read the console/logs. Watch for: output distributions that
cluster suspiciously, states that never resolve, and anything on screen that
contradicts the data underneath. Record what is LIVE versus what the branch
holds — deployed drift is itself a finding.
Phase 3 — Backend smoke (deployed API)
A small script, a handful of calls, synthetic data only (never a real user's
data). Exercise the cheap path against deliberately dissimilar inputs (assert a
sane output spread and contract/schema invariants) and the expensive path once
(assert content invariants survive end to end — e.g. every synthetic metric
present verbatim in the output).
Phase 4 — Regression gates (hard, before any ship decision)
- The build/package step runs clean; version bumped BEFORE packaging; never
rebuild a version already submitted for review.
- Your end-to-end smoke (the one that loads the real artifact under production
identifiers) passes.
- Syntax/type checks on every changed file.
- Reference crosschecks between layers (every DOM id / route / config key a
changed file references actually exists on the other side) — this bug class
ships silently and costs releases.
Phase 5 — Synthesize, report, decide
- Merge, dedupe, and VERIFY surprising agent claims against the code before
reporting them.
- Write
docs/audits/<YYYY-MM-DD>-<label>.md: a 3-theme executive summary,
then P0 (users lost today) / P1 (fix within two weeks) / P2 (backlog); each
item = problem → impact → fix → file:line evidence. End with an
execution-order table and an execution-status section.
- Every finding carries its recommended change, written directly under the
problem — the
fix field is mandatory and concrete (file, approach, and
when helpful the exact new copy/value). Never present a problem without a
proposal; when the owner asks "how would you change it?", the answer must
already be in the report.
- Deliver the report, then walk the owner through it item by item —
approve / explain / defer per item, recording every decision in the status
section and moving deferred items to a persistent
docs/audits/TODO.md so
they survive across sessions. Explanations must be plain-language: analogies
beat terminology, and every technical term gets one sentence of grounding.
Phase 6 — Fix loop
- Bugs in code this audit's own sprint produced: fix on the spot, mark "fixed
during audit" in the report.
- Approved items: implement in coherent batches per deployable unit, with
checks + build + commit per batch and explanatory commit messages.
- Every novel bug class found earns a unit test before the next round.
- Anything deployed re-runs Phase 3 against production.
House rules (paid for in blood)
- Two truths drifting is the house failure mode — any "X hardcodes what Y
owns" finding (thresholds, identifiers, schemas, copy) is automatically ≥P1,
and the fix is always "one owner, everyone else reads it".
- Honesty findings are P0 — anything the product displays that its own
data contradicts (inflated labels, success messages over failures, swallowed
warnings, marketing assets from an older ruleset). Trust is the moat.
- The audit audits itself — this sprint's fixes are next round's first
suspects.
- Journey beats checklist for depth; run both.
- Live state ≠ repo state — diff production before editing anything.
- Every bound or denial the product imposes must explain itself to the user
in plain words (what happened, why, what to do next).
1---2name: roast-my-product3description: Multi-perspective product roast — dual-lens agent reviews (user journeys + professional roles like PM, engineer, UX, UI), a live product walkthrough, backend smoke tests, and hard regression gates, producing a prioritized P0/P1/P2 report the owner decides item by item. Use after building a product or feature, before shipping, or any time you want expert eyes on quality and UX.4---56# Roast My Product78Your product, roasted by a panel of experts before your users find the flaws.9Maximize user experience and product quality at any stage. This method10was forged across three real audit rounds on a production Chrome extension:11journey lenses found the catastrophic breaks, role lenses found the12professional debt, and a journey re-run on the already-fixed codebase surfaced13four more P0s — so **both lens families are mandatory**, plus a live14walkthrough and hard regression gates.1516## Project facts (fill in for YOUR product, keep current)1718Replace this block with your product's ground truth. Examples of what belongs19here: production identifiers the code must match, the single owner of every20threshold/rubric/schema other surfaces display, deploy commands and who runs21them, quota/limit values, and any "never do X" rules your history has earned.22An audit without this block re-litigates settled facts and misses drift.2324## Phase 0 — Scope25261. `git log <last-release>..HEAD --oneline` + `git diff --stat`: know what changed.272. Read every prior report (keep them in `docs/audits/`) and build the28 **exclusion list** (fixed + explicitly deferred). Agents must be told what29 NOT to re-report; novelty is the whole value of a new round.303. Code written since the last audit is the highest-defect-density target —31 name those files explicitly in the engineer and journey prompts.324. Never audit a working tree another session/person is actively editing;33 audit a dedicated worktree or a clean checkout.3435## Phase 1 — Dual-lens agent fleet (launch all in ONE message, in background)3637**Journey agents** — each walks a named user path step by step, "reading the38code as the product"; every finding must name the exact step where it bites:3940- **First-run**: discover → install/sign up → first setup → first core action → understanding the result41- **Heavy week**: day 1 intensive use → day 2 return (caches! persisted state!) → day 3 secondary platforms/surfaces → day N hitting limits → comeback after absence42- **Create-and-deliver**: produce the core artifact → review it → export/share it → the artifact's fate after the session ends → second use the same day43- **Acquisition**: ad/social click as desktop AND mobile personas → landing → store/app listing → decision moment → what happens to the 90% who don't convert4445**Role agents** — professional checklists:4647- **PM**: funnel completeness, day-2 retention hooks, monetization runway,48 measurement within your privacy promises, listing/landing conversion,49 competitive positioning50- **Engineer**: correctness of the NEWEST code first; injection/XSS on every51 sink fed by external or model-generated text; abuse and cost exposure of52 every public endpoint; platform lifecycle traps; validator false-positive53 rates; the minimal unit-test set worth building54- **UX**: state coverage per surface (empty/loading/error/stale); copy register55 consistency; competing callouts; keyboard and assistive-tech access;56 click-cost of the core loop57- **UI**: cross-surface tokens (color/radius/type scale/iconography); embedded58 UI quality inside host contexts incl. dark mode; whether new elements join59 the existing design system6061Prompt contract for every agent: fully self-contained context, the exclusion62list ("do NOT re-report"), and a structured output requirement:63`Return ONLY a JSON array: [{"area","priority":"P0|P1|P2","problem","impact":"one sentence","fix":"concrete","evidence":"file:line"}] — 4-10 findings you genuinely believe in; no filler.`6465## Phase 2 — Live walkthrough (while agents run)6667Real browser or device, real product: trigger the core action, screenshot the68response, time it, read the console/logs. Watch for: output distributions that69cluster suspiciously, states that never resolve, and anything on screen that70contradicts the data underneath. Record what is LIVE versus what the branch71holds — deployed drift is itself a finding.7273## Phase 3 — Backend smoke (deployed API)7475A small script, a handful of calls, synthetic data only (never a real user's76data). Exercise the cheap path against deliberately dissimilar inputs (assert a77sane output spread and contract/schema invariants) and the expensive path once78(assert content invariants survive end to end — e.g. every synthetic metric79present verbatim in the output).8081## Phase 4 — Regression gates (hard, before any ship decision)82831. The build/package step runs clean; version bumped BEFORE packaging; never84 rebuild a version already submitted for review.852. Your end-to-end smoke (the one that loads the real artifact under production86 identifiers) passes.873. Syntax/type checks on every changed file.884. Reference crosschecks between layers (every DOM id / route / config key a89 changed file references actually exists on the other side) — this bug class90 ships silently and costs releases.9192## Phase 5 — Synthesize, report, decide93941. Merge, dedupe, and VERIFY surprising agent claims against the code before95 reporting them.962. Write `docs/audits/<YYYY-MM-DD>-<label>.md`: a 3-theme executive summary,97 then P0 (users lost today) / P1 (fix within two weeks) / P2 (backlog); each98 item = problem → impact → fix → file:line evidence. End with an99 execution-order table and an execution-status section.1003. **Every finding carries its recommended change, written directly under the101 problem** — the `fix` field is mandatory and concrete (file, approach, and102 when helpful the exact new copy/value). Never present a problem without a103 proposal; when the owner asks "how would you change it?", the answer must104 already be in the report.1054. Deliver the report, then walk the owner through it **item by item** —106 approve / explain / defer per item, recording every decision in the status107 section and moving deferred items to a persistent `docs/audits/TODO.md` so108 they survive across sessions. Explanations must be plain-language: analogies109 beat terminology, and every technical term gets one sentence of grounding.110111## Phase 6 — Fix loop112113- Bugs in code this audit's own sprint produced: fix on the spot, mark "fixed114 during audit" in the report.115- Approved items: implement in coherent batches per deployable unit, with116 checks + build + commit per batch and explanatory commit messages.117- Every novel bug class found earns a unit test before the next round.118- Anything deployed re-runs Phase 3 against production.119120## House rules (paid for in blood)1211221. **Two truths drifting is the house failure mode** — any "X hardcodes what Y123 owns" finding (thresholds, identifiers, schemas, copy) is automatically ≥P1,124 and the fix is always "one owner, everyone else reads it".1252. **Honesty findings are P0** — anything the product displays that its own126 data contradicts (inflated labels, success messages over failures, swallowed127 warnings, marketing assets from an older ruleset). Trust is the moat.1283. **The audit audits itself** — this sprint's fixes are next round's first129 suspects.1304. **Journey beats checklist for depth; run both.**1315. **Live state ≠ repo state** — diff production before editing anything.1326. **Every bound or denial the product imposes must explain itself to the user133 in plain words** (what happened, why, what to do next).