benyoung.ai
← Back PDF keeproll.app ↗

Case Study · Personal product

I ran out of disk space, so I shipped a paid app to curate a lifetime of photos.

KeepRoll started as my own problem and became a product. A local-first Mac app that curates media across iCloud, external drives, and local folders, surfaces the best shot of a burst, and syncs your keepers back to your phone.

Role: Solo, built with AI Live product: keeproll.app 239 commits in ~17 days Python, zero-build
KeepRoll: a Mac app curating a photo library, showing kept and trashed counts
KeepRoll, live at keeproll.app. Swipe to keep or trash across every place your photos live.

The problem (it was mine)

I ran out of space on a 2TB laptop. I did a storage audit with Claude, which flagged a mountain of video and multimedia and suggested moving it to the cloud. My reaction: that is like moving a house I do not want into another house. The real problem was not storage. It was that a decade of photos and video was scattered across my phone, my desktop, and several drives, thick with duplicates and forgotten moments, and I had never actually curated any of it.

Apple Photos only manages what lives inside Apple Photos. Nothing I could find handled media across external drives, local folders, and iCloud at once, and then let me make fast keep-or-lose decisions without dread. So I built it.

What I built

KeepRoll is a local-first photo-curation app for the Mac. You point it at everywhere your media lives and it gives you one fast, calm place to curate it:

The KeepRoll curation view: one photo front and center with a filmstrip and kept/trashed totals
The curation view: one decision at a time, with running kept and trashed totals across a 120 GB library.

Try it yourself

This is the actual KeepRoll interface, running live below on a sample library. On a computer, use the arrow keys or the on-screen buttons to keep, trash, or archive; on a phone, swipe. It is the same curation flow the real app uses.

Loading the live demo…

A sandboxed, client-side demo. The real app runs on your own Mac across iCloud, external drives, and local folders.

How it is built

The engineering choice I am proudest of is restraint. KeepRoll is deliberately lightweight: a Python standard-library HTTP server with an embedded HTML/CSS/JS front end, no web framework and no build step, SQLite for state, and perceptual hashing rather than a machine-learning model for near-duplicate detection. The core is a 14-mixin Sorter architecture that keeps the logic composable.

I built it solo, with Claude Code, in roughly seventeen days across 239 commits. That velocity is the point: a real, shippable, paid product from a standing start in under three weeks, because the tooling let me move at the speed of the idea.

flowchart LR
  S["Scattered media
iCloud · drives · folders"]:::raw --> K["KeepRoll
dedup · perceptual-hash clusters · swipe"]:::mine K --> C["A curated library
keepers only"]:::good C --> P["Synced back
to your phone"]:::mid classDef raw fill:#fee2e2,stroke:#dc2626,color:#7f1d1d; classDef mine fill:#dcfce7,stroke:#16a34a,color:#14532d; classDef good fill:#dbeafe,stroke:#2563eb,color:#0b3a8f; classDef mid fill:#eef2ff,stroke:#6366f1,color:#1e1b4b;
Scattered media in, a curated library out, synced back to the device you actually use.

Why it matters

This is the clearest example of how I work: take a real, felt problem, frame it sharply, and ship a product that resolves it, fast. Most people sit with a “what if I could…” and never build it. I turn that into a live, paid system in weeks. KeepRoll also shows range, it is a polished consumer product, not an internal tool: design, packaging, a marketing site, and a checkout, all the way to a paying customer. That instinct, problem to shipped product, is exactly what I bring to a team that has more good ideas than it has time to build.

By the numbers

239
Commits, solo, built with AI
~17 days
From personal problem to shipped product
Live
Paid product at keeproll.app
3
Sources unified: iCloud, drives, folders
0
Build steps, frameworks, or runtime ML
14
Mixin Sorter architecture, composable by design
A personal product, live at keeproll.app. It is the lead example of how I turn a “what if I could” into a shipped system. Happy to walk through it in a conversation.