Skip to main content

Feature prioritization (RICE)

Purpose. Classify every feature doc under features/, attach a measurable KPI to each, RICE-score them on one consistent scale, and derive the MVP-1 cut. This is a planning artefact derived from the feature architecture docs; it does not change any feature's design. When a feature doc's scope or status changes, re-score the row here.

1. Methodology

RICE = (Reach × Impact × Confidence) / Effort. The scales below are fixed so every row is comparable.

  • Reach (1–10). Pre-launch proxy = the share of households that touch the feature in a typical quarter. 10 = every household, every session (the act surface, auth, consent, offline-first, the economy); ~6 = most households use it but not daily; ~3–4 = a meaningful minority; 1–2 = niche (therapist export, cash-out). It is a relative proxy, not a user count, because there is no live install base yet.
  • Impact (RICE anchors). 3 = massive (make-or-break for the north-star or a legal blocker), 2 = high, 1 = medium, 0.5 = low, 0.25 = minimal.
  • Confidence (100 / 80 / 50 %). 100 = built or fully specced with no open decisions; 80 = SDK-ready / clear scope with minor open questions; 50 = unresolved persona-model gaps, regulatory ambiguity, or an undecided build-vs-integrate / free-vs-paid question. The 50 % rows trace mostly to the persona-lens gap review (Owner⊇Admin contradiction, standalone-Helper, PIN ownership, kiosk identity, COPPA-guardian binding) and to design docs still marked DRAFT — under review.
  • Effort (person-weeks). One integrated workstream's estimate to ship the feature with its tests and a review gate. UI-only-on-ready-SDK ≈ 1–2 pw; a domain reshape touching ledger + RLS + migration ≈ 5–6 pw.

Type. Functional = a user-facing capability (a thing a member/admin does). Non-functional = a quality attribute or cross-cutting concern (security, COPPA/privacy, accessibility floor, offline-sync, content-moderation, observability/analytics, audit, the authz model). Non-functional features are graded on operational KPIs (consent-capture %, crash-free rate, p95 sync latency, WCAG AA pass %, moderation coverage), not engagement.

Layer (per the two build surfaces — see index and code). Frontend = design_system atoms + app blocs / pages / auto_route, verified by visual-regression + flow tests. Data = client_sdk service rules → adapters → models + Supabase schema / RLS / migrations, verified test-first at the service level. Cross = needs both substantially. Each row carries a 3–5 word build-approach note.

KPI philosophy. One north-star: Weekly Active Engaged Households (WAEH) — households with ≥1 approved chore completion in the week, trending toward token-fade progression (the intrinsic-motivation thesis: the economy should recede as habits form). Every functional KPI rolls up to WAEH (the act loop, the goal loop, the differentiators that drive return visits); every non-functional KPI is an operational gate that protects WAEH (a COPPA failure or a sync-loss bug ends engagement). KPIs name a concrete event/source wherever the analytics layer can emit one (analytics-telemetry is the substrate that makes them measurable).

2. Master table (sorted by RICE, descending)

