Putting a thrift store's inventory online with a $2 microcontroller — Snapy Blog
menu
arrow_back Blog
June 2026
Putting a thrift store's inventory online with a $2 microcontroller
A field report from getting Snapy running at North Shore Sports Swap
Sven Jensen
I'm Sven Jensen, a 21 year old Canadian computer scientist and geographer, and in this blog I will explain how my friend Elijah and I built Snapy, a system to solve the secondhand inventory online problem. But first some background information and why this matters for everyone.
I worked at a bike shop in 2020. Demand for bikes and parts was soaring, but supply chain problems meant there were shortages. We had to collect used bikes for resale or to scavenge for parts. Customers went online rather than in stores, so I started posting Craigslist and Facebook ads. It took me two hours to post ten. This is when I discovered the problem of syncing a secondhand storefront's inventory online, and 6 years later I have finally found the right solution.
Why does this matter for everyone? Snapy leaves more money in local communities and less carbon dioxide in the atmosphere, here's why. There are thousands of storefronts with secondhand goods sitting on their shelves un-digitized. Syncing this unique inventory online allows shoppers to search through the higher quality cheaper options. Secondhand storefronts that use the Snapy system see higher turnover, putting more money into the local resale / consignment mom & pop shops, and less into big enterprise retailers. The environmental benefits of buying used goods over new is well documented[1]. Buying something used skips the most resource-hungry stage of a product's life, its manufacturing, which avoids the raw material extraction, water, and carbon that a brand new alternative would burn, and keeps a perfectly good item out of the landfill.
TL;DR — We built an app that lists secondhand inventory in 20 seconds and a $4 hardware box that delists items when they sell in store. Deployed at a consignment sports shop, sales went up 10% in three weeks, and climbing.
This problem is hard. Secondhand storefronts have high volumes of unique products, and have no idea what their inventory will look like next week. Their supply chain consists mainly of donors and consignors dropping off what they found in their garage. Consistently digitizing and uploading each product is costly. The brute force solution; manually take photos and build listings for each product, then cross-list them on Google Local Inventory, Facebook Marketplace, Craigslist, eBay, a Shopify site, SidelineSwap, and so on. This process takes upwards of 15 minutes to get a single listing across the various online platforms. The moment a product sells in store, a staff member needs to delist that product from the various online platforms. This brute force method is too slow and complex for a local shop to maintain live inventory synced across multiple platforms. 15 minutes to list a $40 pair of hockey skates is too much.
So what are stores doing now? Some stores will selectively list their best items on a couple of platforms, while leaving out the vast majority of their inventory.
This leaves the growing number of secondhand storefronts and secondhand shoppers missing out on the benefits of syncing the inventory online. This blog post describes the birth of Snapy, the prototype system that my friend Elijah and I built to solve it, and how we got it working at North Shore Sports Swap.
A two part solution
This is a two part solution. Part #1 is a way to intake product data fast and easy. Part #2 is a way to detect sales in store and pull those products from online. For the first part we built a PWA where staff snap photos of a product, review the Gemini generated title, description, and specs, then confirm and push the product online. This drops the time to list from 15 to 20 minutes down to about 15 or 20 seconds per product. For the second part Elijah built the Snapy Box in his garage in one day. It is a simple box made from two microcontrollers that sits in between the barcode scanner and the POS system. It intercepts any product barcode scanned at checkout and sends it up to our Snapy server, where some code then delists it from the online channels.
The capture flow is built to feel like an assembly line. A staff member opens the Snapy app, snaps a set of photos of an item with its barcode somewhere in frame, and hits Add. Then they move straight to the next item and start snapping again, while the previous set is already being processed in the background. A Gemini call reads the photos, pulls out the brand, model, condition, and category, and writes the title and description. One person just keeps photographing down the rack, and the finished listings show up behind them.
The barcode in the shot is not optional. Every submission needs one, because that barcode becomes the item's identity across every platform. It is how a sale at the...