CardDealer.AI← Home

How CardDealer tells Master Ball from Poké Ball on Japanese 151

The Pokémon Card 151 Japanese set has two reverse-holo variants per card. The artwork is identical. The price difference is 3-5×. Most card scanners can't tell them apart. Here is what's different in the vault.

Jamie Budesky·May 19, 2026·The Vault

Pokémon Card 151 Japanese (set code sv2a) released in June 2023. It's one of the most popular Japanese sets of the modern era. The thing that's distinctive about it — and the thing that makes scanning it hard — is the dual reverse-holo treatment.

Almost every common and uncommon in 151 was printed in two reverse-holo variants:

  • Poké Ball pattern — the standard reverse holo. Background of the card has repeating small Poké Ball icons. Common, ~$1-3 raw.
  • Master Ball pattern — the chase variant. Same artwork, but the background icons are Master Balls (the M-shape with prongs) instead. Rare, ~$15-80 raw depending on the Pokémon.

The artwork is byte-identical between the two. They share the same Pokémon, same pose, same illustrator, same frame. The only difference is the holo overlay in the background — the icons repeated diagonally across the foil.

This is a hard problem for any tool that identifies cards by image hashing. Both variants hash to nearly the same fingerprint because they share 95% of their pixels. Whichever the tool picks first wins, and "first" is essentially random for visually-identical pairs.

In practice, this means a lot of card scanners will silently misidentify Master Ball Lickitungs as Poké Ball Lickitungs, or vice versa. The price tag attached to the resulting listing is wrong by a factor of 3-5×. Buyers notice. Listings get reported. Refunds happen.

What's different on CardDealer

Identification on the vault doesn't start with image hashing. It starts with reading what's printed on the card.

Every modern Pokémon card prints two pieces of information in tiny text at the bottom-left of the artwork:

  1. Set code — a short lowercase identifier. For 151 Japanese, that's sv2a. For VSTAR Universe it's s12a. For Silver Tempest English it's swsh12. These codes are unambiguous — there's exactly one sv2a set ever printed.
  2. Card number — the printed numerator, like 108/165 for the Lickitung position in 151.

Those two values together — sv2a-108 — identify a unique card slot in the global Pokémon catalog. There is no ambiguity. We carry that catalog locally on our infrastructure: every Pokémon set, every card, every language, ~110,000 cards total.

When you scan a card, the identifier reads the printed set code + card number, looks up the catalog row directly, and lands on the correct card. The variant (Poké Ball vs Master Ball, Holo vs Reverse, 1st Edition vs Unlimited) is then picked from the catalog row's variant list using the foil pattern visible in the scan.

The improvement is concrete:

  • Set is correct — the catalog has one row for sv2a-108, so the set is unambiguous. No more "is this 25th Anniversary or 151?"
  • Number is correct — the catalog row has the printed number. No more #2 when the card clearly prints #52.
  • Variant is correct on the cards that have variants — when both Poké Ball and Master Ball exist for the same card slot, the identifier picks based on which icon shape it sees in the foil pattern, not which one is more visually similar in pixel space.
  • Cross-language identification still works — Japanese cards with the same artwork as their English/Chinese equivalents still match through visual similarity when the printed text is hard to read on the scan, but the catalog row pins the language correctly.

What this looks like in your inventory

Before: a Lickitung from Japanese 151 might land as Lickitung [Master Ball] at $12.99 asking. Looks fine until you list it, the buyer points out the foil pattern is actually circular (Poké Balls), and you eat a return + reputation hit.

After: same card lands as Lickitung in Pokemon Japanese Scarlet & Violet 151 (set code sv2a, card 108/165), correctly identified as the Poké Ball reverse with a $1.81 asking from PriceCharting. Listing goes out accurate.

The same logic applies to:

  • 1st Edition vs Unlimited on vintage WOTC sets — the stamp position is the discriminator, the catalog has both rows.
  • Stamped promos — Pokémon Center Stamp, Prerelease, Staff stamps land in their own catalog rows.
  • Cracked-ice Trainer GalleryTG01-prefixed numbers route to the Trainer Gallery subset.
  • Holo vs Reverse Holo — for English sets that distinguish.

Why we built it this way

The honest answer is that we kept getting one specific kind of bug report: customers identifying a Japanese 151 card and getting back the wrong variant. The card artwork was right. The set was right. The variant suffix was wrong. The asking price was 3-5× off.

The shape of the bug pointed at the identification approach being fragile for any case where two products share artwork. So we built a catalog. The vault now stores the full Pokémon TCG database locally — every set across 12 languages — and identification queries that catalog by the printed set code + number first, then uses the visual signal to disambiguate variants within a known set.

Functionally, the result is that the vault now identifies a Master Ball Lickitung as a Master Ball Lickitung, and a Poké Ball Lickitung as a Poké Ball Lickitung. The price tag matches the foil pattern. Listings go out correct.

The same architecture extends to other Pokémon variant pairs and, as we expand the catalog, to other TCG products with the same "identical artwork, different variant" problem.

— Jamie