AI for thrift stores, 2026
ThriftySpark: AI that puts 25,000 thrift stores online
Say you want a pair of red Prada shoes, secondhand. There are more than 25,000 thrift stores in America and one of them probably has your size on a shelf right now. You cannot search any of them. Not the one near you, not all of them. You drive, or you give up.
That is the problem I started with. The answer to why nobody had fixed it turned out to be labour: a thrift store prices a piece in about thirty cents of staff time, and a listing with a photo, a title, a category, a description and a price costs far more than that, on a shirt that sells for $2.99. So the shelf stays offline. ThriftySpark is the company I founded to remove that labour with AI. Photograph the piece, and the listing, the price, the category, the inventory record and the SKU exist in seconds. Stores sell on it today.
From the shelf to a live listing in seconds
One photo. Claude's vision model reads it, and every field a listing needs is filled before the piece is back on the rack. This is the block the homepage leads with, and it is the whole reason the company exists. Watch it happen:
One photo, taken on a phone in the back room.
- Titleplaceholder
- Categoryplaceholder
- Priceplaceholder
- Descriptionplaceholder
- Inventory and SKUplaceholder
- Listingplaceholder
The prize for a store is not small. In my own research across stores, the ones that sell online report at least double the revenue and profit of the ones that do not. That gap is the business case for ThriftySpark in one line: the only thing standing between a store and the other half of its revenue is the labour of listing, and that is exactly the cost AI removes.
One shopper, two Tuesdays
The same person wants the same pair of red Prada shoes. The top lane is every thrift store today. The bottom lane is a store on ThriftySpark. Watch where the two lanes split.
Two kinds of shopper come to a thrift store: the one hunting a specific piece and the one who wanders in to look. Today the store serves only the second. With a listing per piece and a city-wide search, it serves both, and it learns from each visit.
The storefront is marketing the store never had
- See the stock before you visit. A thrift store's whole pitch is “you never know what you'll find”, which is also why most people never go. A page that shows what is on the racks today turns a maybe into a trip, and brings people through the door who would never have come on a hunch.
- Sell the high-value piece at its real price. A $120 coat on a $3 rack waits weeks for the one local who knows what it is, and eats shelf space the whole time. Online it finds that buyer in a day, in any city, at the price it deserves.
- Free the shelf. Floor space is the scarcest thing a thrift store has. Every piece that sells online, or is reserved before the shopper arrives, is a hanger that turns over faster.
- Show up where people search. A store page with a listing per piece is a page Google can index. “Red Prada shoes size 8 near me” becomes a search that lands on a thrift store for the first time.
I am the founder and the only product manager. The market research, the competitor map, the stress test and the four newest screens were produced by AI agent sessions I briefed and ran; the decisions in this post are mine. The engineering story of how that team rebuilt the product in one day is a separate post: the sprint case study.
1. The whole product on one picture
A thrift item has one life: it arrives, gets sorted, priced and tagged, sits on the floor, gets cheaper, and sells in the store or online. Every tool a store can buy today covers a slice of that line. ThriftySpark covers the line, and the thing that makes it one product rather than eight features is that every step reads and writes the same record.
That single record is the product. A sticker gun does not know what it tagged. Square does not know a piece is one of a kind, or that it is on day 21 of a ladder. ThriftySpark knows both, which is why markdowns can run themselves and why a piece cannot sell twice.
2. Who it is for: the manager of one to five stores
The research built five composite personas from job postings, trade blogs and volunteer guides. Two are the customer. One waits. Two are out, and one of those is a buyer rather than a seller.
- Primary Maria, manager of an independent thrift store with a few paid staff. Two stores, eight staff, Square at the till, a sticker gun and coloured tags. Too small for enterprise retail systems, too busy for spreadsheets.
- Primary Dale, volunteer coordinator at a charity shop. One paid manager, fifteen to thirty volunteers on short shifts. Needs the same back room plus roles so a volunteer never sees revenue or voids a sale.
- Secondary Priya, owner of a consignment boutique. Needs splits, payouts and markdown windows. Purpose-built tools exist, so she waits until there is a consignor ledger.
- Out Sam, full-time reseller. Wants cross-listing and sold comps, which mature tools already do. Sam matters as a buyer on store storefronts.
- Out Jo, manager at a charity chain location. Head office picks the systems, the pricing rules and the processing clock.
Maria's day, and where the product enters it
The reason the segment is independents and small charity shops is that their day is the whole back room, and nobody above them sets the rules. Here is her day with the screens that take each job.
3. What it does: eight screens, one stock count
Each screen replaces something physical. The last column is the honest state of each one as of this writing.
| Screen | What it does | What it replaces | State |
|---|---|---|---|
| Intake | Turn a donor's bags into priced, tagged draft stock at sticker-gun speed. A letter picks the category, digits type the price, Enter adds. | The sticker gun and a clipboard | Live. Not yet timed on a shop floor. |
| Markdowns | One price ladder, set once. Stale stock gets cheaper on a schedule. Preview first, apply on confirm, never silently. | Coloured tags pulled by hand each week | Live, previewed in production; the ladder has not been applied for real yet. |
| Register | A proper till: several items, discount, tax, cash with change or card, one charge, a receipt, a same-day void. Money in integer cents. | Square's free tier, or a cash box | Live; a cash sale and a void have run on a real store. |
| Import | Drop a CSV from Square, Shopify or a spreadsheet and the stock arrives as drafts. Preview and commit are the same analysis. | Re-typing the whole inventory | Live, tested on fixtures; one real store export is the next test. |
| AI listing | Photograph the pieces worth selling online. Claude writes the title, description, category and a price range in about thirty seconds. | Fifteen minutes of typing per listing | Live since the first version. Reserved for the valuable tail. |
| Storefront | A hosted shop page per store with reservations and pay at pickup. Resellers and locals browse what the floor has. | Nothing, or a Facebook post | Live. Online is the tail of the business, not the head. |
| Labels | Barcode tags from the same SKU the till scans. Print through the normal OS dialog. | A sticker gun with no barcode | Live. |
| Analytics and reports | What sold, what is aging, what is unlabelled. End-of-day cash count is next, now that sales carry tax and tender. | A notebook | Analytics live; end-of-day report not built. |
The order matters. Intake is the first job of the day and the first thing a pilot measures. The register is the base that end-of-day, returns, offline sales and consignor payouts all build on. Everything else is downstream.
What I cut, and why a smaller product is a better one
The first version was built like an e-commerce store: carts with quantities, wishlists, item reviews, a return-risk demo. The test for every feature became one question: does this serve a shop selling one-of-a-kind secondhand goods mostly in person? Quantity on a listing defaults to one, so anything built on multi-quantity assumptions was suspect.
Every cut came from the same rule. A review feature on an item that sells once is cost without a reader. A password shipped in the browser is not a control.
4. The UI: built for a keyboard and a busy back room
A thrift back room is not a desk. People stand, wear gloves, and process a bag in minutes. So the design rules are strict: one font, cream paper, sharp corners, hard shadows, monochrome icons, no gradients, and at most one orange button per page so the eye always knows what the next action is. The intake screen never needs a mouse. Here are four screens as they are laid out in the product.
Intake. Left hand on the category keys, right hand on the numbers. The pieces-per-hour readout is the pilot's success metric, on screen the whole time.
Register. The worked example from the build: $15.00, $3.00 off, 10% tax, $13.20 total, $20 cash, $6.80 change. All money is integer cents, so there is no floating-point penny.
Markdowns. Set the ladder once, see exactly which pieces change and to what, then confirm. Two managers clicking at once cannot discount the same piece twice.
Storefront. A hosted page per store. The valuable tail, listed by AI in thirty seconds, visible to the resellers and locals who hunt it.

