aher.dev

Back to the blog

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.

The buyerwants red Prada shoes, size 825,000 stores, none searchabledrives, or gives upwhy?The cause: labour$0.30 of staff time to price a pieceminutes more to photograph and list iton a shirt that sells for $2.99soThriftySpark: AI does the listingone photo intitle, category, price, description,SKU and inventory out, in secondsWhen listing costs seconds instead of minutes, the shelf goes online and the buyer can finally search it.

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:

Titlea name a buyer would search for
Categoryapparel, shoes, home, books, the lot
Pricea suggested price and a retail range
Descriptioncondition, brand, size, material
Inventory and SKUa stock record and a barcode tag
Listing liveon the store's own storefront, and an eBay export
2xrevenue and profit of stores that sell online versus those that do not, from my own store research
Secondsfrom photo to a complete listing, against 15 to 20 minutes by hand
Centsof AI cost per listing, against $0.30 of labour just to price a piece
25,000+US resale shops whose shelves are not searchable (NARTS via the Census Bureau)
$14.1Bof thrift sales a year that happen without a listing (IBISWorld 2025)

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.

Today: a traditional thrift storeWith ThriftySparkWants red Pradashoes, size 8Searches onlinenothing: no listingsDrives to a storeon a hunchDigs through racksby hand, 20 minutesNot thereleaves, most daysif in stockCashier keys $25 innothing records what soldThe store never knew this shopper existed. The next shopper starts from zero. The shelf stays dark.Wants red Pradashoes, size 8Searches onlinethe store's page shows upReserves or buysonline, in two tapsPicks up in storeor has it shippedRegister: solddelisted everywherephoto, $25, size 8, pickup todaynearbythrift.com, the marketplace we built for thrift and consignment store ownersEverything you can buy from a thrift store in your city, in one search. Every ThriftySpark store is on it from its first listing.The store knows who came, what they wanted and what sold. The next shopper sees true stock. The window shopper finds the store too.

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.
The one-minute version. Thrift is a $14 billion business run on sticker guns, coloured tags and a general-purpose till, and almost none of it is searchable online, because listing costs labour a $2.99 shirt cannot pay for. ThriftySpark uses AI to make that listing cost seconds and cents, and wraps it in the rest of a store's day: donation intake, barcode tags, a markdown ladder, a proper register and a hosted storefront, all on one stock count. No competitor does both the AI and the store. The product is live, and the next milestone is three pilot stores running it for a full week.

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.

One stock record per piece SKU, price, step on the ladder, where it is, whether it sold and howDonation doorbags arriveIntakeletter, digits, EnterLabelsbarcode tagFloorracks by colourMarkdown ladder7, 14, 21, 30 daysRegistercash or card, receipt, voidReportswhat sold, what is agingthe 5 to 15% worth listingAI listingphoto in, listing out, 30 sStorefrontreserve, pay at pickupsold either wayonline sales feed the same reportsGreen: screens in the product today. Grey: by hand, or not built yet. The dots are one piece sold in store and one sold online.

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.

Opencount the drawerReports (next)Donation doorbags arriveIntakeSortsell, trash, valuableby hand; valuables to AIPrice and tag35 pieces an hourIntake and LabelsRotate floorpull stale colourMarkdown ladderRegistertax, tender, receiptRegisterClosereconcile, bank cashReports (next)Five of seven steps have a screen today. The two that do not, open and close, share one build: the end-of-day cash count.Dale's day is the same with one more need: a volunteer at the till must not see revenue or void a sale, so roles and a PIN login come right after.No store manager has been interviewed yet. These days are built from job postings and trade writing; the pilot interviews fix that first.

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.

