Build · Internal
Spirit Spy
A private, self-hosted catalog for a personal spirits collection: snap a label, let a local AI read and enrich it, and keep every detail on hardware I own.
Read the build-it-yourself PRD ↗ Download the Markdown ↓
Challenge
A trip to Hanalei Spirits sent me home with six bottles of rum, dropped into a collection I had quietly stopped keeping track of. It had grown a bottle at a time, each one tied to a place or a moment, and the shelf had tipped from collection into "wait, do I already own that?" Every app I looked at wanted me to hand my data to someone else, pay a recurring fee for something I would use in bursts, and still gave me no easy way to show and share the collection. I wanted a simple, private record of what I own that I could keep current in seconds and share on my own terms.
Build
The hard parts were already running on my own hardware from earlier builds: computer vision from a heuristics tool, web search and retrieval from a research tool, and a CPU background-removal service. Spirit Spy wires them into a single flow.

I snap a label, a local vision model reads it, and I confirm what it found. Curved glass, handwritten batch numbers, and wrap-around labels make a clean read hard, so web enrichment fills the gaps: it searches for the bottle, pulls only the facts the sources actually state, and stores those sources on every entry.

The same flow lifts each bottle off my messy basement background and floats it on a styled backdrop, so an amateur phone photo turns into a product-looking shot in seconds. The whole loop, from photo to saved entry, takes under a minute a bottle.
Outcome
Every bottle becomes a complete entry: cited detail, a cleaned-up product shot, tags, and a published card, all from a photo and a few taps. It deliberately leaves out pricing and collection value, the one feature the subscription apps sell and the one I was glad to skip, because this is about the experience and the memory each bottle holds.

The same foundation now feeds a wishlist, so a bottle spotted in the wild can be photographed, enriched, and saved for later, ready to promote into the collection if I bring it home. The collection lives as a public showcase at spiritspy.gogomito.com, every bottle floated on its backdrop and filterable by category and region.

I am sharing it as a build-it-yourself PRD: hand the brief to your own AI agent, on your own hardware, and build your own catalog for whatever you collect. The framing fits any collection, and my comics are next.
The Stack
I build the hard parts with Claude as my pair, then local models carry the everyday work on hardware I own. No external model API and no per-token bill, so a personal catalog stays genuinely private: my data, my photos, my shelf.
- A local vision model reads each label from a photo and prefills the entry
- A local LLM pulls only stated facts from the web and cites its sources on every bottle
- A CPU background-knockout service turns phone snapshots into clean product shots
- An expression-and-bottle data model that keeps batches, sizes, and variants straight
- A public read-only showcase, plus a code-free build-it-yourself PRD to share the recipe
- Mac Mini M4 for development, a dual-GPU Linux server for inference
