Case study · § 01 · How we work
myTCG
An Android scanner for trading-card collectors. Point your phone at a card; the app names it, prices it, files it. Six games at launch, 229,000 cards in the local catalog.
Stephen: design + engineering
Mike: stress-test + product calls
Pokémon (EN + JP), Magic,
Yu-Gi-Oh!, Lorcana, One Piece.
The whole catalog and the visual
model are bundled in the app.
Validation corpus at 92% across
six games. Final tuning live.
I What it does
A scanner for collectors.
myTCG identifies trading cards, prices them against the open market, and files them into an inventory. Six games at launch: Pokémon (English and Japanese), Magic, Yu-Gi-Oh!, Lorcana, One Piece. 229,000 cards bundled into the app. Beta, shipping 2026.
II What we did about the hard part
The scanner refuses to guess.
The hardest part of building a card scanner isn't reading the text. It's making sure the read maps to the right card. Pokémon has released cards with the same name and same number across dozens of sets over thirty years. A 2025 promo can collide with a 2013 reprint. When a model gets close but not exact, most scanners ship the wrong commit anyway. We built ours around the opposite rule: a wrong answer is worse than no answer.
Every scan runs entirely on the phone. On-device OCR reads the card-number corner first. A 229,000-card local catalog gets queried against the read. Apple's MobileCLIP-S2, the open-source vision model from Apple's research team, handles visual matching against per-game embedding banks built from the catalog. Standard prints commit automatically when the cosine match is high enough. The ~1% of catalog entries with parenthetical variant tags (Pokemon Center Exclusive, EB Games Exclusive, alternate finishes) route through a user-picker before commit, because the typeface stamp on those cards is too small at thumbnail resolution to disambiguate by image alone. The pipeline never silently commits a card it isn't sure of.
Holofoil glare is what most card scanners can't handle. A model trying to read reflective ink at typical phone angles fails about a third of the time. The fix isn't a smarter model; it's geometry. Every capture goes through edge detection, perspective warp, and a focus-plus-glare gate before MobileCLIP sees a frame. By the time the model is asked, the card is rectified flat and OCR has already narrowed the candidate pool.
After commit, the card files into your collection with per-finish pricing pulled from TCGplayer's SKU-level data. Master Ball Holofoils get their own market price; reverse holos are priced separately from standard prints. Six TCGs share one binder; switch between Pokémon, MTG, Yu-Gi-Oh!, Lorcana, and One Piece without leaving the app. CSV export is on every tier, no paywall. The collection belongs to the collector, not to us.