Building an AI-powered thrifting tool, then pivoting it to what users actually wanted

Building an AI-powered thrifting tool, then pivoting it to what users actually wanted

Goal Help physical media collectors make informed decisions with AI-powered taste intelligence
Responsibilities Product strategy, UX design, Full-stack engineering, Data infrastructure, Community launch
Duration 10 weeks (concept to App Store)

Summary

I collect VHS tapes. Standing in front of 200 random tapes at a flea market, trying to decide what’s worth grabbing, is a real problem. Do I already own that? Is it any good?

So I built Rewind. You photograph a stack and the app tells you what fits your taste, flags what you already own, and surfaces stuff you’d normally walk right past. I designed it as a thrifting tool. Users turned it into a collection platform, scanning hundreds of tapes at home and asking for features I hadn’t considered. So I pivoted.

Built solo in ten weeks, monetized two weeks after launch.

0→1
Product strategy, research, design and engineering
13.5K
tapes identified in the first three weeks
14.6%
30-day retention with zero re-engagement features

How it started

The idea hit over the holidays. I was home in the Midwest visiting a friend who collects VHS tapes. I was looking over his eclectic shelves and a lightbulb came on: what if I documented his collection, fed it into an LLM to generate a taste profile, and used that to identify tapes I might not be familiar with when I’m out thrifting?

I tried a quick and dirty version, feeding the taste profile I’d generated into ChatGPT as a seed and then sending it pictures of tape stacks at flea markets. It kind of worked, but it was pretty rough. After a few exchanges it would start re-recommending tapes I’d already scanned or hallucinating titles that didn’t exist. I’d have to start over in a new chat, burning tokens like crazy. Chat turned out to be the wrong format for this. I realized that for accuracy, an LLM needed to be fed the profile fresh every time, and that it was overkill to use a frontier model just for image recognition. I needed to decouple these things. I needed an app.

Weekend prototype

I put together a prototype over a weekend, building it out with Claude Code in Swift. I fed in collection data from a spreadsheet so I could determine if I owned a tape or not. I used a cheaper model for rough OCR, and I used a more capable model to evaluate each recognized tape against the stored taste profile. I built out a basic pipeline on Cloudflare. And.. it worked! The improvement in accuracy was staggering. But it was very slow and very expensive. Regardless, it was enough to start testing with real users.

Three screens from the early VHScan prototype showing the scan button home screen, camera view of VHS tapes on a shelf, and results listing 15 recognized tapes

Market research & product strategy

Rapid community research

While building the prototype, I scraped the communities where collectors hang out. Reddit, Instagram, TikTok, Facebook. Thousands of posts and comments. I wanted to understand how collectors talked, who the influential voices were, and what got people to engage.

Community discussion analysis

Treemap showing VHS community discussion topics: Hauls and Pickups 38%, Collection Showcases 15%, Rare Finds 10%, Nostalgia 8%, Tech Support 7%, Memes 5%, Discussion 5%, and smaller categories

I kept seeing the same five types of collectors. Some want the movies they grew up with. Some are preserving tapes that never made it to digital. Different reasons, different criteria. But every single one of them has accidentally bought the same tape twice.

The technical bet was simple. AI was already good at OCR. If I paired that with a database and your synced collection, you could photograph a whole stack of tapes and get answers for all of them at once. Every collecting app on the market made you go one by one via UPC code. Most VHS tapes don’t even have barcodes. Stack scanning sidesteps both problems.

Three app screens showing the scan flow: analyzing a photo of VHS tapes, results sorted into Yes, Maybe, and No categories, and a tape detail page for Hologram Man with reviewer verdicts

After launch, the data backed this up. Out of nearly 800 scans, exactly one was a manual text entry. Everyone else used the camera.

An opportunity

Scanning a stack tells you what you’re looking at. It doesn’t tell you what’s worth picking up. If you’re standing in front of 200 tapes, you need both.

Everything else on the market picked one side. Price-checking apps turned every thrift store trip into a reselling exercise. The community hated them. Collection managers let you catalog what you owned but couldn’t tell you anything about a tape you’d never seen before. One collector summed it up: “There has been an empty hole in the market for a good app that can do this that’s reliable.”

Pricing benchmarks from wine scanning, film logging, and trading card apps showed the range. Thrift-culture hobbyists won’t pay enterprise prices, but they’ll pay for something that respects the hobby.

