JSONB round-trip test · In-App Referral Program
Status · ExploringUsers share a referral code; when a friend signs up, both receive credit. Design must clarify empty states, fraud detection, and cross-platform behavior.
Context & Problem
Problem
No clear user experience for referral tracking, fraud prevention, or cross-platform consistency.
Why now
Feature is in early exploration; fundamental UX questions remain unresolved.
Hypothesis
A transparent referral dashboard with clear empty states and fraud safeguards will drive adoption and trust.
Goals & Success
Scope
Users & Jobs
Primary persona
Existing user seeking rewards
Job to be done
When I want to invite friends, I want to share a code and track their signups, so I can earn rewards.
User Stories
As a referrer, I can see an empty state with a clear CTA to share my code when no one has signed up yet.
As a referrer, I can view a list of pending and completed referrals with their status.
As a referrer, I receive a notification when a friend uses my code and signs up.
As the system, I can detect and reject self-referrals or fraudulent signups.
As a user on web, I see the same referral dashboard and sharing options as on the app.
User Journey
Discover Referral Program
Generate and Share Code
Referral Empty State
Monitor Pending Referrals
Claim Reward
Flows & Information Architecture
- Referral Program
- Referral Dashboard
- Empty StateZero referrals, invite CTA visible
- Active Referrals ListPending / Completed / Disputed
- Rewards SummaryTotal earned, claimable balance
- Share Code Flow
- Code Display ModalCopy / Share buttons, QR optional
- Share Target SelectionWeb: copy link. App: native share.
- Fraud Detection
- Self-Referral BlockSystem rejects same IP/email
- Disputed Referral ViewUser sees why referral flagged
- Referral Dashboard
States & Edge Cases
| Screen / Flow | Default | Loading | Empty | Error | Success | Fraud Flag | Offline |
|---|---|---|---|---|---|---|---|
| Referral Dashboard | |||||||
| Empty State (No Referrals) | |||||||
| Active Referrals List | |||||||
| Share Code Modal | |||||||
| Fraud Dispute Detail |
Rationale & Alternatives
Handoff & Definition of Done
- Empty state screen designed and annotated with copy, share CTA, and spacing
- Fraud detection rules and self-referral block logic documented with examples
- Cross-platform QA matrix (web/iOS/Android) signed off with parity checklist
- Referral status labels ('Pending', 'Completed', 'Disputed') designed with icons and colors
- Error and offline states for dashboard and share flow fully specified
Addressed · Skrut
Built with Skrut — the design-doc auditor.