Six seconds on a Duke rooftop, October 2026
This is what the back room looks like.
A student-run thrift pop-up with the Chapel behind it. A few hundred pieces, every one priced by hand with a sticker, and not one of them searchable online that afternoon. The next section is the arithmetic of why.
5. The economics of a $2.99 shirt
This is the number that explains why thrift was never online, and what AI changes. One donation-processor job posting asks for 35 pieces an hour at $10 to $12 an hour. That is $0.29 to $0.34 of labour per piece just to price it. A hand-written listing, with a photo, a title, a description and a price, takes 15 to 20 minutes on top, which is several dollars of labour on a shirt that sells for $2.99. Nobody lists at that price, so the shelf stays dark. ThriftySpark's AI takes the listing from minutes to seconds and from dollars to cents. What it cannot change is the marketplace fee: eBay still takes about 75 cents on a $2.99 sale, so the cheapest pieces are still better sold in the store, with a record, and the online push goes to the pieces that clear the fee.
Where the money is, and where AI pays
Online is where the growth is, and it is still a tail. ShopGoodwill, the biggest thrift e-commerce site in the country, sold about $450M in 2025, up 22%, and that is under a tenth of Goodwill's retail revenue, with an in-house AI tool listing 130,000 to 140,000 items a month. Goodwill built that tool for itself. The other 25,000 stores have nothing like it. ThriftySpark is that tool for them, with the back room attached so every piece gets a record at intake and the AI listing is one keystroke away for any piece worth it.
What ThriftySpark itself costs to run
The cost to serve one store is close to zero. The AI step runs on Claude at low effort and costs a few cents per listing, and a store that lists 200 pieces a month online spends under a few dollars of model time. Hosting on Vercel and Supabase is a fixed cost shared across every store. The marginal store costs cents a month; what it costs is support and the founder's time to get it live. That is a software business with a very high gross margin and a very small customer. The whole business question is whether the price a store will pay is above what it saves.
6. What a store gains, and how each gain gets measured
Every benefit below is a hypothesis with a measurement attached. None has been measured on a shop floor yet. That is the point of the pilot.
| Where the money leaks | What ThriftySpark does | Evidence today | How the pilot measures it |
|---|---|---|---|
| Processing labour | Intake at or above 35 pieces an hour with a SKU on every piece | $0.29 to $0.34 a piece today, with no record until the tag | Pieces per hour on a pilot floor against the sticker gun |
| Stale stock | Markdown ladder runs itself; floor space turns over | Ladders exist everywhere but are pulled by hand and skipped when busy | Share of items past day 30 before and after |
| Till errors and voids | One charge per sale, itemised, with a receipt and an audited void | Till errors and voids are a named shrink source | Nightly totals matched against the old till for a week |
| Hidden value | Flag the few pieces worth listing online and list them in 30 seconds | A store added $100 to $200 a week by pricing on quality; a $600 game nearly went in the bin | Online revenue per store per month |
| Switching cost | Catalogue import in minutes | Re-entering inventory stops any POS switch | Rows imported from a real export |
7. The market: small shops, big count
Market sizing in thrift is messy because the public numbers disagree. The Census Bureau, citing the trade association, says more than 25,000 resale, consignment and nonprofit resale shops operate in the United States. IBISWorld puts thrift store revenue at $14.1 billion in 2025 and counts far fewer businesses under its narrow definition, while its broader used-goods category counts 87,000. ThredUp projects US secondhand apparel at $74 billion by 2029. I use the shop count for sizing, because ThriftySpark sells per store, not per dollar of resale.
The honest reading: subscriptions alone make this a good small business, not a venture-scale one. The venture case, if there is one, is the second and third revenue line in section 9 and the fact that no incumbent owns the independent segment.
Why now
- Secondhand is growing faster than retail. The US secondhand apparel market grew 14% in 2024, its strongest year since 2021, and more donations means more back-room work per store.
- A vision model can now price a thrift item from a photo for cents. Two years ago a photo-to-listing step was a research project. Today it is an API call at low effort, which is why it can be reserved for the tail and still be worth running.
- The incumbents are stuck on their own segment. ThriftCart grew up in nonprofit chains, ConsignCloud in consignment, Square in general retail. None has moved into donation intake.
8. Competition: the empty corner
The research profiled about twenty products in seven groups. They split into three camps: tools for online resellers, tills for stores, and consignment systems. The map puts the main ones on two axes: where the product lives, and how much of the work it does for you. Placements are judgement from public pages, not a measured score.
Who covers what: ten capabilities, nine products
The competitor session read every vendor's public pricing and feature pages and filled a grid. This is that grid as a picture. Full means the capability is on the entry plan; half means a paid add-on, a higher tier, or a partial version.
Read the columns. Donation intake has two cells filled in nine rows. AI listing plus a POS has one. That intersection is the product.
| Who | What they are | Why they do not cover the back room |
|---|---|---|
| ThriftCart | Nonprofit thrift POS, from $99 a month, claims over 500 stores | Closest direct rival. No intake at sticker-gun speed, no AI listing of the tail. |
| ConsignCloud, SimpleConsign | Consignment POS, $139 to $159 a month | Consignor ledgers and payouts. The calmest UI in the category. Not built for donation intake. |
| Square, Shopify POS, Lightspeed | General retail POS, free to $89 a month | The default till. Multi-quantity SKUs, no idea of a one-off piece, no markdown ladder, no intake. |
| Vendoo, List Perfectly, Crosslist | Cross-listers for resellers, $15 to $30 a month | Serve Sam, not Maria. No till, no store. |
| eBay's AI listing tool | Free inside eBay | Writes listings for free. Any product that only writes listings competes with free. |
What the alternatives charge a month
The purpose-built tools charge $99 to $159. The general tills are cheap or free, and that is the real competitor: Square plus a sticker gun plus a notebook. ThriftySpark has to be worth more than that bundle by a margin a manager can feel in a week.
9. Business model: a subscription, then payments, then a network
There is no public price yet. The rule for setting one is that the price has to sit well below what a store saves in processing labour and recovered margin, and neither number exists until the pilot measures intake speed and markdown recovery on a floor. The tiers below are the proposal the pilot will test, not a published price.
| Tier | Price | Who it is for | What is in it |
|---|---|---|---|
| Floor | $0 | A store trying it on one register | Intake, labels, register, 25 AI listings a month, a storefront |
| Store | $79 a month | One independent store with a paid manager | Everything in Floor, unlimited AI listings, markdown ladder, import, reports |
| Stores | $59 a month per location | Two to five locations, or a charity with volunteers | Everything in Store, roles and PIN login, one bill |
Three revenue lines, in the order they can exist
- Subscription. Per store per month. This is the business for the first year and pays for itself at a few dozen stores because the cost to serve is near zero.
- Payments. A small fee on online sales through the storefront, on top of the processor's own. Only meaningful once stores list the tail regularly.
- Network. Resellers like Sam hunt across many stores. If enough stores are on one storefront system, a cross-store search is the first product a buyer would pay for. This is the venture-scale story, and it is the least proven line.
10. The research under all of this, and what it cannot tell me
Everything above comes from desk research: job postings, Goodwill's disclosures, trade newsletters, local news on floor cycles, volunteer guides, and the public pricing pages of about twenty competitors. Every claim in the source reports is tagged as sourced, derived, assumed or checked in the code, so I can tell which of my beliefs rest on a number and which on a hunch.
Thirteen jobs, ranked by the money at stake
The use-case session listed every job a thrift store does, ranked them by money lost or gained per week for a store doing a few hundred sales a day, and scored how well the product served each one. Rank one is the biggest. The two bars per job are before and after the October build.
Three of the top four moved to covered. Job one, pricing from sold comps, stays partial on purpose: the data is behind eBay's limited-release API and a bad suggestion costs trust. Job five, leakage, waits on roles and an audit log, which need the register first.
- What the research reached. Public pages only. Reddit was blocked and the trade association publishes no numbers, so the “what managers complain about” evidence comes from Square, Shopify and eBay community threads, job posts and news.
- What it did not. No store manager has been interviewed. The personas are composites. The market figures disagree with each other, which is why the sizing above uses store counts and labels the middle number an estimate.
- What changed because of it. The pitch. The product was “AI listing for every item”. One paragraph about a $2.99 shirt turned it into a back-room system with AI reserved for the tail. The sprint post covers how that re-aim was built in a day.
11. How I run this: a founder who manages AI like a team
I do not have a research team, a design team or an engineering team. I have briefs. Every piece of evidence in this post was produced by an AI agent session with a written brief that named the question, the sources allowed, the files it could touch and what “verified” had to mean in its report. My job is the part a product manager is for: deciding what to ask, what to accept, and what to do with the answer.
The decision log
Seven decisions shaped the product. Each one had options, evidence, and a call that was mine. I keep them in a log because the next person to join needs to know why the product is the shape it is, not just what it is.
| Decision | Options | Evidence | The call |
|---|---|---|---|
| Change the pitch | Keep "AI listing for every item" or re-aim at the back room | $0.30 of labour a piece, 80% of a floor at $2.99 or less, eBay lists for free | Re-aimed. AI stays, but only for the tail. |
| Pick the segment | Independents, charity shops, consignment boutiques, resellers, chains | Chains run head-office stacks; resellers already have mature tools; consignment needs a ledger | Independents and small charity shops. Consignment waits. Resellers are buyers. |
| What to build first | 13 proposed features | Ranked by money at stake; needs no other feature first; disjoint files; testable on mocks | Intake, markdowns, register, import. The register because four later features need a sale record. |
| Skip the obvious AI feature | Pricing from sold comps was job number 1 | The data needs eBay's limited-release API; a bad suggestion erodes trust faster than no suggestion | Skipped for now. Own-sales history first, once the register produces sales. |
| What to cut | Return-risk demo, item reviews, wishlists, two login systems, Bluetooth-only printing | A one-off item sells once, so a review has no reader; thrift is final sale; a client-side admin password is not a control | Cut or hidden. The product got smaller and more honest. |
| Price | Set a price now or after the pilot | No measured saving yet; the purpose-built band is $99 to $159 | Propose $79, publish nothing until a store has paid it. |
| Trust a day-old till | Switch stores over or run in parallel | A till built by agents in a day has no track record | Parallel for a week, totals compared nightly. |
How the product was attacked before a store saw it
Before any store touched the new screens, a stress session wrote six persona agents and ran them against a mock backend in parallel: 197 persona instances, 8,141 steps, zero failures and one low finding. Then the same harness ran against the real backend with no database attached and surfaced two real code defects, both fixed. A kickoff audit had already catalogued 63 defects in the old code, and six that could have cost a store money were fixed that day.
| Persona | What it does | Steps |
|---|---|---|
| Store owner | signs up, generates a listing from a photo, publishes, rings a sale, exports to eBay | 551 |
| Shopper | browses, searches, fills a cart, reserves as a guest, checks out | 947 |
| Returning customer | registers, logs in again, cancels an order, closes the account | 696 |
| Abusive user | forged logins, other tenants' ids, hostile uploads, floods | 5,584 |
| Slow network | tiny timeouts, retries after giving up, double taps on submit | 182 |
| Browser shopper | real Chromium on the storefront, console errors, a UI reservation | 44 |
12. What would kill it
| Risk | What it would mean | What I am doing about it |
|---|---|---|
| ThriftCart ships intake first | The wedge closes and ThriftySpark becomes a tool run alongside a rival | Move fast on the pilot; the importer makes coexistence survivable; the asset is store relationships and pilot timings |
| Intake is slower than the sticker gun | The first feature of the day fails on the floor | Kill criterion: if intake cannot beat 35 pieces an hour by week 3 of the pilot, drop it and test the register alone |
| Stores do not trust a new till | The register sits unused next to Square | Run it beside the old till for a week with nightly totals compared; only switch when a full week matches |
| Personas are composites | The product is aimed at a store that does not exist | Three pilot stores and a 20-minute interview script come before any marketing spend |
| Small market, low price | A niche that never pays for a team | Price against labour saved, add payments and the storefront network as second revenue lines, keep costs near zero per store |
13. Where it is, and the next ninety days
The product is live at thriftyspark.com with the eight screens above. The four back-room screens went into production in October and have each been used on a real store: intake, import, the markdown preview, and a cash sale with a void. Done, for the product, means three pilot stores running intake and the register, intake beating the sticker gun on a real floor, and all four screens used for a full week without anyone going back to paper.
Every month ends in a gate with a no-branch. The product has been built. The company has not been proven. Three stores and ninety days decide which of the two this post turns out to be about.
If you run a thrift store and want to be one of the three, or you are hiring a product manager who works this way, the contact section is the fastest route.
Sources
- IBISWorld: Thrift Stores in the US, market size ($14.1bn, 2025)
- IBISWorld: Used Goods Stores in the US (87,112 businesses, $27.7bn)
- US Census Bureau, citing NARTS: more than 25,000 resale, consignment and nonprofit resale shops
- ThredUp 2025 Resale Report: US secondhand apparel to $74B by 2029
- CNN via NBC Palm Springs: Goodwill passes $7 billion in revenue
- Modern Retail: ShopGoodwill record sales, GMV, AI listing volume
- Donation processor job posting: 35 pieces an hour at $10 to $12
- Thrift Retailer: first price, right price
- Thrift Retailer: theft and leakage
- Columbia Missourian: three week floor cycle
- Goodwill of North Georgia: colour of the week
- St. Vincent de Paul: volunteer shift minimum
- ThriftCart
- ConsignCloud pricing
- SimpleConsign pricing
- Vendoo pricing
- List Perfectly pricing
- Shopify POS pricing
- Lightspeed Retail pricing
- NerdWallet: Square fees
- eBay: selling fees
- eBay: the AI listing tool (company-reported figures)
- Internal: the ThriftySpark use-case report and competitor report (October 2026), the four feature build reports, and the production walk-through notes.