ScreenWhat it doesWhat it replacesState
IntakeTurn 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 clipboardLive. Not yet timed on a shop floor.
MarkdownsOne price ladder, set once. Stale stock gets cheaper on a schedule. Preview first, apply on confirm, never silently.Coloured tags pulled by hand each weekLive, previewed in production; the ladder has not been applied for real yet.
RegisterA 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 boxLive; a cash sale and a void have run on a real store.
ImportDrop 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 inventoryLive, tested on fixtures; one real store export is the next test.
AI listingPhotograph the pieces worth selling online. Claude writes the title, description, category and a price range in about thirty seconds.Fifteen minutes of typing per listingLive since the first version. Reserved for the valuable tail.
StorefrontA hosted shop page per store with reservations and pay at pickup. Resellers and locals browse what the floor has.Nothing, or a Facebook postLive. Online is the tail of the business, not the head.
LabelsBarcode tags from the same SKU the till scans. Print through the normal OS dialog.A sticker gun with no barcodeLive.
Analytics and reportsWhat sold, what is aging, what is unlabelled. End-of-day cash count is next, now that sales carry tax and tender.A notebookAnalytics 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.

KeepAI listing, for the tailBatch scan, labels, SKU lookupReservations, pay at pickupHosted storefronteBay CSV exportDemoteStripe checkout and shipping:only for high-value shippablesFavourites and wishlistsStore reviewsCut or hideReturn-risk demoItem reviews: a one-off has no later readerOne of two login systemsClient-side admin passwordBluetooth-only printingCross-posting to Poshmark, Mercari

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.

ThriftySparkIntakeBatch 0421, drop-off, Mrs PatelSince 09:14: 38 pieces, 41 an hourAApparelSShoesHHomeBBooksTToysOOther$ 4.99Enter adds, Shift+Enter printsNeeds photo: send to AI listingThis batchTS-0412Apparel$2.99TS-0413Apparel$2.99TS-0414Home$6.00TS-0415Shoes$8.99TS-0416Books$1.00TS-0417Apparel$4.9938 pieces$141.62Close batchDonor receiptReceipt shows counts only, no dollar value.

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.

ThriftySparkRegisterScan or type a SKUSubtotal$15.00Discount-$3.00Tax 10%$1.20Total$13.20Cash $20.00, change $6.80CashCardDiscountSaleTS-0391Denim jacket$9.00TS-0402Lamp$4.00TS-0188Paperback$2.00Line price editable by managers onlyCharge $13.20One charge per sale. A retry after a dropped connection returns the same sale.

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.

ThriftySparkMarkdownsPrice ladderPercent off is always from the original priceDay 710% offDay 1420% offDay 2135% offDay 3050% off34 items due for markdown todayPreviewTS-0102$12.00 to $9.60TS-0115$6.00 to $3.90TS-0120$2.99 to $2.39TS-0133$25.00 to $12.50PreviewApply 34Never applies silently.

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.

ThriftySparkStorefrontNew Nearly New Thrift ShopDurham, NC. Reserve online, pay at pickup.Vintage denim jacket$18Brass table lamp$24Le Creuset dutch oven$45AI listedHardback first edition$12Wool overcoat$30Record player$60Only the pieces flagged at intake appear here. The $2.99 floor stays in the store.

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.

Labour to price one piece
$0.29 to $0.34
eBay fees on a $2.99 sale
$0.71 to $0.81
Price of 80% of one store's floor
$2.99 or less

Where the money is, and where AI pays

Top 5 to 15%worth listing onlineMiddlepriced on quality, sold in storeAbout 80% at $2.99 or lessvolume, speed, no photosAI listing and storefront30 seconds a piece, a few cents of model costworth it when the piece sells for $15 or moreIntake, labels, ladder, registerevery piece, no camera, keyboard onlythe goal is to beat 35 pieces an hourThe 5 to 15% is an assumption. The pilot measures it as the share of intake flagged at the keyboard.

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 leaksWhat ThriftySpark doesEvidence todayHow the pilot measures it
Processing labourIntake 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 tagPieces per hour on a pilot floor against the sticker gun
Stale stockMarkdown ladder runs itself; floor space turns overLadders exist everywhere but are pulled by hand and skipped when busyShare of items past day 30 before and after
Till errors and voidsOne charge per sale, itemised, with a receipt and an audited voidTill errors and voids are a named shrink sourceNightly totals matched against the old till for a week
Hidden valueFlag the few pieces worth listing online and list them in 30 secondsA store added $100 to $200 a week by pricing on quality; a $600 game nearly went in the binOnline revenue per store per month
Switching costCatalogue import in minutesRe-entering inventory stops any POS switchRows imported from a real export
The pitch to a manager, in one breath. Your processors tag faster than a sticker gun and every piece gets a barcode. Your markdowns run themselves. Your till does tax, change and receipts, and nothing sells twice. The handful of pieces worth real money go online in thirty seconds. And you can see all of it on one page at close.

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.

