CMD Pottery Open the live app ↗
Product case study

Pottery Inventory App

The catalog my business runs on

I wrote the PRD, sketched the screens, built it with Claude, and use it to track what I've made, what's sold, and what to show retail buyers.

Owner
Christine Dippold, founder of CMD Pottery LLC and product manager
Built with
Claude, deployed on Vercel
Users
Me in the studio (admin), retail buyers (public view)
Live
inventory.cmdpottery.com
Problem

Finished pieces were scattered across shelves, photos, and memory

"As a potter, I want to be able to see my inventory and past work in order to see what I have available, show retail spaces what I have to offer, categorize my patterns and see color patterns that could be repeated in future work."

That one sentence became three jobs: a record of every piece, a storefront for shops, and a guide to what's worth making again.

Spec

One catalog, two audiences

The key product decision was to build a single site with a public and an internal layer instead of two tools. Every field in the PRD is tagged as public or internal, and the share link shows only the public layer.

It also had to do a different job from my portfolio site. The portfolio shows the breadth of my work and is how people get in touch. This is an inventory of what's available right now, and keeping that line clear kept the app focused on stock.

Public share link

What a retail buyer sees

  • Pieces by category: mugs, planters, bowls, other
  • Filters for pattern, color, and not sold
  • Product pages with photos, pattern, colors, and price
Internal studio view

What only I see

  • Difficulty, enjoyment, preference, and value per pattern
  • Wholesale and retail cost, favorites, mark as sold
  • Pattern library and glaze library (brand, glaze or underglaze, interior or exterior)
A score for what to make next Value = (Enjoyment + Preference) − Difficulty

Each pattern is rated 1 to 5 on three dimensions. Value rewards patterns I enjoy and like the look of, and discounts the hard ones, so it sorts my library by what's worth repeating.

PatternDiff.EnjoyPref.Value
Conjoined dips1548
Squiggles1548
Checkerboard1346
Basketweave4444
Triangles4354
Manage colors screen with an add-color form and a list of glazes by brand, type, placement and product count
Glaze library in the internal view: brand, glaze or underglaze, interior or exterior, and how many pieces use each.
Build

PRD to working app, then a tight fix loop

I gave Claude the PRD, sketches, my logo, and the design direction: black and white, modern, a simple sans-serif. Then I used the app for real, on my phone in the studio, and logged every problem back into the PRD with a screenshot.

  1. SpecPages, fields, filters, and the public/internal split, written as a PRD
  2. BuildClaude generates the app from the PRD and sketches
  3. UseUpload real pieces from my phone, browse as a buyer would
  4. Log and fixScreenshot each issue into a running bug list, then retest it

Where Claude got it wrong, and how I caught it

Every issue below surfaced from using the app with real pieces, not from reading the code.

What I sawWhat I asked for
The pattern picker was titled "Select colors"Remove the stray title bar from the pattern and new-pattern menus
Pattern reference images weren't saving, so the picker showed blank squaresUse a close-up of the first photo uploaded with that pattern
No way to favorite a piece after uploading itA heart icon on every product
The product photo was small and the details had no hierarchyA full-height hero image; name, category, value, colors and price first, pattern scores in their own panel
Patterns and glazes were dead endsMake each one a link to every product that uses it
Removing a wrong photo was hard on mobileAn easy delete in the phone upload flow
Pattern picker showing the wrong 'Select colors' label and blank pattern thumbnails
Before: the wrong label and missing pattern images, as logged in the PRD.
Early product page with a small photo and flat detail list
Before: an early product page with a small photo and flat hierarchy.
Today

Upload from the studio, browse like a buyer

I add pieces from my phone in the studio. Buyers get a clean storefront filtered by pattern, color, and availability. I get the scores, costs, and sold status behind it.

Mobile add-new-product form with a triangle-pattern mug photo, name, category and pattern filled in
Adding a piece on mobile.
Inventory page with mugs and planters, favorites hearts, a sold badge and the pattern filter open
The inventory signed in, with the pattern filter open. The public link hides internal filters like difficulty and enjoyment.
Product page for the Bubbles mug with a large hero photo, value score, color chips and a pattern panel
After: a hero photo, value up front, linked color chips, and pattern scores in their own panel.

Bulk upload

Once I'd added the first pieces one at a time, the slow part was clear: one form per piece. Bulk upload takes several photos at once and turns each into its own product, with name, category, pattern, colors, and costs to fill in per row.

It's also where AI cataloging now runs: each row arrives with a drafted name, pattern, colors, and description.

Bulk upload page where each uploaded photo becomes a product row with name, category, wholesale, retail, pattern and colors fields
Bulk upload: each photo becomes its own product row.
AI cataloging

Upload a photo, get a draft listing

Shipped in bulk upload

The PRD asked AI to "make as many guesses as possible" from each photo. In bulk upload, every row now arrives pre-filled while the next photo shows "Guessing…". I review each draft and correct it before saving.

Bulk upload row pre-filled by AI: name 'Conjoined dips: Black Satin and Pink', matched pattern and colors, and a generated description, with the next row showing Guessing
One photo in, one draft listing out. The note shows which fields matched my libraries.
FieldWhat AI doesStatus
NameWrites a name in my existing style, pattern then colorsShipped
PatternMatches the piece to my pattern libraryShipped
ColorsMatches glazes from my glaze libraryShipped
DescriptionDescribes clay body, motif, glaze, and interiorShipped
CostSuggests wholesale and retail from a pricing rubricNext

Matching against my own libraries is the key constraint. The model picks from patterns and glazes I actually use and labels each match, so I can see at a glance what it recognized and what it guessed.

What I'm measuring next

Every AI draft gets compared with what I save. That gives an acceptance rate for each field and a count of edits per upload, which will show where the model is reliable and where it still needs me, likely on similar glazes.

With every piece tagged consistently, the app can then surface which patterns and glaze combinations I make most and which score highest on value, to guide what I make next.