FeatureTypeLayer (build approach)KPI (+ how measured)RICERICETier
Today (chore surface)FunctionalFrontend — DS+bloc+flow-testCompletions / active member / week — chore_completed event → WAEH10380%38.0MVP-1
OnboardingFunctionalCross — wizard UI + SDK setupActivation rate: % new households completing setup + 1st chore — funnel onboarding_step_completed10380%38.0MVP-1
Member ProfileFunctionalFrontend — DS+bloc+flow-testGoals created / member; goal_created, goal_reached → token-fade thesis82100%28.0MVP-1
Terms & consentNon-functionalCross — consent record + re-consent gateConsent-acceptance % (must be 100% pre-use); re-consent completion on change10280%28.0MVP-1
CatalogFunctionalFrontend — DS+bloc+flow-testBrowse→action conversion; reward_redeemed / chore_claimed / week9280%2.55.8MVP-1
Security & data protectionNon-functionalData — RLS + encryption + key rotationZero RLS-bypass defects; crash-free rate; secret-rotation cadence met10280%35.3MVP-1
Personas (authz model)Non-functionalData — kind/role/owner model + RLS guardsZero permission-escalation defects; access-matrix test coverage %10250%25.0MVP-1
Children's privacy (COPPA)Non-functionalCross — VPC capture + data-min + deletionVerifiable-consent capture % of child members; zero minor-tracking events10350%72.1MVP-1
Offline syncNon-functionalData — Drift cache + conflict resolutionOffline action success %; sync conflict rate; p95 sync latency10380%54.8MVP-1
Visual timersFunctional ⭐Frontend — DS atom + local tickerTimed-chore on-time completion lift; timer_started per timed chore6280%24.8MVP-1
HouseholdFunctionalFrontend — DS+bloc+flow-testHousehold-tab DAU; family-goal creation rate8280%34.3MVP-1
NotificationsFunctionalCross — local sched (free) + FCM/APNs (paid)Notification opt-in %; re-engagement taps → WAEH8280%34.3MVP-1 (local)
RoutinesFunctional ⭐Cross — SDK sequence model + Today UIRoutine completion rate; routine_completed/started (exec-function hook)7380%44.2MVP-1
Settings (Profile hub)FunctionalFrontend — nav scaffold + auto_routeSettings reachability; pending-item badge accuracy (route-through)80.5100%14.0MVP-1
Print & printablesFunctionalFrontend — PDF gen (built)Printable generation count (already built; envelope-column polish)40.5100%0.54.0MVP-1 (built)
Step breakdownFunctional ⭐Cross — step list on chore + checklist UIStepped-chore completion lift; step check-off rate6280%2.53.8MVP-2
Accessibility (per-member prefs)Non-functional ⭐Frontend — DS prefs + a11y floorWCAG AA pass %; a11y-pref adoption (floor is an MVP-1 gate; prefs panel MVP-2)7280%33.7MVP-2 (floor=MVP-1)
Money & EnvelopesFunctionalData — ledger reshape + RLS + migrationFunds-moved / active member / week; goal-envelope allocation % funds_moved9380%63.6MVP-1
Activity gatingFunctional ⭐Data — gate-eval service (flag built)Gated-activity unlock rate; activity_unlocked per household6280%33.2MVP-2
KudosFunctional ⭐Cross — new model + timeline entryKudos sent / week (non-financial reinforcement → intrinsic motivation)6280%33.2MVP-2
Admin featuresFunctionalCross — config hub over SDK servicesAdmin config-save events; % households finishing economy/catalog setup7280%42.8MVP-1
DashboardsFunctionalFrontend — read-only widgets + watch streamsDashboard glance sessions / week; widget drill-through rate7280%42.8MVP-2
Account & profile managementFunctionalData — Supabase Auth wiringAuth success rate; password-reset / email-change completion10250%42.5MVP-1
History & ledgerFunctionalCross — ledger read feed + UILedger-view sessions / week (ledger_viewed)6180%22.4MVP-2
What's new / changelogFunctionalFrontend — versioned modal + local dismissChangelog view rate; post-update feature-awareness60.580%12.4MVP-2
Support, help & feedbackFunctionalCross — FAQ + feedback formFeedback submissions / week; support-deflection rate6180%22.4MVP-2
Kid-mode PIN lockFunctionalCross — PIN store + locked viewKid-mode activation rate on shared devices7250%32.3MVP-2
Analytics & telemetryNon-functionalCross — Mixpanel config-gated + consentEvent-pipeline coverage %; opt-in capture; zero minor PII (KPI substrate)8180%32.1MVP-1
Email digestsFunctionalData — Edge Function + email serviceDigest open rate; admin opt-in %5180%22.0Later
Roles & permissions (assign/invite)FunctionalData — role-set service + invite flowRole-assignment success; invite acceptance rate7250%41.8MVP-2
Allowance automationFunctionalData — scheduled Edge Function + ledger credit% households with allowance configured; allowance_paid job runs5180%2.51.6MVP-2
AppearanceFunctionalFrontend — DsTheme prefsTheme/density override usage %60.580%1.51.6MVP-2
Child timelineFunctional ⭐Cross — activity feed + visual UITimeline views / child / week (reflection engagement)6180%31.6Later
Chore photo submissionsFunctional ⭐Cross — Storage + moderation + UIPhoto-submission rate; approval-with-photo % (blocked on moderation)6250%41.5MVP-2
Content moderationNon-functionalData — AI/human review + CSAM detectionUGC moderation coverage % (100% target); CSAM detect/escalation (gates photos)6250%41.5MVP-2
Privacy & GDPRNon-functionalCross — erasure + portability + consent recordsErasure-request fulfillment SLA; DPA in place6250%41.5Later (pre-EU)
Subscription tiersFunctionalCross — paywall + RevenueCat/Stripe + gatingFree→paid conversion; trial→paid (free/paid split undecided)6250%51.2MVP-2
OS widgetsFunctionalFrontend — Glance / WidgetKit (per-OS)Widget install rate; widget→app opens4180%31.1Later
Backup, restore & portabilityNon-functionalData — export archive + restore pathExport-request fulfillment; restore success rate4180%31.1Later (pre-EU)
SearchFunctionalData — Supabase FTS / trigram indexSearch usage / session; search→action rate4180%31.1Later (deferred)
Audit logNon-functionalData — append-only event storeAudit completeness %; admin audit-view usage5150%2.51.0Later
Profile switchingFunctionalCross — local display context + PINShared-device profile-switch rate6150%31.0Later
Token fadingFunctional ⭐Cross — fade engine (research-heavy)Fade-progression % (the intrinsic-motivation north-star thesis)4350%61.0Post-MVP (Phase 2)
TV & desktop lean-backFunctionalFrontend — adaptive/kiosk layoutLean-back display uptime; daily active displays (kiosk identity unresolved)4250%50.8Later
Localization & i18nNon-functionalFrontend — ARB/intl externalizationNon-English MAU share (post-launch trigger)3180%40.6Later
Referral & sharingFunctionalCross — referral codes + attributionReferral conversion; viral coefficient (needs PMF)3150%30.5Post-MVP
Family calendarFunctionalCross — calendar model OR integrationCalendar engagement (build-vs-integrate decision required)4150%50.4Later (decision-gated)
Clinical OT frameworkFunctional ⭐Cross — Phase 2, external clinical reviewTherapist-share usage; clinical adoption (HIPAA-gated)2250%80.3Post-MVP (Phase 2)
Cash-outFunctionalCross — payment rail + approval + ledger debitCash-out request rate (money-transmission regulatory risk)2150%60.2Post-MVP

