PHOTO INBOX ZERO — build spec (MVP that can go global)

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.