Emberwell
All builds
Father & Son Sports Card Connection · eBay listing

A batch of eBay listings used to take about three hours. Now it takes about one.

The owner photographs the front and back of each card and drops the whole stack in. Every card comes back with a drafted title and description, filled in from the photos. He checks each one and publishes it himself.

Before
About 3 hoursper batch, typed by hand
Now
About 1 hourper batch, mostly reviewing
Built for
A father-and-son card shop in Fort Wayne that sells on eBay
Built with
Next.js, Claude, the eBay Inventory API, Netlify
A batch of six graded football and baseball cards, each with a drafted eBay title and a Draft ready tag
A batch of six cards after Claude has read them. Each one has a draft waiting for review.
Where the time went

Most of those hours went to typing things that were already printed on the card.

Before

About 3 hours

  • Look at each card and type the year, set, card number, player and grade into eBay.
  • Write a title that fits in 80 characters and still has the words a buyer would search for.
  • Paste the shop's standard description (payment, shipping, grading and the rest) into every listing.
  • Pick condition, grader and grade from eBay's menus, one card at a time.

Now

About 1 hour

  • Drop in the whole batch of photos at once.
  • Claude reads the card and the slab label and drafts the title and description.
  • The shop's standard sections get added around every description on their own.
  • The owner reads each draft, fixes anything that's off, and publishes. Nothing goes live without him.
How it works

Three steps, and the last one is always a person.

Drop in the photos

Scan or photograph each card front, then back, in order. The tool sorts them by filename and pairs every two as one card.

You see the pairs before anything uploads, so a photo out of order gets caught here instead of on a live listing.

Twelve card photos paired into six front-and-back sets before upload
Twelve photos, paired into six cards before anything uploads.

Claude reads each card

For each pair, Claude pulls the player, year, set, card number, parallel, grade and cert number off the photos. On a graded card it reads the PSA label too, which is where most of the typing used to go.

The draft title stays under eBay's 80 characters. There's a note under the details on purpose: double check the card number, parallel and grade against the photo. It gets them right most of the time. Most isn't all.

A single card review page showing the front and back of a 1971 Topps John Unitas PSA 6, the details read off the card, and the drafted title and description
The review page for one card. What Claude read is on the left, the draft is on the right.

The owner publishes each one himself

Price, shipping and whether to take offers are set per card. Pushing sends the card to eBay as an unpublished offer.

Publishing is a separate button with its own confirm step, and it's the only place in the code that can make a listing go live. I built it that way on purpose. A wrong grade on a live listing costs more than the two hours saved.

Price, shipping and offer settings above a button labeled Push to eBay as unpublished offer
Price, shipping and offers are set per card.
Worth knowing

What it doesn't do, and a couple of things it does quietly.

It doesn't set prices. I left the price field empty on purpose. He knows the comps better than anything I'd build, and a wrong price is worse than a blank one.

There's an off switch. One setting pauses every publish at once, without touching the code, if something ever looks wrong.

The shop runs it without me. It's a hosted site behind a passphrase, so it works from the shop whenever they need it.

What takes an hour every week in your shop?

If it's mostly retyping something that's already written down somewhere, there's a good chance it can shrink like this one did. A call runs about thirty minutes and there's no cost to it.

Book a free discovery call