EarnOS · production app · viral-loop plan

The viral loop is where the gap is. Here's how we close it.

Production and the P2P sandbox score about even on money features. The whole difference is the viral loop — get invited, trust what you see, come back. This is the shipped app today, next to what it becomes, theme by theme. Most of it is already built and proven in the sandbox — this is port-and-verify, not invent.

Viral-loop scoretarget proven in the P2P sandbox
7.8Production now
8.8After this plan
54
Open findings
12 critical · 15 high · 27 polish
38
On the viral loop
where the gap lives
5
Themes to fix
3 = the next release
~90%
Port-ready
already in the sandbox
Now → Next

Five themes, before and after

Full screens, at true size — the real shipped screen on the left, the fixed state on the right. Ordered by leverage.

01

The receiver welcome — the half of the loop that doesn't exist

An invited friend taps a link and lands on a bare black screen, then the generic login. The whole app contains no "invited by" copy anywhere — the invitee never learns who invited them or that money is waiting.

CriticalEffort · MPort-ready
Now
no acknowledgment
9:41
ExploreConnectWalletYouReferrals
A dark View and a redirect straight into the generic app.
Target
9:41
MT
Maya Torres invited you 🎉
$2 the second you join, $1 more the moment you verify — $3 total.
✓ Paid by EarnOS — never from Maya's pocket
Start earning
Wrong person? Change code
Named, amount shown, persisted through signup — a real welcome moment.
02

Real, not fake — remove the invented social proof

Mission and share cards show three stock stranger faces and, when real data is missing, a fabricated "N earning" count generated from the mission ID. In a money app, invented numbers are a trust liability.

CriticalEffort · SNear-revert
Now
fabricated
9:41
Missions
Stream a Discover Weekly playlist
Spotify · 10 mins
🙂
🙃
😐
12,847 earning
Open a Chime checking account
Chime · Instant
🙂
😐
8,204 earning
ExploreConnectWalletYouReferrals
pravatar.cc faces + 10,000 + (id·k mod 240k) shown as fact.
Target
9:41
Missions
Stream a Discover Weekly playlist
Spotify · 10 mins
AR
JT
2 friends here
Open a Chime checking account
Chime · Instant
JT
Be the first
ExploreConnectWalletYouReferrals
Real participants or none. Honest counts from actual payout data.
03

Errors that recover — stop showing "you have nothing"

A network blip renders as an empty state across seven surfaces. Worst case: "No referral earnings yet 🎉" while the user has real unclaimed money. Same pattern on Connect, Progress, Search and the leaderboard.

CriticalEffort · M1 shared fix
Now
network blip
9:41
🎉
No referral earnings yet
Invite a friend to start earning together
ExploreConnectWalletYouReferrals
A celebration of nothing — while $12.50 is actually unclaimed.
Target
9:41
⚠️
Couldn't load your earnings
Check your connection and try again
Retry
ExploreConnectWalletYouReferrals
An error that says so, and a Retry — the exact pattern we shipped in the sandbox.
04

Money that tells the truth

Sub-$1 earnings show "Expires in 2d" but the claim button is locked at $1 — so a $0.60 balance counts down and vanishes, unclaimable. Elsewhere, an already-claimed mission plays "Processing…" then silently dumps the user home.

CriticalEffort · S–MPort-ready
Now
unclaimable
9:41
Rewards expire 30 days after you earn them — claim to keep them.
Unclaimed
$0.60
Claimed
$34.20
⏳ Expiring soon
Don't lose your $0.60
Priya S. · +$0.60 · completed their first mission
Expires in 2 days
🔒 Reach $1 to claim
ExploreConnectWalletYouReferrals
The clock runs while the button is hard-gated. The money just disappears.
Target
9:41
Rewards are held safe — nothing expires until you can claim it.
Unclaimed
$0.60
Claimed
$34.20
$0.60 held safe
Priya S. · +$0.60
Nothing expires$0.40 to go
The clock pauses until you reach $1 — then claim it all in one tap.
ExploreConnectWalletYouReferrals
Pause the expiry below the minimum, and acknowledge every claim honestly.
05

Progress that shows progress

The tab literally named "Progress" shows mission cards with no completion indicator, and a blank screen while loading. Users must open each mission to see where they stand.

HighEffort · SPartial · needs step data
Now
9:41
Netflix Originals
$4
Stream a playlist
$4
ExploreConnectWalletProgressReferrals
Reward and title only — the "Progress" tab shows no progress.
Target
9:41
Netflix Originals
$4
Step 2 of 3almost there
Stream a playlist
$4
Step 1 of 2just started
ExploreConnectWalletProgressReferrals
"Step 2 of 3" and a bar, plus loading skeletons instead of blank.
The recommendation

Ship themes 1–3 as the next release

Those three are the spine of the loop: get invited → trust what you see → recover from errors. Together they move production most of the way to the sandbox's viral score. Themes 4–5 are the strong follow-on. Because the sandbox already implements each target, this is port-and-verify, not design.

RELEASE · 01

The receiver welcome

The invited friend is named, the money is shown, the moment persists through signup.

RELEASE · 02

Real, not fake

Delete the stock faces and fabricated counts. A near-revert with a real trust payoff.

RELEASE · 03

Errors that recover

One shared "Couldn't load — Retry" pattern across all seven surfaces.

One decision to settle first

5% vs 10% referral share. Production's multiplier constants are both 0.1 today, while the copy work assumes 5%. This is a call, not a fix — settle it before any referral-surface work so the copy lands right the first time.