Skip to main content

User Stories & Sprint Plan

This document turns the product backlog into user stories, verified against the project brief, and organizes them into 4 sprints. Stories carry an ID so they can be tracked on a board and referenced in PRs (e.g. feat: implement WRITE-3).

Coverage check

Every requirement in the brief (Basic, Intermediate, Advanced) is represented below. Three backlog items describing assessments from different angles (Writing a Course, Interacting with a Course, Assessments) are consolidated into one set of stories rather than duplicated. The same applies to reputation and self-governance, which appear under both Profile/Moderation and Community & Reputation in the original backlog.


Epics and user storiesโ€‹

PROFILE โ€” user identity and trustโ€‹

IDStoryTier
PROF-1As a user, I want a profile showing which languages I speak, so that others know my expertiseBasic
PROF-2As a user, I want my profile to show which languages I'm learning, so that content can be tailored to meBasic
PROF-3As a user, I want a visible reputation score, so that I can see my standing in the communityIntermediate
PROF-4As a contributor, I want my reputation to increase from accepted contributions, so that good work is recognizedIntermediate
PROF-5As the platform, I want reputation to gate which actions a user is trusted to perform, so that moderation isn't open to anyoneIntermediate
PROF-6As the platform, I want rate/action limits that adapt to a user's reputation, so that new or low-trust accounts can't cause outsized damageAdvanced

DISCOVERY โ€” finding contentโ€‹

IDStoryTier
DISC-1As a learner, I want to find published courses, so that I can start learningBasic
DISC-2As a learner, I want courses ranked by quality/relevance, so that good content surfaces firstIntermediate
DISC-3As a learner, I want a feed of content, so that I can discover new courses without searchingIntermediate
DISC-4As a learner, I want courses tagged and filterable by difficulty/level, so that I can find content that matches my levelIntermediate
DISC-5As a learner, I want content recommended in the language I'm learning, so that recommendations are relevantIntermediate
DISC-6As a user, I want notifications for pending proposals, reviews, and moderation outcomes, so that I never miss something waiting on meIntermediate
DISC-7As a learner, I want recommendations informed by how I've actually performed, so that suggestions reflect my real levelAdvanced
DISC-8As the platform, I want stale content to resurface for review, so that outdated courses don't silently persistAdvanced
DISC-9As a user, I want search to stay fast as the catalogue grows, so that the platform remains usable at scaleAdvanced
DISC-10As the platform, I want unused content archived out of active search, so that the catalogue stays navigableAdvanced

READ โ€” interacting with a course as a learnerโ€‹

IDStoryTier
READ-1As a learner, I want to read a published course, so that I can learn from itBasic
READ-2As a learner, I want my progress through a course tracked, so that I can pick up where I left offBasic
READ-3As a learner, I want to take assessments attached to a course, so that I can test my understandingIntermediate
READ-4As a learner, I want automatic marking where the question type supports it, so that I get immediate feedbackIntermediate
READ-5As a learner, I want my assessment results stored against the course, so that I can track my performance over timeIntermediate
READ-6As a learner, I want to view records of conversation sessions I missed, so that I don't lose out on spoken practiceAdvanced

WRITE โ€” authoring a courseโ€‹

IDStoryTier
WRITE-1As an author, I want to create a course, so that I can share what I knowBasic
WRITE-2As an author, I want to build a course out of lessons, so that content is structured for learnersBasic
WRITE-3As an author, I want to publish a course when it's ready, so that learners can find itBasic
WRITE-4As an author, I want to unpublish a course, so that I can take down content that's no longer ready or accurateBasic
WRITE-5As an author, I want a dedicated workspace for writing a course, so that authoring is separate from readingBasic
WRITE-6As an author, I want to attach assessments to my course, so that learners can be examined on the materialIntermediate
WRITE-7As an author, I want to build assessments from a set of supported question types, so that I'm not limited to one formatIntermediate
WRITE-8As an author, I want my assessments peer-reviewed, so that quality isn't trusted on my word aloneAdvanced