Total: more than 25,000 resale shops, about $14 billion of sales a yearNARTS via the Census Bureau; IBISWorld 2025. Goodwill alone is over $7 billion of it.Serviceable: roughly 15,000 to 20,000 independents and small charity shopsmy estimate; takes out the charity chains on their own stacks and consignment boutiques until a ledger exists300 storesthree-year goalat the placeholder $79 a month that is about $280,000 a year of subscriptions,before payments or the storefront earn anything. At 20% of the serviceable count it is $15 million.The bar lengths are to scale against the top bar. The middle bar is an assumption, not a count.

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.

Online resaleIn-store operationswhere the product livesAI-assistedManualhow much of the work it does for youPOS and consignmentAI plus store ops: empty except for ThriftySparkThriftySparkeBay AI listing (free)VendooList PerfectlySimpleConsignThriftCartSquareShopify POSLightspeedConsignCloud

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.

AI listingInventoryLabelsPOSStorefrontCrosslistAnalyticsConsignorsDonation intakeMarkdown rulesThriftySparkThriftCartConsignCloudSimpleConsignSquare for RetailShopify POSLightspeedVendooList Perfectlyon the entry planadd-on, higher tier or partialnot offered

Read the columns. Donation intake has two cells filled in nine rows. AI listing plus a POS has one. That intersection is the product.

WhoWhat they areWhy they do not cover the back room
ThriftCartNonprofit thrift POS, from $99 a month, claims over 500 storesClosest direct rival. No intake at sticker-gun speed, no AI listing of the tail.
ConsignCloud, SimpleConsignConsignment POS, $139 to $159 a monthConsignor ledgers and payouts. The calmest UI in the category. Not built for donation intake.
Square, Shopify POS, LightspeedGeneral retail POS, free to $89 a monthThe default till. Multi-quantity SKUs, no idea of a one-off piece, no markdown ladder, no intake.
Vendoo, List Perfectly, CrosslistCross-listers for resellers, $15 to $30 a monthServe Sam, not Maria. No till, no store.
eBay's AI listing toolFree inside eBayWrites listings for free. Any product that only writes listings competes with free.

What the alternatives charge a month

$0$40$80$120$160entry price per month, vendors' own pagesSquare $0Vendoo $15List Perfectly $29Shopify $39Square Plus $49Lightspeed $89ThriftCart $99ConsignCloud $139SimpleConsign $159ThriftySpark, proposed$79

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.

TierPriceWho it is forWhat is in it
Floor$0A store trying it on one registerIntake, labels, register, 25 AI listings a month, a storefront
Store$79 a monthOne independent store with a paid managerEverything in Floor, unlimited AI listings, markdown ladder, import, reports
Stores$59 a month per locationTwo to five locations, or a charity with volunteersEverything in Store, roles and PIN login, one bill

Three revenue lines, in the order they can exist

More storessubscription, line 1More one-off stock onlinethe tail, listed by AIMore buyersresellers, localsOnline salespayment fee, line 2listattractbuystores stay, refer othersline 3: a buyer-side network across stores, if the loop turns
  • 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.

Sourced35 pieces an hour at $10 to $1280% of a floor at $2.99 or lessladders and colour weekscompetitor prices, shop countsShopGoodwill under 10% of retailDerived$0.29 to $0.34 labour a piece$0.71 to $0.81 eBay fee on $2.99price band of $99 to $159Assumed, to be testedonline sellers earn 2x: my own research5 to 15% of pieces worth listing15,000 to 20,000 serviceable shops$79 a month is below the savingintake beats the sticker gunthree pilot stores and a 20-minute interview script turn the dashed column green, or kill it

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.

