Consulting Work Blog Contact
← Back to blog

The Junk Drawer on Your Phone: What 7,915 Screenshots Actually Contained

The Junk Drawer on Your Phone: What 7,915 Screenshots Actually Contained

I had 7,915 screenshots on my phone. Five years of them, back to 2021: recipes, half-read articles, places someone recommended, apps I meant to try, boarding passes long expired. A pile that big stops being a memory aid and becomes landfill, because you never scroll back far enough to find the one thing you saved it for. So I pointed AI at the heap. The lesson that came out is the one I now use at work: split the job by difficulty, spend the cheap tool first and the expensive one only where the cheap one fails.

TL;DR

  • 7,915 screenshots over five years, sorted into six buckets in an afternoon.
  • The split that worked: extract text on-device first (free, private), cheap keyword rules for the narrow categories, AI only for the open-ended remainder.
  • Out the other end: a searchable map of 192 places and a clean list of 186 apps worth trying.
  • I deleted 1,717 rows on purpose: being able to index everything doesn’t mean you should.

Everyone has this pile

This isn’t really a phone story. Every team has the same junk drawer somewhere: a shared folder of scanned receipts nobody reads, a chat export with five years of decisions in it, a hundred PDFs dumped on a drive “for later.” The data is technically searchable and practically dead. My camera roll was just the version of that drawer I happened to own.

The cheap method that half-worked

My first instinct was keyword rules. If the text on a screenshot says “invoice” or names an insurance company, it’s admin. If it mentions a street or a city, it’s a place. Fast, free, no AI bill.

On the boring stuff it was nearly perfect: the admin bucket of insurance, banking and bureaucratic screenshots sorted itself almost flawlessly, because that text uses the same narrow vocabulary every time. Closed vocabulary is exactly what dumb rules are good at.

Then it hit the places and fell on its face: four caught out of nine real location screenshots. There is no fixed list of words that means “this is a place.” A restaurant name can be anything, a shop can be named after the owner’s cat. Open-ended categories have no vocabulary to match against.

The split that actually worked

First, get the text off every image on-device. Modern phones and laptops have built-in text recognition that’s free, fast, and never sends your data anywhere. For 7,915 images that ran in minutes on my own machine, at zero cost. For a company this matters even more: a folder of scanned receipts is exactly the kind of thing you do not want to ship to a third-party service just to sort it.

Then bring in the expensive tool for the genuinely hard part. The keyword rules stripped out the admin pile, and only the messy remainder went to an AI model. On the same nine-place test, recall went from four to seven. The model could look at a screenshot and understand “this is a café someone recommended” without me predefining a single word. That’s what AI is actually worth paying for: judgement on open-ended stuff, not work a regular rule could do for free.

Five years of phone clutter, sorted into six buckets: 7,915 screenshots by category

What came out

The 814 location screenshots condensed to 192 unique places, 131 of them with real coordinates on a personal map. Five years of “you have to try this place” finally lives somewhere I can see at a glance. The software screenshots became a deduplicated list of 186 apps and tools worth a look. The 1,693 idea screenshots clustered into themes, so the recurring ones surfaced instead of drowning. Finding a saved place went from hopeless to seconds.

The rows I deleted on purpose

Sorting the pile surfaced a question I hadn’t planned for: do I actually want all of this in a searchable database, even my own. The answer was no. Personal messages and the whole banking-and-insurance pile, 1,717 rows together, came out of the index. The original images stayed backed up elsewhere, untouched.

That call generalizes hard. The capability to index everything arrives before the judgement about what you should index. The same effort that makes a pile findable makes it findable by the next person who gets access, so “should this be queryable at all” is a decision someone has to make on purpose, bucket by bucket.

What I’d do differently

I’d skip the day I spent stubbornly tuning keyword rules for the places bucket while the recall sat at four out of nine and argued back. The signal was on the table early; I just didn’t want to believe it.

The part I carry into work, though: the sorting was the easy part. For years the size of that drawer was accidental privacy; nobody could find anything in it, including me. The moment it became searchable, the only thing standing between “useful archive” and “liability” was a keep-or-drop call I had to make by hand. Cheap search doesn’t just surface value. It quietly hands you a governance problem you didn’t have yesterday.

You can sort your team’s pile cheaply, this week. The real question is who gets to query it once you do, and which rows should never have a front door at all.

Stack: Python · Apple Vision OCR · Claude API · SQLite

Need something like this for your own business? See how I can help →