Inspiration

My friend Joe is a doll collector and creator on TikTok (@joe.collector). He owns hundreds of dolls, and through him I discovered a strange problem: even serious collectors still track their collections in spreadsheets, notes, or simply in their heads. Adding every doll manually takes too long, so many people give up after the first 10–20 entries.

The apps we found still add collectibles one at a time: one photo per doll, manual search, or barcode scanning. We asked a different question:

What if you could add an entire shelf with a single photo?

That is how Shelvy started. I brought the product vision; Joe brought the expertise of someone who has collected dolls since childhood. His input was especially important for valuation. He showed me why two nearly identical releases can be completely different to a collector, why the same doll in-box and out-of-box can have very different prices, and which marketplace listings should not be trusted.

What Shelvy does

  • Take a photo of your shelf, and Shelvy finds every doll in the image and identifies it.
  • Your collection is automatically organized into a catalog: character, series, release year, and more.
  • Shelvy estimates the current market value of each doll and of the whole collection.
  • Series checklists show what is still missing, and a wishlist tracks what you're hunting for.

Shelvy supports brands including Barbie, Monster High, Rainbow High, Bratz, and others.

How I built it

I developed Shelvy myself, with Claude Code as my primary implementation tool. It took roughly three months from the start of active development to the App Store release on September 18, 2026.

I deliberately used Claude Code for all implementation, even though I have development experience. My role was to make product and architecture decisions, define tasks, review the implementation, and measure whether the result actually worked.

  • iOS: SwiftUI, with 11 languages from day one.
  • Doll detection: a custom-trained model that runs on-device and finds individual dolls in a shelf photo.
  • Recognition: image search combined with an AI model that matches candidates against our catalog. In parallel, we are building our own recognition index.
  • Catalog: assembled from publicly available collector resources, then cleaned, deduplicated, and normalized.
  • Backend: Python / FastAPI + Postgres, with photo analysis running asynchronously in the background.

The hardest part: our own valuation algorithm

A doll's value is not a static number in a catalog. It has to be inferred from what is happening in the market right now. A simple average of prices found online would be misleading, so we built our own valuation system:

  1. We collect market data for the exact doll: completed sales and active listings.
  2. An AI "judge" reviews every listing. It removes irrelevant results such as bundles of several dolls, clothing sold without the doll, or similar-looking but different releases. It also determines condition: in-box or out-of-box.
  3. Completed sales carry more weight than active listings, because sellers usually ask for more than buyers actually pay. We measured the adjustment instead of guessing it.
  4. We expose uncertainty. If there isn't enough reliable data, Shelvy says so instead of showing a falsely precise number.
  5. One doll, one valuation. Everyone who owns the same doll in the same condition sees the same estimate.

How we measure accuracy

We take a real completed sale, hide it from the algorithm, and check how accurately the algorithm would have predicted that price from the remaining market data. We ran this evaluation across 3,193 dolls owned by real users and 24,000+ completed sales. The median error is about 24%, and 62% of estimates fall within ±30% of the actual sale price.

Every meaningful change to the algorithm is measured before and after, and those measurements have repeatedly challenged our intuition. At one point we gave the AI judge more information about each listing, and accuracy actually got worse. So we only keep changes that improve the numbers.

Other challenges

  • Nearly identical dolls. The same character can be released dozens of times across different years, reissues, and special editions. They may look almost identical while their prices differ dramatically. When Shelvy is uncertain, it asks the user a short clarifying question instead of silently guessing.
  • An entire shelf in one frame. Dolls stand close together, sit inside boxes, and partially cover one another. Our detection model went through several iterations, and when it still gets something wrong, users can adjust the box around a doll by hand.

Monetization and RevenueCat

Every recognition costs us real money, so the paywall in Shelvy is part of the product's unit economics, not just a monetization layer.

  • Three free identifications instead of a trial. Users test Shelvy's accuracy on their own dolls before paying. The rest of the dolls in the photo can still be added to the collection, but their analysis doesn't start until the user upgrades. As a result, an average free user costs us less than $0.09.
  • Payment immediately starts the work. The RevenueCat entitlement unlocks Pro on-device right away, while a RevenueCat webhook triggers backend processing of all the user's pending dolls, followed by a push notification when everything is ready.
  • We build and iterate on our paywalls with RevenueCat Paywalls. We change them after launch without shipping a new app version, and they stay localized to the language selected in the app.
  • We deliberately don't offer a weekly subscription. It might lift short-term conversion, but we believe it would damage trust in the collector community that drives our early growth.

First 10 days after launch: 880+ sign-ups, 38 paying users (~4.3% of sign-ups), and a median of 11 minutes from sign-up to first purchase.

What we learned after launch

For early validation we use Joe's audience, and it has already taught us a lot:

  • Collectors care about more than price. 40% of active users viewed the series checklist, and more than 6,000 dolls have been added to wishlists.
  • Larger collections convert much better. Users with more than 30 dolls are nearly seven times more likely to pay than those with smaller collections (16% vs. 2.3%).

What's next

Next: the US. We have barely promoted Shelvy there so far, even though it is one of the largest markets for collectors of these brands.

The next step is to validate acquisition and monetization in the US while expanding the catalog and improving recognition.

Built With

Share this project:

Updates

Submission history