1Price right, catch valuablespartial 2Move aging stock with markdownscovered, built in October 3Ring up sales accuratelycovered, built in October 4Process donations to the floor fastcovered, built in October 5Stop leakage at door and tillopen 6Tag and locate stockcovered, built in October 7Sell the valuable tail onlinecovered 8Pay consignors correctlyopen 9Close the day, know the numberspartial10Switch from Square or a spreadsheetcovered, built in October11Holds and returnspartial12Tell customers a hold is readyopen13Keep selling when the internet dropsopenbeforeafterranking is the report's judgement on sourced evidence

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.

Me: briefquestion, fences, doneResearch sessionsuse case, competitorsBuild sessionsone feature, own files, testsMe: decidesegment, wedge, cutsReview and stress agentssix personas, 8,141 stepsPilot gatethree stores, kill criteriawhat the gate says becomes the next briefaskreportbriefPRacceptattack

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.

DecisionOptionsEvidenceThe call
Change the pitchKeep "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 freeRe-aimed. AI stays, but only for the tail.
Pick the segmentIndependents, charity shops, consignment boutiques, resellers, chainsChains run head-office stacks; resellers already have mature tools; consignment needs a ledgerIndependents and small charity shops. Consignment waits. Resellers are buyers.
What to build first13 proposed featuresRanked by money at stake; needs no other feature first; disjoint files; testable on mocksIntake, markdowns, register, import. The register because four later features need a sale record.
Skip the obvious AI featurePricing from sold comps was job number 1The data needs eBay's limited-release API; a bad suggestion erodes trust faster than no suggestionSkipped for now. Own-sales history first, once the register produces sales.
What to cutReturn-risk demo, item reviews, wishlists, two login systems, Bluetooth-only printingA one-off item sells once, so a review has no reader; thrift is final sale; a client-side admin password is not a controlCut or hidden. The product got smaller and more honest.
PriceSet a price now or after the pilotNo measured saving yet; the purpose-built band is $99 to $159Propose $79, publish nothing until a store has paid it.
Trust a day-old tillSwitch stores over or run in parallelA till built by agents in a day has no track recordParallel 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.

PersonaWhat it doesSteps
Store ownersigns up, generates a listing from a photo, publishes, rings a sale, exports to eBay551
Shopperbrowses, searches, fills a cart, reserves as a guest, checks out947
Returning customerregisters, logs in again, cancels an order, closes the account696
Abusive userforged logins, other tenants' ids, hostile uploads, floods5,584
Slow networktiny timeouts, retries after giving up, double taps on submit182
Browser shopperreal Chromium on the storefront, console errors, a UI reservation44
Critical
6
High
22
Medium
17
Low and cleanup
18
63 defects found by the kickoff audit, by severity
Three habits I would bring to any product team. Write the brief as the spec, with the definition of done inside it. Tag every claim as sourced, derived or assumed, so a number and a hunch never look the same. Put a kill criterion next to every milestone before the work starts, so the decision to stop is made in advance and not in the moment.

12. What would kill it

RiskWhat it would meanWhat I am doing about it
ThriftCart ships intake firstThe wedge closes and ThriftySpark becomes a tool run alongside a rivalMove fast on the pilot; the importer makes coexistence survivable; the asset is store relationships and pilot timings
Intake is slower than the sticker gunThe first feature of the day fails on the floorKill 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 tillThe register sits unused next to SquareRun it beside the old till for a week with nightly totals compared; only switch when a full week matches
Personas are compositesThe product is aimed at a store that does not existThree pilot stores and a 20-minute interview script come before any marketing spend
Small market, low priceA niche that never pays for a teamPrice against labour saved, add payments and the storefront network as second revenue lines, keep costs near zero per store
The strongest objection. Why would a store trust a till built in a day by AI agents and used in production for only a few weeks? It should not, yet. The register runs beside the store's existing till for a week, with end-of-day totals compared each night, until a full week matches. That rule is in the pilot plan, not in a footnote.

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.

Month 1: prove the floor3 pilot stores, 20-minute interviews,register beside the old till, intake timedMonth 2: close the dayend-of-day cash count, roles and PIN,first store paper-free for a weekMonth 3: price itset the price from measured savings,second city, storefront network testGate: intake beats35 pieces an hour?no: drop intake,test the register aloneGate: a full week ofmatched till totals?no: the wedge is wrong,back to the jobs tableGate: a store paysthe proposed price?no: reprice againstthe measured saving

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