Auditing the Shelves: What Happens When You Point an AI at your shelves,"

Auditing the Shelves: What Happens When You Point an AI at your shelves,"

Our (mostly Karrie's) book collection (horde) lives in two places: on the actual shelves, and inside CLZ Books, the cataloging app we've used for years to track it all. In theory these should always match. In reality, years of impulse buys, ARCs, signed editions, and the occasional gift mean the shelves and the database quietly drift apart, and nobody notices until you go looking. By the time we realized it was an issue, it had become such a big task to fix that we kinda quietly ignored it. It's almost always more fun to acquire new titles than to reorganize the existing ones.

After kicking that can down the road too long, today I ran an experiment: could I clean up the data using nothing but photos of the shelves and my homelab tech stack, which already leverages Hermes and Claude AI tooling?

The process

In what seems like a minor miracle for projects like this, it turned out to be simple, and honestly really satisfying to watch come together:

  1. Photograph a section of shelf. Just a normal phone photo — spines facing out, sometimes crammed two rows deep or half-hidden behind candles and bookish knickknacks.
  2. Claude reads every spine it can make out — title, author, sometimes the publisher's logo when a title was ambiguous or partly obscured — and turns it into a plain list we can reference.
  3. Cross-reference against a CSV export of Karrie's actual CLZ library (2,300+ books when we started) to see which of those spines already have a matching entry.
  4. Flag anything that doesn't match, then go verify it — not just trust a text match, but actually chase down the real book (right edition, right author) with a web search when a spine was stylized, cut off, or just hard to read. In the past this was always the most time-consuming and painful task. Now it was reduced to minutes.
  5. For anything genuinely missing, build a ready-to-import CSV with the real ISBN, publisher, page count, and publication date already filled in — a one-click import instead of manual re-typing and tabbing across screens and windows.

Where it got interesting (because it always does somewhere along the way with these projects)

Partway through, something didn't add up. A couple of books I'd flagged as "missing" turned out to already be in Karrie's collection during a random spot check — I'm still not sure whether I imported twice by accident or one of our import/export cycles went a bit sideways. The AI tooling helped by live-searching, reconciling, and repairing the differences. It didn't just handle it on its own, en masse. I value my data too much to turn AI loose on it carte blanche. But working with it — reviewing, approving, and guiding the process — safely delivered accurate results I was comfortable with. We hit a few bumps like this, and each little gotcha we found was a chance to improve the logic and checks we were running across the data.

Good reminder that automation is only as good as the data you hand it, and how you structure your process around it. AI is an amazing tool, not a replacement for actual humans. From that point on we treated the CSV as a first pass, not gospel — anything flagged missing that seemed surprising kicked off additional steps to verify we had the right data in the right place. Building in safety checks and natural guardrails has been the cornerstone of my AI learning and projects so far, for a reason. It doesn't just keep the data secure; it builds better process and tools.

We also hit another fun side quest: an entire shelf that turned out to be Karrie's signed book shelf. Once we confirmed those titles were genuinely missing from the catalog, I added a "Signed by" field to the import file, pre-filled with each author's name — a real field CLZ tracks, though it's buried on the Value tab rather than the Personal tab, which took some digging to find. That led to another discovery: our standard export wasn't including all the useful fields in the first place. No signed field, not even a synopsis field, was coming out in the dump. A quick change of process and a couple of tool updates, and we not only had more data to cross-reference — it made the tools we'd already built better, by giving us more to search on.

The part that makes it actually useful

Here's the piece I care about most, because it's what turns a one-day experiment into something we'll use every week: the same inventory that powers this audit also feeds Hermes, our local chatbot setup. Hermes is the backbone of a little on-the-go system that lets us query our collections from anywhere — standing in a bookstore, wondering do we already own this?, and getting a straight answer without digging through an app. No friction, no "let me check when I get home." The audit keeps the inventory honest; Hermes puts that honest inventory in our pocket, always ready through tools we already use daily. (In our case, through Signal messenger.)

That's the whole point of doing it right. A clean catalog isn't the trophy — it's the fuel for a tool we actually reach for. One that lets us focus on curating and enjoying the library.

The numbers

By the end of the day we'd worked through roughly 30 shelf photos — somewhere in the neighborhood of 400–500 individual book spines — and found close to 80 books sitting on the physical shelf but missing from the digital catalog. Every one got resolved down to a real ISBN, publisher, and publication date, bundled into import-ready CSVs.

The audit turned up a bigger surprise about the collection as a whole, too: once the signed shelf sent us digging, we found we have over 600 signed editions in the library — nearly 25% of everything we own. Along the way we also caught a handful of smaller data issues worth cleaning up separately: duplicate entries, a few author-name typos, and one book cataloged under a retitled edition that didn't match its current cover.

Why building the system is worth it

The satisfying thing wasn't any single step — it's that it turned a genuinely tedious job (manually checking hundreds of spines against a database) into an afternoon instead of a weekend, while still catching the kind of nuance a pure barcode scan would miss: misread titles, retitled editions, ISBN collisions, and a data export that was quietly lying to us.

And here's the real payoff, the reason spending a day on this pays for itself many times over: the groundwork is done. The next collection is already teed up. My movie shelves get the exact same treatment — photograph the spines, read them, cross-reference the catalog, chase down the misses, build the import file — and almost all of the hard part is already built and ready to point at a new problem. What took a full day to figure out for the books will take a fraction of that for the discs, because I'm not starting over. I'm reusing.

That's the quiet argument for taking the time to build systems like this instead of just powering through the task once by hand. The books themselves don't change, but the tools for taking care of them keep getting better — and the good ones you only have to build once. It's a great example of how adopting new tech, and looking at what you can do with AI locally in your day-to-day life, can really pay off. Through projects like this I'm coming to fear it less and appreciate it more for the possibilities it offers.