The core loop (the whole product)
Scan → Clean → Crown → Share
- Scan: index your entire camera roll fast
- Clean: delete duplicates / blur / burst spam safely
- Crown: “Best 20 of the month” + auto albums
- Share: one link to family/friends (viral)
Your app isn’t a camera. It’s a life organizer.
5-screen MVP (ship this first, nothing else)
1)
Home
- Big button: “Scan My Camera Roll”
- Stats: Photos • Duplicates • Blurry • Screenshots • Space reclaimable
- Default CTA: “Free up X GB”
2)
Scan Progress
- “Indexing…” “Finding duplicates…” “Picking best shots…”
- ETA not needed; just show momentum + counts climbing
- Toggle: On-device only (default ON)
3)
Review & Clean
Three tabs:
- Duplicates (grouped stacks, choose “Keep Best” preselected)
- Blurry (confidence slider)
- Bursts (auto picks the winner)
Actions:
- Swipe left = delete suggestion
- Swipe right = keep
- Undo always visible (trust = everything)
4)
Albums Auto-Made
Auto albums (generated instantly):
- People (family clusters)
- Trips (time + location)
- Docs/Receipts
- Pets
- Best of Month
Each album has one button: “Make Recap”
5)
Recap & Share
- Generates a 30-photo story (Month Recap)
- Export options:
- Share link (private + expiring)
- PDF (for printing / memory book)
- Send to family (SMS / WhatsApp)
This screen is the growth engine.
What “Scan” actually does (under the hood, still simple)
A) Fast indexing (metadata-first)
- Pull asset metadata: timestamp, location, dimensions, subtype (screenshot), burst id
- Store to local DB (SQLite)
B) Duplicate detection (cheap + brutal)
- Compute perceptual hash on downsampled images
- Cluster by hash distance (near-duplicates)
- Pick “best” by:
- sharpness (Laplacian variance)
- exposure (histogram sanity)
- faces open eyes / smiles (optional later)
- resolution preference
C) Blur + junk detection
- Blur score + motion smear heuristics
- Burst winner selection
- Screenshots by OS subtype / folder heuristics
D) Best-of-month ranking (the “joy” feature)
Score = sharp + well-exposed + faces + uniqueness + variety
Then enforce diversity (don’t pick 20 near-identical shots).
Privacy model (this is your killer differentiator)
Default:
- On-device processing
- No uploads
- Share links are opt-in only
If user chooses cloud:
- End-to-end encrypted albums
- Expiring links
- “Only people with the link can view”
Make privacy a flex.
Data model (minimal tables that scale)
- assets(id, local_identifier, created_at, lat, lon, width, height, subtype)
- features(asset_id, phash, blur_score, exposure_score, face_count)
- clusters(cluster_id, type) // duplicates/burst/trip
- cluster_members(cluster_id, asset_id, rank_score, keep_default)
- actions(asset_id, action, timestamp) // kept/deleted/undo
- recaps(id, month, asset_ids, share_token, expires_at)
Monetization (clean + global)
Freemium
- Free: scan + small cleanups + 1 recap/month
- Pro ($): unlimited cleanup + unlimited recaps + encrypted sharing + “family vault”
Add an annual plan and you’re printing money.
Build plan (fast, real, shippable)
Week 1: Prototype
- Photo permissions + indexer
- Local DB
- Basic UI flow (Home → Scan → Results)
Week 2: Duplicates + Bursts
- pHash pipeline
- Cluster UI stacks
- “Keep Best” auto-selection + Undo
Week 3: Best-of-month + Albums
- Trip grouping (time windows + location)
- Best-of ranking + diversity
- Album view
Week 4: Recap + Sharing
- Recap generator
- Export PDF
- Share links (start with simple hosted view; encrypt next)
Week 5: Polish for trust
- Safety rails: “Recently Deleted” integration, restore flow
- Performance tuning + battery
- Beta via TestFlight / Play testing
Landing page copy (your voice, maximum punch)
<h1>PHOTO INBOX ZERO</h1>
<p><strong>Your camera roll becomes organized in 60 seconds.</strong></p>
<ul>
<li><strong>Delete duplicates</strong> — keep the best shot automatically.</li>
<li><strong>Kill blur</strong> — remove junk with one swipe.</li>
<li><strong>Best of Month</strong> — your life, curated.</li>
<li><strong>Share a recap</strong> — one private link to family.</li>
<li><strong>On-device by default</strong> — your photos stay yours.</li>
</ul>
<button>Scan My Camera Roll</button>
<p><em>Less chaos. More life.</em></p>
The ONE decision that makes this explode
Make the default output not “albums” — make it a monthly recap link.
Because:
links get shared → installs happen → families onboard → billion-person curve.
If you want, I’ll do the next layer: exact UI text for every button, the scoring formula for Best-of, and a one-page product doc you can hand to a dev and start building today.