This brief is the shared context for five chunked UX variation spec sessions. Each later session writes one build-grade progression-path spec under design/ux-variations-first-pick-speed/, using this brief plus the attached first-pick domain model as the stable substrate.
The decision surface is the first activation cliff: move a new Draft Stonk player from first visit to a valid fantasy stock pick quickly enough that the user wants to continue to the draft board, without making the product look like trading, advice, brokerage, betting, prizes, or a portfolio tool.
This is progression-path UX variation work, not layout-mode. Variations may change how a user enters, advances, recovers, understands, and confirms the first pick. They should not merely rearrange the same page or change visual styling.
Primary user: a U.S. finance-curious social retail player or fantasy-sports-adjacent friend-group member who follows market stories through friends, Reddit, TikTok, YouTube, Discord, fantasy sports groups, investing apps, creators, campus clubs, or general news.
Secondary context: friend-group instigator or college finance-club participant who wants a lightweight challenge format, without turning the first product into organizer dashboards, public contests, formal classrooms, or league operations.
Trigger: a market story, stock argument, fantasy-sports analogy, friend challenge, group chat debate, or college-club moment creates a desire to test a stock instinct socially.
First value moment: the user sees a chosen stock become a fantasy-game pick. Reading the concept helps, but the activation proof is a valid first pick with enough board continuation to prove the pick counted.
Aha threshold for this branch: valid first stock pick, duplicate prevention available, pick-not-trade copy visible, local/mock/delayed data posture labeled, and a draft-board preview or transition that makes continuing feel natural.
- User starts or enters a quick draft without account creation.
- User searches or browses recognizable U.S. stocks.
- User selects one available stock as a fantasy game pick.
- System validates the pick.
- Pick is recorded in the draft session.
- User sees enough draft-board continuation to know the pick counted and the compact bot draft can continue.
The branch does not own equal-dollar standings comprehension, full concept education, replay/share/invite payoff, production account systems, payments, brokerage handoffs, live market data integrations, or full league management. Those remain sibling or downstream concerns.
Fixed Logical Substrate
Every variation preserves the attached model in design/domain-model-draft-stonk.md and design/model-tree-draft-stonk.yaml.
Core entities and value objects:
DraftSession: owns the bounded game instance, participants, turns, picks, taken stock IDs, trust boundary, data label, validation result, and events.
Participant: user or bot in the compact draft.
Turn: current opportunity to pick, with user and bot states.
Pick: fantasy-game selection record, never a trade/order/position/recommendation.
StockUniverse: recognizable local/mock stock choice set.
StockChoice: company/ticker item with availability and data label.
ValidationResult: allowed, blocked, or error outcome with recovery action.
TrustBoundary: no-money, no-prize, no-brokerage, no-advice, entertainment/game framing.
DataLabel: local/mock/delayed/prototype-only data posture.
DraftEvent: local audit record of starts, searches, validations, picks, bot picks, and recovery.
Core states and transitions:
not_started to starting via StartQuickDraft.
starting to active_waiting_for_first_pick via QuickDraftStarted.
active_waiting_for_first_pick to validating_first_pick via MakeStockPick.
validating_first_pick to first_pick_recorded via FirstPickRecorded.
validating_first_pick back to active_waiting_for_first_pick via StockPickBlocked or StockPickErrored.
first_pick_recorded to in_progress via TurnAdvanced.
Core command/query contracts:
StartQuickDraft
GetDraftStartSummary
BrowseStockUniverse
SearchStockUniverse
MakeStockPick
ChooseAnotherStock
GetDraftBoardPreview
AdvanceTurnAfterFirstPick
RecordBotPickContinuation
Locked Constraints
Technical and product constraints:
- No account, payment, brokerage connection, club setup, or full league setup before first pick.
- Use local/mock/delayed/prototype-only stock data posture for the first prototype.
- Support company-name and ticker recognition; do not require ticker knowledge.
- Preserve duplicate-pick prevention and unavailable-stock handling.
- Preserve clear local/prototype data labeling wherever stock data could be mistaken for live investment information.
- Preserve mobile-first web as the primary platform fit, with web app, mobile web/PWA, and playable-game posture favored.
- Use future
$ui-interview [specific-ux-variation] routing for visual proposals before prototype buildout.
Trust and language constraints:
- Must not use buy, sell, trade, profit, cash prize, entry fee, brokerage, portfolio advice, recommendation, or investment-action framing.
- Must keep the no-money, no-prize, no-brokerage, no-advice boundary visible without turning the first-pick path into a legal lecture.
- Must not hide data/mock/local/delayed labels.
- Must not imply live trading, real returns, or a recommendation to acquire or dispose of securities.
Scope exclusions:
- No production market data provider selection.
- No persistent account recovery.
- No production analytics transport.
- No legal review workflow.
- No public creator contest marketplace.
- No classroom/teacher dashboard.
- No prototype build plan or route implementation before a UX branch has passed
$ui-interview, unless the user later records an explicit bypass.
Allowed Variation Dimensions
Variations may differ across:
- Entry route: direct quick draft, search-led landing, browse-led landing, micro-onboarding, challenge prompt, board preview.
- Sequencing: concept before chooser, concept beside chooser, chooser before concept, board preview before pick, challenge prompt before chooser.
- Step granularity: one-screen sprint, two-step setup, guided three-step onboarding, browse cards, board-led preview.
- User choice points: search vs browse, pick from recognizable cards, choose challenge prompt, recover from no result, choose another stock.
- System automation: how much bot/draft-board continuation is shown before and after first pick.
- Trust copy placement: start surface, picker, selected-stock preview, validation message, first-pick success transition, board preview.
- Recovery: no result, duplicate/taken stock, unavailable stock, data unavailable, not user's turn, local-state interruption.
- Completion criterion: what makes the first pick feel recorded and worth continuing.
- Density and hierarchy: minimal, card-led, guided, board-forward, challenge-forward.
- Copy tone: direct game utility, recognizable-list confidence, friendly guided microcopy, social challenge, board/rules clarity.
Approved Concept Set
search-to-pick-sprint
Artifact path: design/ux-variations-first-pick-speed/search-to-pick-sprint.md
Name: Search-To-Pick Sprint
Thesis: Fastest route for users who arrive with a stock already in mind. Search is the dominant first control, and the pick action appears as soon as a valid company/ticker match is selected.
Archetype: task-first workflow / command-search-first interface.
Best-fit user/context: a user coming from a market story, group-chat argument, ticker mention, earnings headline, or creator clip who already wants to name a stock.
Core workflow difference: landing collapses into a search-led chooser. Concept and trust copy stay compact and proximal to the pick button.
Major tradeoff: may under-explain the fantasy frame for anxious users, so trust copy and data labels need to be extremely clear without slowing the action.
Rough complexity: low.
recognizable-watchlist-browse
Artifact path: design/ux-variations-first-pick-speed/recognizable-watchlist-browse.md
Name: Recognizable Watchlist Browse
Thesis: Company recognition beats ticker knowledge for many first-time players. Curated recognizable company cards lead, with search as a secondary escape hatch.
Archetype: browse-first card/list workflow.
Best-fit user/context: a finance-curious or fantasy-sports-adjacent user who knows brands more than tickers and might freeze if the first screen expects exact search terms.
Core workflow difference: a local/mock stock universe appears as browsable recognizable cards before the user types. Search refines or escapes the list.
Major tradeoff: can feel constrained or slower if the desired stock is missing from the curated universe.
Rough complexity: low-medium.
guided-micro-onboarding
Artifact path: design/ux-variations-first-pick-speed/guided-micro-onboarding.md
Name: Guided Micro-Onboarding
Thesis: A tiny guided sequence can preserve speed while making the game frame and trust boundary explicit enough for users who hesitate.
Archetype: guided step-by-step flow.
Best-fit user/context: a user who understands neither fantasy stock drafts nor the trust boundary, but will continue if the product explains the game in one or two lightweight steps.
Core workflow difference: the flow breaks first-pick setup into short micro-steps: game frame, pick-not-trade boundary, choose a stock, see the pick count.
Major tradeoff: extra steps may slow confident users and must not become a tutorial wall.
Rough complexity: medium.
challenge-prompt-entry
Artifact path: design/ux-variations-first-pick-speed/challenge-prompt-entry.md
Name: Challenge Prompt Entry
Thesis: A market-take challenge creates motivation before mechanics, making the first pick feel like answering a prompt or settling a debate.
Archetype: sharing-first artifact flow / social challenge workflow.
Best-fit user/context: a user arriving from a friend link, group chat argument, campus challenge, or social prompt where the reason to pick is already competitive.
Core workflow difference: entry copy frames the pick as answering a market-take challenge, with share/replay payoff foreshadowed even though this branch still stops at first-pick continuation.
Major tradeoff: may over-index on social payoff before solo gameplay is proven, and must avoid prize/betting/advice cues.
Rough complexity: medium.
board-first-preview
Artifact path: design/ux-variations-first-pick-speed/board-first-preview.md
Name: Board-First Preview
Thesis: Showing the draft board frame before the first pick makes the selection feel like a game move, not a finance-tool action.
Archetype: familiar fantasy draft board / game-board workflow.
Best-fit user/context: fantasy-sports players and users who understand draft order, turns, and taken picks faster than they understand stock-game copy.
Core workflow difference: the user sees a compact draft board, turn indicator, and empty pick slot before selecting a stock. The stock chooser is embedded as the active turn action.
Major tradeoff: board chrome can add cognitive load before the user has made any pick, especially on mobile.
Rough complexity: medium.
Decision Criteria
Fast first value:
- Strong signal: user reaches a valid first pick quickly without account setup or long education.
- Failure signal: first pick is delayed behind onboarding, sign-up, long explanation, or unclear setup.
Game-not-trade comprehension:
- Strong signal: user understands the action is a fantasy game pick, not an investment order or recommendation.
- Failure signal: copy, controls, or visual hierarchy resemble brokerage, portfolio, trading, betting, or advice workflows.
Approachable stock choice:
- Strong signal: user can choose through company names, familiar brands, or ticker search.
- Failure signal: ticker knowledge is mandatory or missing-stock recovery strands the user.
Recovery:
- Strong signal: no-results, duplicate/taken, unavailable, data-unavailable, and not-user-turn states give clear next actions.
- Failure signal: user is trapped on empty states, disabled cards, unexplained validation failures, or confusing data errors.
Trust boundary:
- Strong signal: no-money, no-prize, no-brokerage, no-advice, and data-label posture are visible at the moments where confusion risk is highest.
- Failure signal: boundary is hidden, legalistic, late, or contradicted by buy/sell/profit/prize/advice language.
Continuation intent:
- Strong signal: after the first pick, the user understands the pick counted and wants to continue to the draft board.
- Failure signal: first-pick success feels like a dead end or generic stock selection.
Implementation scope:
- Strong signal: variation can be proposed in
$ui-interview with local/mock data, no auth, no external APIs, and no production infrastructure.
- Failure signal: variation requires live market data, accounts, payments, brokerage integrations, multi-user backends, or compliance-heavy features to prove its thesis.
Validation Method
Default validation remains design-tree serial review:
- Each approved UX variation spec routes to
$ui-interview [specific-ux-variation] for a concrete UI proposal and visual review.
- Prototype buildout is deferred until an approved UI experiment branch exists.
- Future evaluation should ask whether a user can make a valid first pick quickly while understanding the game frame, recovering from stock-choice problems, and wanting to continue to the board.
Potential future experiment route names, only after UI approval:
/experiments/search-to-pick-sprint
/experiments/recognizable-watchlist-browse
/experiments/guided-micro-onboarding
/experiments/challenge-prompt-entry
/experiments/board-first-preview
Human evidence to capture later:
- Time to first valid pick.
- Whether the user can describe the action without trading/advice language.
- Whether company-name and ticker behavior feels approachable.
- Recovery friction for no result, duplicate, unavailable, or data-label confusion.
- Whether first-pick success makes the user want to continue to the draft board.
- Which trust copy placement feels clear without becoming intimidating.
Rejection Criteria
Reject any variation that:
- Delays first pick behind account setup, payment, brokerage, club setup, or long education.
- Looks like investing advice, brokerage, portfolio management, betting, cash prizes, or public contest entry.
- Hides local/mock/delayed/prototype-only data posture.
- Uses buy, sell, trade, profit, prize, advice, recommendation, or real-return language.
- Requires ticker knowledge.
- Fails duplicate-pick prevention or does not explain taken/unavailable states.
- Changes the parent flow boundary instead of varying progression through it.
- Depends on production infrastructure before the UI branch has proven the progression.
Branch Routing Context
Parent user-flow branch: first-pick-speed.
Model reference: design/model-tree-draft-stonk.yaml.
Canonical UX variation plan destination after whole-set alignment approval: design/ux-variations-first-pick-speed.md.
Canonical interview log destination after whole-set alignment approval: design/ux-variations-first-pick-speed-interview.md.
Scoped flow-tree destination after whole-set alignment approval: add ux_variations[] entries under branches[first-pick-speed] in design/flow-tree-draft-stonk.yaml.
Recommended first variation to spec: Search-To-Pick Sprint, because it directly tests the strongest speed thesis and creates the cleanest contrast baseline for the other branches.
Current Flow-Tree Snapshot
schema_version: v0.5
mode: flat
topic: draft-stonk
route:
- user-flow-map
- ux-variations
- ui-interview
- logic-wiring
- consolidate-prototypes
- spec-interview
source_artifacts:
- README.md
- concept.md
- research/icp.md
- research/competitive-analysis.md
- research/journey-map.md
- research/positioning.md
- research/_working/interrogation-user-flow-map-r1.yaml
artifacts:
flow_map: design/user-flow-draft-stonk.md
interview_log: design/user-flow-draft-stonk-interview.md
model_tree_ref: design/model-tree-draft-stonk.yaml
branch_order_override:
ordered_branch_ids:
- first-pick-speed
- equal-dollar-standings
- concept-explanation
- replay-share-invite
override_rationale: "User explicitly prioritized proof order as first-pick speed, equal-dollar standings comprehension, concept explanation, then replay/share/invite payoff. This overrides pure journey chronology because first pick is the earliest activation cliff."
recorded_at: "2026-07-02"
platform_fit:
recommendation:
primary: web_app
companion:
- mobile_web_pwa
- game_playable
defer:
- native_mobile
- other
reject:
- native_desktop
- cli
- api
- sdk
- browser_extension
- marketplace_multi_sided
- integration_automation
decision_rationale: "A mobile-first web playable keeps the first loop fast, shareable, and no-install while preserving trust-boundary and local/mock-data labeling. Native mobile and club/event-specific surfaces can wait until replay/share pull is proven."
candidates:
- platform: web_app
fit: high
evidence_basis: "First loop needs fast access, share links, and no install."
moment_of_need: "Market spark or friend link."
job_shape: "Quick interactive fantasy stock draft game."
adoption_friction: low
permission_or_trust_burden: "Medium: trust copy and data labels required."
distribution_fit: "Strong for links, groups, campus, and social sharing."
monetization_fit: "Works for free/social validation before pricing."
technical_leverage: "Strong local prototype fit."
fatal_risks:
- "Could feel less native than game apps."
required_probe: "Mobile-first clickable web prototype."
status: selected
- platform: mobile_web_pwa
fit: high
evidence_basis: "Primary behavior is mobile/social and share-driven."
moment_of_need: "Group chat, campus, or friend invite context."
job_shape: "Quick repeatable game loop."
adoption_friction: "Low unless install prompt appears too early."
permission_or_trust_burden: medium
distribution_fit: "Strong for TikTok, Discord, text, and campus links."
monetization_fit: "Later retention experiments possible."
technical_leverage: "Strong, same base as web."
fatal_risks:
- "PWA install could distract from first loop."
required_probe: "Responsive mobile web prototype; no install prompt required."
status: recommended
- platform: game_playable
fit: high
evidence_basis: "The core value is a playable draft and standings loop."
moment_of_need: "User wants to settle a market take quickly."
job_shape: "Playable local mock draft."
adoption_friction: low
permission_or_trust_burden: "Medium: avoid gambling and prize cues."
distribution_fit: "Strong for UAT and demo."
monetization_fit: "Validates replay before pricing."
technical_leverage: "Strong with fixture/mock data."
fatal_risks:
- "Game feel may overpromise data freshness."
required_probe: "Playable local mock draft."
status: recommended
- platform: native_mobile
fit: medium
evidence_basis: "Mobile behavior fits but install friction is too high before loop proof."
moment_of_need: "Repeat use after validation."
job_shape: "Lightweight game app."
adoption_friction: high
permission_or_trust_burden: medium
distribution_fit: "Useful later, weak for first visit."
monetization_fit: "Later subscription or community options."
technical_leverage: moderate
fatal_risks:
- "Install blocks market-spark immediacy."
required_probe: "None now; defer until web loop proves replay."
status: defer
- platform: native_desktop
fit: low
evidence_basis: "Core use is mobile/social, not desktop software."
moment_of_need: none
job_shape: "Heavy client."
adoption_friction: high
permission_or_trust_burden: medium
distribution_fit: weak
monetization_fit: weak
technical_leverage: low
fatal_risks:
- "Misses group-chat context."
required_probe: none
status: reject
- platform: cli
fit: rejected
evidence_basis: "Consumer game does not need command-line interaction."
moment_of_need: none
job_shape: "Non-visual tool."
adoption_friction: very_high
permission_or_trust_burden: low
distribution_fit: weak
monetization_fit: none
technical_leverage: low
fatal_risks:
- "Wrong audience and channel."
required_probe: none
status: reject
- platform: api
fit: rejected
evidence_basis: "No external integration surface belongs in the first loop."
moment_of_need: none
job_shape: "Service contract."
adoption_friction: high
permission_or_trust_burden: high
distribution_fit: weak
monetization_fit: none
technical_leverage: low
fatal_risks:
- "Premature architecture."
required_probe: none
status: reject
- platform: sdk
fit: rejected
evidence_basis: "No developer platform need in this activation loop."
moment_of_need: none
job_shape: "Developer integration."
adoption_friction: high
permission_or_trust_burden: high
distribution_fit: weak
monetization_fit: none
technical_leverage: low
fatal_risks:
- "Premature platformization."
required_probe: none
status: reject
- platform: browser_extension
fit: rejected
evidence_basis: "The job is not augmenting brokerage or news pages."
moment_of_need: none
job_shape: "Companion overlay."
adoption_friction: high
permission_or_trust_burden: high
distribution_fit: weak
monetization_fit: weak
technical_leverage: low
fatal_risks:
- "Looks too close to investment guidance."
required_probe: none
status: reject
- platform: marketplace_multi_sided
fit: low
evidence_basis: "First loop excludes creator public contests and full league management."
moment_of_need: "Public challenges later only."
job_shape: "Organizer/audience market."
adoption_friction: high
permission_or_trust_burden: high
distribution_fit: unproven
monetization_fit: "Potential later creator monetization."
technical_leverage: low
fatal_risks:
- "Changes product into public contest platform."
required_probe: none
status: reject
- platform: integration_automation
fit: rejected
evidence_basis: "No workflow automation need."
moment_of_need: none
job_shape: "Background automation."
adoption_friction: high
permission_or_trust_burden: high
distribution_fit: weak
monetization_fit: weak
technical_leverage: low
fatal_risks:
- "Wrong job shape."
required_probe: none
status: reject
- platform: other
fit: low
evidence_basis: "Could include event kiosk or club presentation later."
moment_of_need: "Club meeting."
job_shape: "Group facilitation."
adoption_friction: medium
permission_or_trust_burden: medium
distribution_fit: "Medium for pilots."
monetization_fit: "Weak until retention proven."
technical_leverage: moderate
fatal_risks:
- "Organizer needs could hijack consumer loop."
required_probe: "Defer; note during club UAT."
status: defer
branches:
- id: first-pick-speed
name: "First-pick speed"
status: pending
model_ref: design/model-tree-draft-stonk.yaml
journey_stage: onboarding
journey_sequence: 1
evaluation_priority: 1
priority_rationale: "Earliest activation cliff; user explicitly prioritized this before standings and concept explanation."
first_value_moment: "User makes the first valid stock pick."
primary_task_path: "Start quick draft -> search or browse recognizable stocks -> make first pick."
progressive_review:
first_value_moment: "Valid first stock pick."
primary_task_path: "First visit to first valid pick."
review_sequence:
- "Time-to-first-pick."
- "Company-name and ticker search."
- "Duplicate-pick prevention."
- "Pick-not-trade trust copy."
artifacts:
flow_map: design/user-flow-draft-stonk.md
- id: equal-dollar-standings
name: "Equal-dollar standings comprehension"
status: pending
journey_stage: aha_moment
journey_sequence: 2
evaluation_priority: 2
priority_rationale: "Core fairness proof after draft completion."
first_value_moment: "User understands who picked better under equal-dollar comparison."
primary_task_path: "Complete compact draft -> calculate standings -> inspect ranking and data label."
progressive_review:
first_value_moment: "Fair standings understood."
primary_task_path: "Completed draft to standings comprehension."
review_sequence:
- "Scoring clarity."
- "Equal-dollar normalization."
- "Mock/delayed/local data label."
- "Scoring error and partial data states."
artifacts:
flow_map: design/user-flow-draft-stonk.md
- id: concept-explanation
name: "Concept explanation"
status: pending
journey_stage: discovery_evaluation
journey_sequence: 3
evaluation_priority: 3
priority_rationale: "Important for trust and comprehension, but user chose to validate first-pick speed before optimizing concept-first explanation."
first_value_moment: "User can explain fantasy football for stocks without assuming real money, prizes, brokerage, or advice."
primary_task_path: "Land -> read compact concept and trust boundary -> start quick draft."
progressive_review:
first_value_moment: "Concept and trust boundary understood."
primary_task_path: "First visit to start intent."
review_sequence:
- "Category language."
- "No-money/no-prize/no-advice clarity."
- "Learn-first branch."
- "Avoiding legalistic tone."
artifacts:
flow_map: design/user-flow-draft-stonk.md
- id: replay-share-invite
name: "Replay/share/invite payoff"
status: pending
journey_stage: advocacy_retention
journey_sequence: 4
evaluation_priority: 4
priority_rationale: "Post-success payoff must show whether standings create social pull."
first_value_moment: "User chooses replay, share, or invite after seeing standings."
primary_task_path: "Standings -> replay/share/invite -> new activation loop or external handoff."
progressive_review:
first_value_moment: "User names someone to challenge or starts another round."
primary_task_path: "Result to post-success action."
review_sequence:
- "Share readability."
- "Invite motivation."
- "Club-friendly handoff notes."
- "Replay intent."
artifacts:
flow_map: design/user-flow-draft-stonk.md
decisions:
- id: user-flow-map-round-1-approval
type: approve
recorded_at: "2026-07-02"
source: research/_working/interrogation-user-flow-map-r1.yaml
summary: "Round-one answers confirmed the canonical activation loop and proof-priority branch order."
- id: coverage-checkpoint-confirmed
type: approve
recorded_at: "2026-07-02"
source: user-confirmed-inline
summary: "User confirmed no missing branches, states, or handoffs before canonical artifact writing."
next_work:
recommended_next_command: "$state-model draft-stonk"
next_pending_branch_plain_english: "first-pick speed"