The product

The prototype started with rubrics modeled on friends’ tastes. I have a buddy who only cares about horror distribution labels. Another who collects anything cyberpunk. A third who wants every tape that was banned, censored, or pulled from shelves. Each of them would look at the same bin of tapes and reach for completely different ones.

So instead of one AI giving you an overall score, five reviewers evaluate every tape: Bruiser, Sicko, Chrome, Zealot, and Weirdo. Each has a completely different take on what makes a tape worth having. They disagree constantly, and that’s the point. You’re not checking a number. You’re reading five short takes from reviewers who care about different things.

It turns a utility into something more interesting.

Three app screens showing the reviewer system: a list of built-in reviewers and a custom reviewer, the Bruiser reviewer profile with genre preferences and sample review, and Bruiser's personalized take on a user's collection

Custom profiles

The logical extension of the built-in reviewers is personalization, so I created a builder that allows you to create your own custom reviewer. It captures what you collect, what you avoid, and how you think about taste. It generates a custom reviewer that’s tuned to you specifically.

The builder only requires five tapes to move forward, but most users selected dozens. A few picked over a hundred. 67% of users who started the flow finished it.

Three app screens showing the custom reviewer builder: picking favorite tapes, selecting preferred actors and directors, and the resulting custom reviewer profile called Syllabus Brawler

Server-side architecture

All AI processing runs remotely. No API keys on the device, no model dependencies baked into the app binary. The pipeline has two stages so I can change how reviewer evaluation works without pushing an app update. As new and better models come out, I can swap them out easily.

Design system

The visual direction came from the tapes themselves. Blank VHS packaging from the 80s and 90s. Dark backgrounds, bold type, that specific shade of blue-black. I built a full design system around it called Cyberdelia. Personality tints for all five reviewers, custom backdrops per reviewer and genre, a CRT scanline overlay with adaptive frame rates and a reduced-motion kill switch, and condensed type that reads like a VHS spine.

Personality system showing the five built-in reviewers with their color identities and genre tags: Bruiser in burnt orange for action, Sicko in violet for horror, Chrome in mint for sci-fi, Zealot in hot pink for cult, and Weirdo in deep teal for subcultural

Data foundation

Mainstream databases cover the big releases fine. But VHS is its own world. Distributor exclusives, regional variants, dollar-bin anime, titles that never made it to any other format. If my database doesn’t have a tape, the app can’t properly identify it.

AI-assisted data pipelines allowed me to build out a proprietary catalog covering VHS-specific titles most mainstream databases miss.

Some of the source material is from public databases. Some is from physical materials and offline sources that can’t be scraped from the web. Some of it was contributed by kind members of the VHS community. The pipeline handles all of it through OCR and AI-structured parsing.

Dashboards

I needed good data to make good product decisions. So I built two dashboards.

The admin dashboard is where I manage the catalog. Every title is browsable, filterable, and editable inline. Quality monitoring flags coverage gaps and data problems across the full database. There’s a review queue for ambiguous matches, because VHS data is messy and sometimes the pipeline needs a human call. When the catalog is ready, a publish step shows me exactly what changed before I push it out to users.

Admin catalog dashboard showing 47,693 total titles with data quality stats, search filtered by alien, and a browsable table of titles with year, genre, type, and rarity columns

I needed to see what people actually did in the app from the moment it went live. So the analytics dashboard goes a lot deeper. I can see how people move through a scan, from taking the photo to adding something to their collection, and where they drop off. I can see who comes back the next day and who doesn’t. There’s a whole layer for the reviewers. Which personality is the pickiest, how often they agree with each other, and when users disagree with a verdict so I know what to adjust. On the ops side I’m tracking AI costs and pipeline speed so nothing surprises me. And instead of building a new view every time I have a question, I wired up Gemini to let me query the full database in plain English.

Analytics dashboard showing app health status, 270 active users today, 7,840 scans, 10,470 sessions, AI spend tracking, and a daily active users line chart over 30 days

I built both dashboards before launch. The pivot proved that was the right call.

Pivoting

Beta launch

I launched the app on TestFlight and posted the beta on r/VHS. The post got 15k views and 63 people signed up to test it. “Never downloaded an app so fast,” one commenter wrote. Another: “This is super cool! As someone just starting my collection, this is exactly what I’ve been looking for. Libib and CLZ were just too clunky.”

