Shipped — June 19, 2026
1 update in this release.
1 update in this release.
Behind the scenes
- Partner cross-promo: reserved-slug 50% recurring Vault discount for the CardGrade Business bundle.
The vault is built and operated by a working card dealer. This page is the public log of every release that affected a real listing or a real workflow. We ship in small bites and we ship often.
1 update in this release.
1 update in this release.
Behind the scenes
2 updates in this release.
2 updates in this release.
For collectors & dealers
Behind the scenes
2 updates in this release.
2 updates in this release.
For collectors & dealers
Behind the scenes
2 updates in this release.
2 updates in this release.
For collectors & dealers
Behind the scenes
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
Behind the scenes
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
Behind the scenes
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
Behind the scenes
2 updates in this release.
2 updates in this release.
For collectors & dealers
Behind the scenes
2 updates in this release.
2 updates in this release.
For collectors & dealers
Behind the scenes
2 updates in this release.
2 updates in this release.
For collectors & dealers
Behind the scenes
2 updates in this release.
2 updates in this release.
For collectors & dealers
Behind the scenes
2 updates in this release.
2 updates in this release.
For collectors & dealers
Behind the scenes
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
1 update in this release.
1 update in this release.
For collectors & dealers
Sell stacks of identical cards as one listing, set a hard floor automatic repricing can't cross, add a note to the top of any listing, bulk-edit set/variant/season, and merge duplicates into one row.
Two changes this release, both pointed at the same thing: less busywork per card, and no nasty pricing surprises.
One listing for a stack of the same card.
If you've ever cracked a bulk lot and ended up with twelve of the same energy card, eight of the same common, five of the same base Pikachu — you know the old way was painful. Every copy was its own row, its own listing, its own insertion fee, its own thing to babysit.
Now you set a quantity on the card and it publishes as a single multi-quantity listing — on eBay and Shopify both. Twelve copies, one listing, one fee, sold down as buyers take them.
Why this matters in your workflow: bulk commons stop being a chore. Scan one, set the count, list once. The quantity field is editable on the card inspector for raw and sealed cards. Graded slabs stay at one on purpose — a slab's cert number is its fingerprint, so two graded cards are never really "the same card," and each gets its own listing.
A floor price automatic repricing can't cross.
Automatic repricing is great right up until the market dips, a price source hiccups, or a rule does something you didn't expect — and a $4 card is suddenly listed at forty cents while you're asleep.
Set a floor price on any card and the automatic side will never write below it. The rule engine, the market refresh, the asking-price filler — all of them clamp to your floor. Type a lower number in yourself and it's honored; the floor only guards the automatic paths, never your own deliberate edits.
There's a default, too. Set one in Settings → Inventory and every new card inherits it — which is the whole game when you're importing a few hundred cheap commons at once. Set "$2" a single time, import the lot, and nothing in that batch can auto-price into the dirt.
Why this matters in your workflow: you can leave automatic pricing on and actually trust it overnight. The floor is the seatbelt.
A note for the top of a listing.
Some cards need a heads-up that doesn't belong in the title — soft corners, a faint print line, "ships in a sleeve and toploader." Every card now has a Listing Note field, right above the description. Whatever you put there shows as a bold line at the very top of the listing, on eBay and your storefront both. Leave it blank and nothing changes.
Fix a whole stack's details at once.
Imported forty cards that all belong to the same set but came in with the set field blank? Select them, hit Organize → Edit fields, type the set once, and apply. Same for the variant/subset and the season/year — set or clear any of the three across every selected card in one shot, without opening a single card.
Merge duplicates into one listing.
The flip side of multi-quantity: if you already scanned five of the same common as five separate rows, you don't have to clean them up by hand. Select them, choose Organize → Merge to one listing, and they collapse into a single row whose quantity is the combined total. The extras are archived — recoverable, not deleted — and graded slabs or anything already live on a marketplace are left untouched.
One more thing — this page keeps itself current now.
Every deploy logs what shipped, so the changelog stops drifting weeks behind the product. You're reading the first entry that was auto-logged on release and then hand-polished. Expect these more often, and closer to the moment things actually go live.
— Jamie
Identification now uses a structured catalog of 110,000+ Pokémon cards across 12 languages. Japanese, Chinese, and Korean prints get accurate names, set codes, and variants. Sealed products like Elite Trainer Boxes now display catalog photos.
This was a big week. The headline: how cards get identified got rebuilt from the ground up. Three things ship in this release.
Multilingual catalog.
The vault now carries a local catalog of every Pokémon card across 12 languages: English, Japanese, French, German, Italian, Spanish, Portuguese (Brazil), Chinese (Traditional + Simplified), Korean, Indonesian, and Thai. ~110,000 cards. ~1,400 sets. Every modern set is in there; vintage WOTC-era English + Japanese is covered.
Why this matters in your workflow: when you import a Japanese 151 card or a Chinese Scarlet & Violet card, identification now references the actual catalog instead of guessing from artwork. Set, card number, name, variant, and rarity all come from the catalog row directly.
The catalog refreshes nightly, so the moment a new set releases — Perfect Order, Paldean Wonders, whatever Pokémon Japan ships next — those cards land in the vault the morning after.
Variant precision (the Master Ball / Poké Ball fix).
Japanese 151 has two reverse-holo variants per card: the standard Poké Ball pattern (cheap, common) and the rare Master Ball pattern (~3-5× the price). Same artwork, different background.
Identification now reads the printed set code (the tiny sv2a or s12a at the bottom-left of every modern card) and pairs it with the printed card number to land on a specific catalog row. When two variants share that key, the identifier picks the correct one based on the holo pattern in the scan, not on visual hashing.
In practice: cards that previously came in labeled [Master Ball] when they were actually [Reverse] will identify correctly going forward. Existing inventory can be re-identified from the card detail page.
The same fix surfaces on every set with variant pairs — [1st Edition] vs [Unlimited] on vintage, [Reverse Holo] on modern English, the various Trainer Gallery patterns, etc.
Sealed product images.
When the identifier lands on a sealed product (Elite Trainer Box, Booster Box, Tin, Premium Collection, Booster Bundle, Theme Deck, etc.), the card detail page now shows the official catalog product photo instead of an empty placeholder. Listings of sealed product look like listings of sealed product. eBay titles + descriptions render correctly. The catalog has stock photos for ~89,000 cards / products, with the rest filling in as syncs catch up.
Japanese cards get romanized names.
When you import a Japanese card, eBay search keys matter — buyers search "Lickitung 151" not "ベロリンガ". Identification now writes the romanized English name to the card row ("Lickitung") while preserving the original Japanese characters separately for display. Card titles, AI listing descriptions, and eBay payloads all use the romanized name by default.
One more thing — set codes.
Every modern Pokémon card prints a set code in tiny text at the bottom-left (sv2a for Japanese 151, swsh12 for Silver Tempest, s12a for VSTAR Universe). Identification now reads this code directly and uses it as the primary anchor into the catalog. This means: if the OCR can read the printed set code, the identification is essentially guaranteed correct. The set name + card number + variant all derive from that one signal.
The visible effect: needs-review flags on Japanese cards have dropped substantially. Cards that previously needed manual confirmation because of variant ambiguity now go straight to "ready to list."
— Jamie
Floating bug-report widget on every page, four iterations of enhanced-crop sharpening for eBay carousels, and a new homepage hero that shows the product instead of just describing it.
Second-decimal version bump. Three threads of work landed today.
In-app bug report — the big one.
There's now a small "🐛 REPORT" pill in the bottom-right of every authenticated page. Click it and you get a modal that captures:
Submissions go straight to the founder's inbox as a formatted email with the screenshot inlined and the diagnostics in a code block. Reply-To is set to the reporter, so a one-click reply lands in your inbox. Every report is also archived in the vault's database under a stable ID, so nothing gets lost if an email bounces.
Why this exists: the dealer running the storefront this software was built for is the same person reading every bug report. Cutting the loop from "spot a problem → screenshot → find Jamie's email → describe it" to "click the pill, type, send" is the difference between issues getting fixed and issues getting forgotten.
Enhanced-crop sharpening — four iterations.
The "enhanced crops" pipeline that produces the corner / edge / defect-detail thumbnails for eBay listing carousels got four passes of tuning today:
If your listings have been getting re-published today, this is why.
Homepage hero — live-feel preview.
The marketing site's hero now shows a 3×3 grid of mini card slabs with status badges (listed / identified / imported), a "12,847 cards · 487 listed today" stats header, and a "Just identified" activity toast that breaks the grid edge. Real Pokemon set names — Crown Zenith, Stellar Crown, Prismatic Evolutions, Pokémon 151 — across PSA, CGC, BGS, SGC, and raw tiers.
Replaces the previous static slab illustration. The point: prospective customers should be able to read the dashboard at a glance and know what the product feels like, not just what it claims to do.
— Jamie
Predict PSA/BGS/CGC grades on raw cards from your existing photos, ~$0.25 a card. Plus a credit balance now lives in the top nav, and the billing system runs on phases that track our rollout.
Two threads shipped today. They're independent but they ride together because one of them controls how you pay for the other.
AI pre-grade — the big one.
There's a new "Pre-grade" button in the action bar on every raw card's inspector. Click it and the card's front + back photos go to CardGrade.io's grading pipeline. ~1–4 minutes later a hero panel lands above the card's title with:
Costs 25 credits per card, refunded automatically if the remote pipeline fails or times out. Only works on raw cards — slabbed cards already have an authoritative grade and the button is hidden. The button auto-hides while a grade is in progress; the hero panel shows a shimmering "Analyzing…" state with the current pipeline phase ("queued" → "processing") and auto-refreshes every 15 seconds.
The whole integration runs server-to-server with CardGrade's v1 API. Your card photos never go anywhere except CardGrade — same MinIO bucket pipeline that already serves your eBay listings.
Why this is here: pre-grading is the missing piece between "I have a raw card" and "I should submit this to PSA." Submission fees are $25+. You don't want to submit a card that won't clear $50, and you definitely don't want to skip submitting a card that grades a PSA 10. The grade prediction tells you which side of that line you're on — and now it lives inline on the inspector rather than as a separate workflow.
Credits in the top nav.
There's now a small "⚡ N" chip in the top navigation that shows your current AI credit balance. The chip is phase-aware:
Click the chip and you land on /settings/billing to top up.
The chip also drives a real billing posture: the alpha phase refills any account below 25 credits every 24 hours, the beta phase will lift that floor to 50 credits, and post-launch all free credits stop. That's enforced atomically inside the database — top-ups can't double-fire under concurrent requests, daily floors don't down-adjust paid users (your 500-credit pack isn't reset to 25), and existing alpha balances automatically promote to the beta floor on first beta-era page load with no manual migration.
What you'll notice in practice: today, nothing changes except the chip showing up. When we flip to beta — one config flag, no redeploy — your chip count will jump to 50 on next page load and start refilling daily.
— Jamie
We now publish editorial pieces at /blog and a public log of every release at /changelog.
Two new public surfaces on the vault:
Why both surfaces? Different intent. The blog is long-form opinion from the founder. The changelog is product. Some users want to read essays; some want to know if we shipped the multi-region eBay flow yet. Both are valid; the surfaces are now separate.
The first 24 blog posts are queued. Read the manifesto for the why, or the Saturday-listing notebook for what one Saturday actually looks like.
— Jamie
Batches now have a proper list page. Listing UX got a character counter, consolidated icons, graded condition mapping, and tier labels.
Two-part release.
Batches list page — Replaced the previous placeholder with a real batches view: count, cost basis, acquisition source, current state distribution per batch. The batch detail view also picked up a needs-review banner when AI confidence is below threshold on any card in the batch.
Listing UX polish — A handful of long-overdue ergonomics fixes:
— Jamie
The 'today' filter and the welcome greeting now follow your local timezone, not the server's.
If your dashboard greeted you "Good evening, Jamie" at 11pm and you'd been listing all day — but then the "Today" sold-count filter rolled over to zero because the server thought it was a new UTC day — that's the bug we fixed.
The vault now detects your timezone client-side on first login (and on every session refresh) and uses it for:
Good morning / afternoon / evening)Old behavior: everything was UTC-anchored. New behavior: everything is your-time-zone-anchored. If you've configured an explicit time zone in account settings, that wins; otherwise we use what your browser tells us.
If your numbers look slightly different today than they did yesterday at the same time, this is why.
— Jamie
Paste a list of certificate numbers from PSA, BGS, CGC, SGC, or TAG and the vault pulls the full grading record + queues each card as a draft listing.
If you came back from a card show with a stack of slabs, this is for you.
The cert-import flow now supports all five major graders in a single workflow:
How it works: paste a list of cert numbers (one per line, mixed graders OK) into the import dialog. The vault routes each cert to the right grader's API, pulls the full record (card spec, grade, sub-grades where available, pop number at time of grading, the slab images where the grader exposes them), and queues each card as a draft listing.
Average time per cert: under 2 seconds. A batch of 20 slabs takes under a minute.
The SKU convention used: {GRADER}-{cert_number} — e.g. PSA-87654321, CGC-6029808114, BGS-0123456. This matches how most dealers physically label their slabs, makes the slab traceable from your inventory back to the grader's database, and bypasses the auto-counter SKU setting because the cert number is more meaningful.
What this replaces: the previous flow required entering the cert manually for each card. A 20-slab show take used to be 15-20 minutes of typing. It's now under 60 seconds of paste-and-review.
— Jamie
Every walkthrough, every reference doc, every troubleshooting guide is now public. No login required.
The vault's knowledge base moved from "for paying customers only" to fully public at /help.
Five categories, ~20 articles at launch (more weekly):
Why public: prospective customers were emailing the support inbox asking "does the vault do X?" for things that were already documented. The friction of having an account before reading the docs was costing us conversions. Now you can read every article before you sign up.
Indirect benefit: the public KB is also picked up by Google. We expect organic search traffic from "how do I connect eBay to inventory software" and similar queries.
— Jamie