Projects

Project Log

September 19, 2026

Homebrew Inventory Management

A custom inventory management system for used and new books, built directly on top of the Google Sheet we already tracked inventory in. It lists and delists across AbeBooks, Biblio, and Alibris automatically.

Listing used books online

Small, independent bookstores have a problem with inventory management. There's no good way to track used books.

With new books, it's simple. You're selling identical copies of the same title, so any point-of-sale system can handle it.

Used books don't work that way. Every copy is different. Once it sells, there's nothing to restock. So most stores don't bother tracking used inventory at all.

That's been driving me up a wall for years. We have more than 3,000 used books on the shelves at Chapter House Books, and until recently we had no running inventory system for any of them.

That sounds like a small inconvenience. It's not. You can't sell a used book in the store and list the same book online at the same time. If you're not tracking used inventory, you have no way of knowing whether an online order can actually be filled once someone in the store buys the copy off the shelf. So most independent bookstores just pick one channel and give up on the other.

Starting back in June, Annie and I have been using Claude to build our own inventory management system for used and new books. It's layered directly on top of the Google Sheet we already used to run the store.

Scan the barcode on the back of a book and it pulls the ISBN, title, author, publisher, and year automatically. The system prints a price sticker with its own barcode.

Once that's on the book, one button lists it live everywhere we sell. It's a real listing on AbeBooks through their actual seller API, not a generic export. It's also properly formatted listings for Biblio and Alibris, with the right photo attached to each.

The moment a book sells anywhere, in the store or on any marketplace, it delists automatically everywhere else. The couple of platforms without a live delisting connection just get flagged for a quick manual confirmation.