I also approached members of the Austin VHS scene while field testing the app to see if they would be interested in joining the beta. Several were incredibly enthusiastic, and I was able to do guerrilla testing on features I was prototyping with my actual target users.

Real people were using it. The analytics dashboard let me watch what they did, and the testers gave me direct feedback. Ship update, watch usage shift, ship the next one.

Four weeks later, I submitted to the App Store.

Post-launch signal

After launching to the App Store and announcing it in various channels, my post-launch data told an interesting story.

57%
percentage of users that scanned
15:1
collection adds vs thrifting scans

People were using the feature. But they were primarily using the app in a way I hadn’t anticipated. The power users weren’t at Goodwill deciding whether to grab something. They were sitting at home, scanning their collections.

The scanning feature — especially the collection scanning feature — was a big hit. But where I’d built a thrifting tool, my target users had found a collection management platform.

The extraction data backed that up. Users removed 40% of recognized tapes during review, and only 3% ever hit “accept all.” They were carefully curating their libraries, not just dumping everything in.

30% came back on day two with zero re-engagement features. No push notifications, no email, nothing pulling them back. They returned because they had more tapes to add.

Horizontal bar chart titled Largest Collections After 12 Days, showing the top nine users with collections ranging from 708 to 347 tapes

New direction

The product I’d built for thrifting was being used for collecting. I leaned into that, building several quality of life collection management features and sending an update to the beta testers. I could see users using the features immediately in the analytics dashboard I’d built, even without any sort of callout.

Three app screens showing collection management features: a poster grid of owned tapes, multi-select mode for batch actions, and a sort and filter menu with options for view type, watch status, and genre

In addition to the collection-centric data, I also got a signal via user feedback and community comments that users wanted to track and rate what they watched, not just catalog it. The existing collecting apps didn’t do that, and people were adding their VHS collections to Letterboxd lists as a workaround. That’s the gap, and that’s where I decided to go. Letterboxd for physical media, with AI taste intelligence built in.

The post-launch data pointed in the same direction. Usage of “what should I watch tonight” features grew 50-65% week over week, without any nudging.

Survey data showed that 79% of users also collected DVD, Blu-ray, or LaserDisc. Clearly centering my app around VHS was leaving broad swaths of users on the table. So, I started building out multi-format capabilities.

Monetizing a price-sensitive community

Scanning is how people find the app. The collection is why they stay. For a price sensitive community, you can’t realistically charge for either.

It took three tries to land on what people would pay for. First I tried scan limits and collection caps, which is the angle my competition takes. Users who hit any limit just stopped using the app. Then I tried locking the custom reviewer behind a paywall. Closer, but in testing I realized the profile builder itself was the hook. Gating that took away something of real value.

So now the builder is free. You build your reviewer, see what it produces, get invested in it. Subscribing activates it across the app. That’s the version that clicked.

The usage data showed why it worked. Preset reviewers recommend roughly 3.5% of the tapes they evaluate. A custom reviewer recommends about 25%. Scan a shelf with your profile active and you can feel the difference immediately.

The VHS collecting community has thrift-culture pricing expectations and deep hostility toward anything extractive. Patterns from bigger apps just didn’t translate.

Three photos of people using the Rewind app in the field: browsing VHS tapes at a flea market stall, scanning a shelf of tapes with the app, and photographing tapes at a thrift store

What I Learned

Build what users do, not what you designed for. The scanning thesis was technically right. The AI pipeline worked, scans succeeded 99%+ of the time. But users had a different idea of what the product was for. Being wrong about that was the best thing that happened to it. It’s also the fun part.

Constraints are features. No prices, no resale data, no flipper energy. I thought that would limit the app. It ended up defining it. Every app in this space built with flipping in mind gets attacked by the community. Every app that shows taste gets embraced.

AI tools change what one person can ship. I built the catalog pipeline, the dashboards, the design system, and the iOS app in ten weeks because Claude Code did the heavy lifting on code. The judgment work, what to build, what to skip, what to throw away when the launch data came in, is still entirely human.

99%+
scan success rate
5x
scan optimization, from 2 min to 25 sec
14.6%
30-day retention with zero re-engagement features

“This is what AI should be for,” one user wrote. “Giving me a library of all my VHS tapes at the press of a button, with all the bells and whistles of a curated paid service.”