COLLAB โ€” course collaborationโ€‹

IDStoryTier
COLLAB-1As a learner, I want to suggest a correction to a lesson, so that mistakes can be fixed by whoever finds themBasic
COLLAB-2As an author, I want to review suggested corrections, so that I control what changes to my courseBasic
COLLAB-3As an author, I want to accept a suggested correction, so that good fixes get merged inBasic
COLLAB-4As a contributor, I want to be credited when my correction is accepted, so that my contribution is recognizedBasic
COLLAB-5As a user, I want to fork an existing course, so that I can take it in a different directionIntermediate
COLLAB-6As a fork owner, I want to modify my fork independently, so that I'm not blocked by the original authorIntermediate
COLLAB-7As a fork owner, I want to submit my changes back to the original course, so that improvements can flow upstreamIntermediate
COLLAB-8As an original author, I want to review incoming proposals from forks, so that I control what merges into my courseIntermediate
COLLAB-9As a fork owner, I want to pull changes made to the original course into my fork, so that my fork can stay currentAdvanced
COLLAB-10As a fork owner, I want to resolve conflicts between upstream changes and my own edits, so that merging doesn't silently lose workAdvanced
COLLAB-11As a user, I want to trace where a lesson originated across every fork it's been copied into, so that provenance is visibleAdvanced

MOD โ€” moderationโ€‹

IDStoryTier
MOD-1As a user, I want to flag content, so that I can report something worse than a simple mistakeBasic
MOD-2As a user, I want to provide a reason with my flag, so that moderators have contextBasic
MOD-3As the platform, I want flagged content routed to moderators, so that it doesn't rely on the author to self-policeBasic
MOD-4As a moderator, I want a queue of flags to triage, so that reports are handled systematicallyIntermediate
MOD-5As a moderator, I want decisions to require more than one moderator's agreement, so that no single person unilaterally controls outcomesIntermediate
MOD-6As a moderator, I want actions to carry a duration rather than being permanent by default, so that penalties are proportionateIntermediate
MOD-7As a user actioned against, I want to appeal a moderation outcome, so that mistakes can be correctedIntermediate
MOD-8As a community, I want to elect our own moderators, so that moderation authority comes from the people it affectsAdvanced
MOD-9As a community, I want to set our own moderation policy within platform limits, so that norms fit our language communityAdvanced
MOD-10As a user, I want moderation actions published, so that moderation is transparent rather than opaqueAdvanced
MOD-11As the platform, I want to detect signals that one person controls multiple accounts, so that sockpuppeting doesn't undermine trust systemsAdvanced
MOD-12As the platform, I want to detect coordinated manipulation (brigading), so that groups can't game votes or moderation outcomesAdvanced

CONVO โ€” conversation spacesโ€‹

IDStoryTier
CONVO-1As a learner, I want language-specific conversation rooms, so that I can practice speaking with othersAdvanced
CONVO-2As a learner, I want to schedule conversation sessions ahead of time, so that people reliably meetAdvanced
CONVO-3As a participant, I want speaking turns managed, so that a busy room stays usableAdvanced
CONVO-4As a participant, I want a record left of the session, so that people who missed it can catch upAdvanced

Sprint planโ€‹

With a 6-person team, sprints map to the brief's own tiers โ€” this keeps each sprint end demoable rather than leaving half-finished cross-tier features at every checkpoint.

