---
title: "PRD review"
description: "TPM review of PRD v1.0: what is strong, the gaps and risks, and what ADR-001 resolved."
source: "docs/prd/PRD-REVIEW.md"
---

> Part of [Product](/product/llms.txt). Every page: [llms.txt](/llms.txt).

# PRD Review — 述刻 PRD v1.0 (2026-10-17)

Reviewer: TPM (Claude Fable 5.1). Inputs: the PRD PDF, the interactive prototype at `shuke-app-prototype.mikexxxxxxxxxxxxx.chatgpt.site` (walked through all 9 screens; screenshots in `docs/prototype/`).

## Verdict

The PRD is unusually honest: it separates "what the prototype shows" from "what must be built" and from "what the product owner must decide". That is the right shape. It is **not yet buildable** because the eight open decisions (section 11) gate almost every screen, and because it explicitly excludes the business model while the product direction requires a paywall. `ADR-001` resolves all of them so the tracks can start in parallel.

## What is strong

- **A single, tight loop**: read → retell → one piece of feedback → compressed retell → measurable delta. This is the whole product. Everything else (library, growth, profile) exists to feed the loop or to show its results.
- **"这次只改一件事"** (one change per session) is the best idea in the document. It is both the pedagogy and the retention mechanic. It must be the spine of the design, the assessment schema and the growth model.
- **Evidence-bound feedback**: every diagnosis must point to a transcript span and audio time range. This is what makes the feedback believable and the only defensible way to show numbers.
- **Idempotent settlement, one reward per session, streak by user time zone**: the PRD already thinks like a backend.
- Clear anti-goals: no accent correction, no exam scoring, no shaming of accents or disability-related speech patterns.

## Gaps and risks (ordered by blast radius)

| # | Gap | Impact | Resolution |
|---|---|---|---|
| 1 | Business model excluded; no onboarding, no paywall, no trial, no entitlement model | Nothing to ship commercially; iOS and backend both need entitlements in the data model from day one | ADR-001 D8: free diagnostic → hard paywall with trial. Entitlement in `GET /v1/me`. |
| 2 | 3-step vs 4-step path undecided; prototype shows "迁移" step 4 with no screen | Home progress bar, completion rules and rewards all depend on it | ADR-001 D1: 3 steps in v1. Step 4 removed from UI (not greyed out). |
| 3 | Scoring formula, weights, bands, long-term ability aggregation all undefined; prototype numbers (68→86, +18 能力分) are fixed | Growth page and completion page cannot be designed; risk of fake-looking numbers | ADR-001 D3: weights, bands, EMA ability score with sample threshold, rubric versioning, "unreliable" outcome instead of low score. |
| 4 | No minimum valid speech definition (prototype uses a 3-second button gate) | Users could farm XP with silence; assessments on near-empty audio produce garbage | ADR-001 D2: 20 s floor + server speech check; unreliable → no score, no reward, free re-record. |
| 5 | Reward rules (daily cap, repeat article, cross-day, streak freeze) undecided | Settlement logic and completion UI | ADR-001 D4. |
| 6 | Account / device sync undecided | Determines whether local-first or server-authoritative; affects every state screen | ADR-001 D5: anonymous server account from first launch, upgrade via Sign in with Apple. Server authoritative; iOS caches for offline reads. |
| 7 | Audio retention, third-party AI, model-improvement use, minors — undecided | App Store privacy labels, consent copy, deletion semantics | ADR-001 D6. |
| 8 | 示范表达 (exemplar playback) and 导入 (import) are placeholders | Feedback screen has a dead button; library has a dead button | Exemplar ships in v1 via TTS provider (async, labelled "参考表达"). Import hidden until v1.1. |
| 9 | Prototype inconsistencies: streak 12 (home) vs 13 (profile); task path pre-checks "阅读" before any training; library items all return home; 468 字 is hard-coded | Design debt that would be copied into the app | All derived from API fields; design track must produce a data-binding table per screen. |
| 10 | No notion of progression across sessions beyond XP and a line chart | "Progressive improvement" is a stated goal of this build | ADR-001 D9: micro-skills, focus skill, "did you do the one thing?" check, difficulty tiers, 14-day plan. |
| 11 | No analytics plan for the funnel beyond event names | Needed to compute the paywall benchmark numbers honestly | `POST /v1/events` with the PRD event list; benchmark numbers come from a cohort job, seeded with labelled pilot values until real data exists. |
| 12 | Assessment quality validation (human-labelled samples) is mentioned but not planned | Risk of confidently wrong feedback | Backend ships a `fixtures/assessment-eval/` set and an eval script; rubric prompts are versioned; "confidence" is a first-class field. |

## Prototype notes (what to keep, what to drop)

Keep: warm off-white background (`#FAF9F5` / `#F5F2E9`), ink black cards (`#171717`), coral accent (`#FF6030`) used only for the primary action, lime (`#DFFC66`) only for rewards/level, Avenir Next + PingFang SC, pill and 16–20 px radii, concentric-ring record button, "这次只改一件事" black card, the 68 → 86 before/after block, the three-stat completion row.

Drop: the fourth "迁移" step, fixed numbers, the desktop frame, the 3-second gate, the "已完成" migration quest, any success copy that promises improvement ("今天讲得更清楚了" must be conditional on a real delta).

Add (not in prototype): onboarding (5 screens), diagnostic session, paywall, permission priming for microphone, processing states (uploading / transcribing / assessing / failed / unreliable), resume-session sheet, empty states for growth and library, settings (retention, reminders, delete data), evidence playback.

## Acceptance criteria carried into tracks

From PRD section 11, these are the release gates and are reflected in each track's PR checklist:
real recording → feedback end to end; second-round comparison; one-time settlement; cross-screen stats consistency; permission denial and offline recovery; all four tabs navigable; no-data states; history save and delete; article ↔ scoring baseline correspondence; dynamic type / safe area / VoiceOver.
