Product Definition & User Journeys
Core premise, target user personas, 5 core user journeys, functional requirements, and MVP boundaries.
Product Definition
1. Vision & Core Value
Chess Repertoire SRS is a focused, local-first chess learning application for memorizing and retaining opening and middlegame repertoires through active spaced repetition.
The core premise:
Show the player a position from their own repertoire and ask them to play what they have learned.
The application is not a general tactics trainer, an engine analysis cockpit, or a social network. Its purpose is to turn a player's curated repertoire material into instant, reliable, retrievable memory.
2. Target Users
- Tournament and competitive chess players preparing structured opening repertoires.
- Club players and students who study PGN files or coach-provided material and need to remember lines under game conditions.
- Players tired of feature bloat who want a minimal, zero-latency review utility that opens directly into active practice.
3. Core User Journeys
Journey 1: Daily Repertoire Review (Default)
- User opens the application.
- The app immediately presents the chessboard on the first due position across all active imported studies.
- User recalls and makes their prepared move on the board. (Crucial: move comments and annotations are strictly hidden during recall to prevent move spoilers).
- If correct: subtle positive feedback, automatic traversal through already-learned opponent/user continuations, and stopping at the next due decision. Any explanatory move comment is revealed post-move. (With
Line continuityset to Full line instead: every line is played whole from its first move to its last, even when steps are not yet due, and a lapse acknowledged without retry continues down the same line.) - If incorrect: non-blocking feedback indicating the expected repertoire continuation with an on-board arrow, recording a lapse, and keeping the board interactive so the user can immediately reguess and play the correct move.
- User reviews as long as they wish; when all items are up to date, a calm idle state is displayed with options to explore moves or start pre-match rehearsal.
Journey 2: First Launch & PGN Import
- User opens the app for the very first time (zero studies exist).
- The app presents a clean, focused import interface.
- User supplies a PGN file containing one or many games/chapters with variations, comments, and annotations.
- The system validates chess legality, preserves full variation trees, normalizes chapters, and derives scheduled decision points.
- User is immediately transitioned into Review of the newly imported material (active scope automatically switches to the new study).
Journey 3: Constrained Review Scope & Opening Hubs
- User is preparing for a specific opening (e.g. against 1.e4) and wants to focus on their Sicilian repertoire.
- User opens the lightweight study/opening filter drawer.
- User selects a target study or an Opening Hub (e.g. "Sicilian Defense" which aggregates lines across multiple studies automatically classified by standard opening name/ECO/FEN).
- The Review scene updates its active pool to only test due positions matching that filter.
Journey 4: Pre-Match Rehearsal / Cram Mode (Custom Review)
- User has an upcoming tournament or match in 20 minutes and wants to rehearse lines in a specific repertoire.
- The system indicates 0 positions are due for review.
- User enters Rehearsal Mode for the chosen repertoire.
- The app actively tests the user on the board through the lines, giving feedback and reguess opportunities.
- Invariant: Rehearsal Mode is non-destructive — it does not update SRS intervals, increment repetitions, or record lapses in the SRS database.
Journey 5: Active Review Pool Focus (Deck Suspension)
- User maintains multiple repertoires over time (e.g. alternate defenses against 1.e4 or experimental openings).
- User toggles specific studies active or inactive in their daily review pool.
- The "All Studies" review queue and due count only pull from active repertoires, preventing review fatigue from sidelines not currently in play.
- Inactive studies remain fully accessible for individual review, explore mode, or cram mode at any time.
4. Functional Requirements
PGN Pipeline:
- Accept standard and non-standard PGNs with single or multiple games/chapters.
- Preserve recursive annotation variations (RAVs) as first-class branching trees.
- Support arbitrary starting FEN positions.
- Extract move comments and NAGs without corrupting tree structure.
Repertoire Training Model:
- Training evaluates whether the player remembered their repertoire, not whether the move is engine-optimal.
- Opponent mistakes and prepared punishments are first-class repertoire content.
- Player decision points are derived for the user's perspective.
- Move comments and annotations are strictly hidden during recall to prevent giving away the move, and revealed post-guess or during explore mode.
- Mistakes allow immediate reguess on the board without modal locking.
Spaced Repetition System (SRS) & Review Modes:
- Every repertoire decision maintains its own SRS state (repetition count, lapse count, stability/interval, next due timestamp).
- Non-due (already learned) positions are automatically traversed during review so the user is only tested on what is currently due.
- Previously learned moves return as active testable questions once their interval elapses.
- Scheduler algorithm is replaceable behind an abstract contract.
- Dual review modes: Standard SRS mode (updates intervals and logs recall events) and Pre-Match Rehearsal mode (trains positions on the board without altering SRS intervals or history).
- Studies can be toggled active or inactive in the daily review pool.
Opening Hubs & Classification:
- Openings are automatically classified from standard PGN headers (Event, ECO, Opening) or position FEN.
- Openings form lightweight virtual review scopes aggregating lines across multiple studies without data duplication.
Offline & Performance:
- The entire review and move-validation loop is 100% local and requires zero network access.
- Perceived interaction latency must be effectively zero (<16ms on mobile and desktop).
5. Visual Identity
ChessSRS ships its own visual identity ("Diagram"), independent of Lichess Mobile's look. The full
specification lives in design/:
design/docs/01-identity.md (principles and voice), design/docs/02-tokens.md (colour, type, motion),
design/docs/03-components.md (component specs), design/docs/04-screens-and-flows.md (screens and states).
The visual identity is intentionally decoupled from Lichess Mobile's theme — see decision D016.
Lichess Mobile remains the technical foundation only (board rendering via chessground, chess rules via
dartchess, the Riverpod/domain architecture). See CUT_PROPOSALS.md for what technical foundation is kept.
- The Product is Review: The chessboard is the primary and dominant interface element.
- Quiet & Fast Feedback: Move confirmation is immediate with subtle tactile/audio feedback cues; incorrect moves reveal the expected line without modals.
- No Mandatory Session Boundary: Review is an ongoing utility. Users can stop anytime without penalty.
- Restrained Visual Aesthetic: Subtle typography, generous negative space, high-contrast board pieces, no gamer aesthetics.
6. Non-Goals (Explicit Exclusions)
- No tactics puzzle generator or arbitrary position solver.
- No real-time chess engine judging review moves (engine evaluation does not dictate repertoire correctness).
- No multiplayer, matchmaking, or social leaderboards.
- No mandatory daily gamification streaks or XP badges.
- No cloud dependency for core move validation.
7. Future Horizons (Post-MVP)
- Lichess Integration: Authenticate and directly import/sync user's Lichess studies.
- Full Local Backup & Restore: Export all studies (PGN) plus all SRS data, and re-import it (see P-EXPORT-ALL). Local file/share only; no cloud dependency.
- Cross-Device Async Sync: Background synchronization of study content and SRS review history across mobile, web, and desktop.
- Advisory Import Health Check: Optional asynchronous one-time engine pass warning users of severe evaluation collapses in their own lines (advisory only, never blocking).
- Cross-Study Opening Categorization: Aggregate repertoire positions by opening family across separate study files.
5. MVP Scope Boundaries
MVP Scope & Specifications
1. MVP Goal
Deliver a functional, local-first Flutter application (built on the Lichess Mobile foundation) that executes the complete loop:
PGN Import → Normalized Repertoire Tree → Active Review Scene → Local SRS Persistence.
2. Included Capabilities
| Capability | Description | Status |
|---|---|---|
| Local PGN Import | Multi-game, multi-chapter PGN import (via dartchess PgnParser) supporting recursive variations (RAVs), comments, NAGs, and starting FENs. |
Phase 2 |
| Repertoire Normalization | Converts PGN trees into domain Study → Chapter → repertoire tree graphs with deterministic FEN keys. |
Phase 2 |
| Decision Point Derivation | Derives RepertoireDecision units for positions requiring user recall (player's perspective). |
Phase 2 |
| Active Recall Review | Lichess-quality interactive board scene where users input moves to answer due repertoire positions. | Phase 2 |
| Move Validation | Immediate local validation against expected repertoire continuation moves (any valid branch accepted). | Phase 2 |
| Automatic Traversal | Automated traversal through opponent replies and already-learned user moves until the next due decision (never a permanent exclusion). | Phase 2 |
| Replaceable SRS Scheduler | Scheduler contract + SimpleScheduler exponential interval ladder with lapse recovery and deterministic testing support. |
Phase 2 |
| Local Persistence | sqflite-backed repository storing studies, decisions, review states, and review events. | Phase 2 |
| Lichess-derived UX foundation | Lichess Mobile theme, board (chessground/dartchess), navigation, settings. | Phase 1 |
3. Excluded Capabilities (unchanged)
PRODUCT SCOPE
├── Local PGN Import [MVP / Phase 2]
├── Recursive Variation Trees [MVP / Phase 2]
├── Review-First Active Recall [MVP / Phase 2]
├── Automatic Traversal [MVP / Phase 2]
├── Replaceable SRS Engine [MVP / Phase 2]
├── Local Persistence [MVP / Phase 2]
├── Listudy training behaviors [Phase 4 — isolated module]
├── chessrs scheduler behaviors [Phase 5 — isolated module]
├── Advisory Engine Health Check [later, isolated at import]
├── Cross-Study Opening Filter [later]
├── Lichess study import/sync [EXCLUDED for MVP]
├── Cloud sync / accounts / social [EXCLUDED]
└── Tactics / Social / Gamify [EXCLUDED]
4. Acceptance Criteria (unchanged product requirements)
- Clean Import: Importing a PGN containing multiple chapters and nested variations produces a fully intact hierarchy where no variation branch is discarded.
- Deterministic Correctness: Playing a move that matches an active repertoire branch is accepted immediately; playing any other move (even legal chess moves) is marked incorrect.
- SRS Interval Progression:
- A position is due only after it has been presented. New items are not due; they are introduced gradually, after due work, and only then enter the SRS ladder (SPEC INV-068).
- Successful recalls increase the interval (1 day → 2 days → 4 days → ...).
- Failed recalls reset the repetition streak and schedule a short-interval retry.
- Zero-Lag Interaction: Move legality and repertoire lookup happen synchronously in memory without blocking UI rendering.
- No Modal Interruptions: Incorrect moves reveal the expected line and allow progression without requiring modal dismissals.
- Persistence Durability: Review states and study structures survive application restarts.
- Runtime-Verified UX: The review scene must look and feel like a coherent Lichess-derived mobile application (runtime validation, not just tests).
5. Known Limitations (MVP)
- Default player orientation heuristic is White unless specified in chapter metadata or custom FEN; per-chapter orientation from PGN metadata follows in refinement.
- Import sources are local PGN files only (Lichess import is an explicit future horizon, never a dependency).