SprintFocusEpics coveredPrimary owners
Sprint 1Foundation + Basic tierPROF-1, PROF-2 ยท DISC-1 ยท READ-1, READ-2 ยท WRITE-1โ€“5 ยท COLLAB-1โ€“4 ยท MOD-1โ€“3Whole team on foundation (Week 1), then split by module ownership
Sprint 2Intermediate tier, part 1READ-3โ€“5 ยท WRITE-6โ€“7 ยท COLLAB-5โ€“8 ยท PROF-3โ€“5Assessments + forking owners, reputation owner
Sprint 3Intermediate tier, part 2MOD-4โ€“7 ยท DISC-2โ€“6Moderation owner, discovery/notifications owner
Sprint 4Advanced tier (selected) + hardeningChosen subset of: COLLAB-9โ€“11 ยท MOD-8โ€“12 ยท CONVO-1โ€“4 ยท DISC-7โ€“10 ยท WRITE-8 ยท PROF-6Whole team, converging

Sprint 1 detailโ€‹

  • PROF-1, PROF-2 โ€” profile with languages spoken/learning
  • DISC-1 โ€” find published courses
  • READ-1, READ-2 โ€” reader + progress tracking
  • WRITE-1โ€“5 โ€” course/lesson CRUD, publish/unpublish, workspace
  • COLLAB-1โ€“4 โ€” suggest, review, accept, credit
  • MOD-1โ€“3 โ€” flag, reason, route to moderator
Exit criteria

End of Sprint 1 should be a fully working, deployed, demoable Basic tier โ€” this is the checkpoint from the development blueprint (end of Week 3 in the 6-week plan). If any of the above isn't done, cut Sprint 2 scope rather than let it slip silently.

Sprint 2 detailโ€‹

  • READ-3โ€“5 โ€” take assessments, auto-marking, results storage
  • WRITE-6โ€“7 โ€” attach and build assessments from question types
  • COLLAB-5โ€“8 โ€” fork, modify independently, propose back, review proposals
  • PROF-3โ€“5 โ€” visible reputation, reputation growth, reputation-gated trust

Sprint 3 detailโ€‹

  • MOD-4โ€“7 โ€” moderation queue, multi-moderator decisions, time-bound actions, appeals
  • DISC-2โ€“6 โ€” ranking, feeds, tags/level filtering, language-relevant recommendations, notifications
Exit criteria

End of Sprint 3 = full Intermediate tier working. This is the point to honestly assess how much Advanced-tier scope is realistic for Sprint 4 โ€” better to cut now than discover it in the final week.

Sprint 4 detail โ€” pick, don't attempt everythingโ€‹

Advanced tier is intentionally the largest epic list and the brief itself calls the abuse-resistance work (MOD-11, MOD-12) "the hardest part of the platform." With one sprint left, select 2โ€“4 stories per area that demo well rather than attempting full coverage of all of them:

Realistic to fully build:

  • CONVO-1โ€“4 โ€” conversation spaces (start the WebSocket spike in Sprint 1 or 2 to de-risk this, per the development blueprint)
  • MOD-10 โ€” published moderation actions (straightforward, high demo value)
  • PROF-6 โ€” trust-scaled rate limits
  • COLLAB-9 โ€” pulling upstream changes into a fork (simplified case)

Design-documented, simplified, or partial:

  • COLLAB-10, COLLAB-11 โ€” conflict resolution and lineage tracing (document the general algorithm, implement the trivial case)
  • MOD-11, MOD-12 โ€” sockpuppet/brigading detection (heuristic-based, not ML โ€” document what a production version would need)
  • MOD-8, MOD-9 โ€” elected moderators, community policy (feasible if time allows; cut first if not)
  • DISC-7โ€“10 โ€” performance-informed recommendations, stale-content resurfacing, fast search, archiving (fine on a small demo dataset; document how each would scale)
  • WRITE-8 โ€” assessment peer review
Common mistake

Don't let Sprint 4 become "build everything at 60%." A better outcome for grading and for the demo is a smaller set of Advanced features working completely, with the rest clearly documented as designed-but-not-implemented โ€” exactly as the brief's own "hardest part" framing anticipates.


Story IDs are stable โ€” reference them in branch names, PR titles, and commit messages (e.g. feature/collab-5-fork-course) so work is traceable back to this document.