Skip to main content

Success

EPIC: chores
Chores
STORY: today_sections
As a household member, Home shows my expectations (by kid), the bounties I can claim, and (as a parent) the approvals I owe.
AC: success
Home shows all three sections; claiming a bounty and approving a submission fire the JTBD funnel analytics.

initial state — Welcome page (unauthenticated landing)

Expect:
  • booting signed out lands on the Welcome page
Events:
  • AuthStarted
  • [ANALYTIC] [page]: WelcomeRoute

tap Sign in on Welcome → the sign-in page

User Actions:
  • Tapped: widget with key [<'WelcomePage.signIn'>]
Expect:
  • tapping Sign in on Welcome pushes the sign-in page
Events:
  • [ANALYTIC] [page]: SignInRoute

sign in → Home shows all three sections + funnel analytics

User Actions:
  • Entered text: parent@example.com
  • Entered text: hunter2
  • Tapped: widget with key [<'SignInPage.signInButton'>]
Expect:
  • signing in lands on Home
  • the Expectations section heading renders
  • the seeded expectation renders, grouped by kid
  • the Bounties section heading renders
  • the claimable bounty renders
  • bounty rows render (claimable + claimed)
  • the first claimable bounty exposes a Claim affordance
  • the Approvals section heading renders for a parent
  • the pending approval renders as a card
Events:
  • AuthSignInRequested
  • AuthUserChanged
  • [ANALYTIC] [page]: HomeRoute
  • HouseholdStarted
  • TodayChoresStarted
  • HouseholdMembersChanged
  • [ANALYTIC] event: today_section_shown {section: expectations, count: 1}
  • [ANALYTIC] event: today_section_shown {section: bounties, count: 2, claimable_count: 1}
  • [ANALYTIC] event: today_section_shown {section: approvals, count: 1}
  • TodayChoresChanged
  • TodayApprovalsChanged

claim a bounty → bounty_claimed funnel fires (bucketed)

User Actions:
  • Tapped: widget with key [<'BountyRow.claim'>]
Events:
  • TodayBountyClaimed
  • [ANALYTIC] event: bounty_claimed {chore_id: 30056832, token_value_bucket: 4-9}

approve a submission → approval funnel fires

User Actions:
  • Tapped: widget with key [<'ApprovalCard.approve'>]
Expect:
  • the approved item leaves the queue
Events:
  • TodayApprovalApproved
  • [ANALYTIC] event: chore_completion_approved {chore_id: 718331934, kind: completion, resolved_by: parent}
  • [ANALYTIC] event: approval_resolved {approval_id: 598318270, decision: approved}

submit an expectation → submitted-pending + funnel

User Actions:
  • Tapped: widget with key [<'TodayChoreRow.check'>]
Expect:
  • submitting creates a pending approval — the honest "submitted" state, not a credited checkmark
Events:
  • TodayChoreCompletionSubmitted
  • [ANALYTIC] event: chore_completion_submitted {chore_id: 798295341, kind: expectation}