⭐ = neurodiversity differentiator (the product's reason to exist).

COPPA re-scored 4.8 → 2.1 — adopting under-13 support via verifiable parental consent raised effort (5 → 7) and lowered confidence (80% → 50%). It stays MVP-1: a legal blocker overrides RICE, so the row is left in place rather than re-sorted into the 2.x cluster.

3. The MVP-1 cut

Everything above the line delivers a compliant, offline-first, neurodiversity-affirming token economy a family can use daily. The set splits cleanly across the two workstreams (they build in parallel, but data leads — see §4).

Data-led MVP-1 (SDK / services / Supabase — service rule + RLS + migration)

  • Personas (authz model) — pin the contested matrix decisions first (Owner-vs-Admin, standalone-Helper) so guards/RLS are correct.
  • Money & Envelopes — the economy/ledger reshape (moveFunds + unallocated + envelope generalization). Key dependency for goal-envelopes, allowance, and the wallet transfer sheet; the append-only ledger + zero-floor + walletOf are already built, so MVP-1 scope is the move/unallocated layer.
  • Offline sync — the offline-first promise; an architectural gate, not a screen.
  • Security & data protection — RLS is built; encryption, key rotation, Storage ACLs finish the posture.
  • Children's privacy (COPPA) — verifiable consent + data minimization + deletion path. A legal blocker: the product cannot launch to its audience without it.
  • Admin features — the config hub (catalog/member/economy CRUD); without it a household cannot be set up beyond onboarding.
  • Account & profile management — real Supabase Auth wiring (skeleton exists).
  • Analytics & telemetry — the lightweight, consent-gated measurement substrate that makes every other KPI (starting with activation) observable.

Frontend-led MVP-1 (DS atoms + blocs + flow-tests)

  • Today (chore surface) — the act loop / primary KPI surface.
  • Onboarding — the activation funnel.
  • Member Profile — six UI-only gaps over a ready SDK.
  • Household — restructure to read-only people tiles + Family Goals.
  • Catalog — browse + redeem.
  • Routines + Visual timers — the two MVP-1 differentiators (routines is the load-bearing first-then exec-function hook; timers are the cheapest concrete win, estimateMin already on the model).
  • Notifications (local tier) — free-tier reminders/approvals; push is MVP-2.
  • Terms & consent — the consent-capture UI gate.
  • Settings (Profile hub) — the nav scaffold the above route through.
  • Print & printables — already built; rides along with envelope-column polish.

Explicitly deferred past MVP-1 (with the one-line why)

  • Search(user-signaled NOT MVP-1) a client-side catalog filter suffices until the catalog is large enough to justify full-text.
  • Token fading — the north-star thesis, but research-heavy and gated on the Phase 2 clinical framework.
  • Clinical OT framework — Phase 2; needs external clinical sign-off + HIPAA review.
  • Cash-out — money-transmission regulatory risk; validate the token economy first.
  • TV & desktop lean-back — the kiosk session/identity vs household-RLS question (gap review X7) is unresolved.
  • Family calendar — needs an explicit build-vs-integrate (Skylight/Google) decision.
  • Referral & sharing — wait for product-market fit and a growth need.
  • Privacy & GDPR / Backup-portability — required before EU launch, not for the initial (US/CA) launch.
  • OS widgets, Email digests, Localization, Audit log, Child timeline, Profile-switching — valuable but none are launch-blocking; they fast-follow.

4. Build-workstream note

The two sets sequence differently because the UI depends on the data layer, so data leads. A frontend feature is only "SDK-ready" once its service methods, models, and RLS exist — so the data-led MVP-1 (personas/authz, the money/envelope reshape, offline-sync, auth, security) must land first or in lockstep, and several frontend rows (Member Profile, Household, Catalog) are cheap precisely because that groundwork is already built and verified test-first. Non-functional bars are gates, not features: COPPA consent, household-scoped RLS, the accessibility floor baked into every DS atom, and content-moderation for any UGC are pass/fail entry conditions — they gate the release regardless of their RICE, which is why several sub-3.0 rows sit in MVP-1 while higher-scoring polish (dashboards, history-ledger) waits. Practically: the data workstream builds and TDD-verifies the service+schema slice, the frontend workstream builds the DS+bloc+flow-test slice against it, and each feature ships through its flutter review gate with the gates already green.

5. Low-confidence rows (scored at 50% — flagged)

These could not be scored with full confidence; their RICE will move once the underlying decision is made:

  • Personas / Roles-permissions — the access matrix has live contradictions (Owner⊇Admin vs independent marks; standalone-Helper; zero-admin/zero-owner guards). Pinning the matrix semantics is the single highest-leverage fix per the gap review.
  • Account-profile-management — auth wiring is deferred; last-owner-deletion and multi-house membership are open.
  • Kid-mode / Profile-switching — PIN ownership (per-profile vs household-wide) is contradicted across the two docs.
  • Chore photo submissions / Content moderation — moderation approach (AI vs human), CSAM escalation, and non-guardian-Helper visibility of child photos are unresolved.
  • Subscription tiers — the free/paid feature split and non-owner-admin paywall routing are undecided; revenue Impact is real but unscheduleable until then.
  • TV & desktop lean-back — depends on a dedicated kiosk identity + privacy-reduced household scope decision.
  • Family calendar — build-a-calendar vs recommend-an-external-tool is an explicit open product decision.
  • Token fading / Clinical OT — research- and clinical-review-gated (Phase 2).
  • Privacy-GDPR / Audit-log / Cash-out — regulatory ambiguity (data residency, audit visibility, money-transmission licensing).