← AI portfolio
CASE STUDY

AI product listing pipeline

Every drop at Transcend Vintage, my vintage label, means listing 40 to 70 one-of-a-kind pieces. This pipeline turns raw measurement notes and hundreds of unlabeled shoot photos into import-ready, SEO-optimized Shopify listings; I approve at two gates. It has run every drop since I built it.

3–4 hrs → minutesmy hands-on time per drop
20–25 minunattended machine runtime
~93%photos auto-matched to the right item
01 · The problem

Every drop cost an afternoon of manual work

Prepping one drop by hand took 3 to 4 hours: writing and pricing every listing, then matching about 600 photos to the right items and uploading them one at a time. The goal wasn't to remove me from the process. It was to remove the labor and keep the judgment.

02 · How it works

Raw notes and photos in, finished listings out

Stage 0 · LLM

Intake

Raw notes ("vintage black slip dress, 100% silk, fits small") become clean, on-brand listing copy, tags, and category.

Stage 1 · LLM

Enrich

SEO title, meta description, and a data-driven price anchored to the store's real sales history from Shopify.

Stage 2 · Vision + EXIF

Segment

One flat photo folder is split into one group per item, using vision boundaries plus capture-time gaps.

Stage 3 · Vision + API

Match & upload

Groups matched to listings, hero shot first, uploaded to the Shopify CDN, import CSV written.

Reliability comes from two design choices: two-pass matching (group first, then assign) so one bad guess can't cascade, and a confidence-gated fallback for leftover photos.

03 · Human in the loop

The AI does the work; I approve it

Gate 1Pricing & copyI review titles and data-based prices; flagged outliers surface for a second look.
Gate 2Photo matchesA visual card shows each listing with its photos, low-confidence matches highlighted, before anything uploads.
04 · Results

One live run of a real drop

72one-of-a-kind items
~600photos grouped & matched
562images uploaded to CDN
~93%matched to the right item

The bigger win is capacity: listing volume no longer limits how often the store can drop. All of it runs on first-party data only.

05 · Under the hood

Stack

Python Claude API · LLM + vision Shopify Admin GraphQL Pillow · pillow-heif · EXIF Google Apps Script

A sanitized reference version, secrets and store data excluded, is on GitHub.