Beyond Scan

Beyond Scan

A native iOS app that identifies a Pokémon card from your camera, values it against the live UK market, and turns a shoebox of cards into a real, organised collection.

Year2026
RoleProduct Design & iOS Engineering
ClientIndependent project
ServicesProduct Design,iOS Engineering,SwiftUI,On-device OCR,eBay API

Every collector I know has the same drawer. A stack of Pokémon cards, a couple of them genuinely worth something, and no real idea which. Cataloguing them means squinting at set symbols, typing collector numbers into a browser, and cross-referencing prices across a dozen tabs. So most people never do it.

Beyond Scan is my answer to that drawer: point your phone at a card, and in a second you know what it is, what it's worth, and it's saved to your collection. Built native for iOS, local-first, and deliberately calm.


The brief I set myself

I wanted a tool that did three hard things well, and nothing else badly:

  1. Recognise a card instantly and accurately — the whole thing lives or dies here.
  2. Value it honestly — a real market figure, never a falsely precise guess.
  3. Feel like a premium object — because the cards it's about are beautiful, and the app should be too.

The constraint I gave myself: it should work on your phone, for you. No account, no upload of your camera feed, no selling your collection data. The catalogue ships inside the app; the camera never leaves the device.


The core loop

Line a card up in the frame, tap the shutter, and Beyond Scan reads it, identifies it, and drops you on a payoff screen with the card, its details, and its value. From there it's one tap into a collection.

That's the whole experience — and getting it to feel effortless took solving four genuinely interesting problems.


1. Scanning that's both accurate and fast

This is the bedrock, so it got the most attention. Recognition runs entirely on-device with Apple's Vision framework — no server round-trip, no connection required to identify a card.

The interesting decision was how you scan. I started with continuous live recognition, but it was a black box: it either worked or silently didn't, and users couldn't tell why. So I moved to a deliberate tap-to-capture model — you line the card up, you tap, it reads. It gives people control and a clear moment of intent.

Under that simple gesture is a fair amount of care:

  • The collector number is decided by a weighted consensus vote across recent frames, so a single frame ruined by foil glare or blur can't throw the result — the reading that keeps coming back wins.
  • The read runs a single fast pass by default and only escalates to a heavier second pass when a card is genuinely ambiguous — keeping the common case snappy.
  • Same-numbered cards (many different Pokémon share a collector number) are disambiguated by reading the name too, including Japanese katakana.

The result is a scanner that feels instant but rarely lands on the wrong card.


2. An honest market value, not a made-up number

Anyone can slap a price on a card. Making it trustworthy was the design problem.

Beyond Scan pulls live UK market data from eBay and turns a spread of listings into a single, defensible estimate:

  • It shows a median with a typical range, a listing count, and a confidence indicator — never a single falsely precise number.
  • It filters to raw, ungraded, single cards located in the UK, throwing out graded slabs, job lots, sealed product and accessories that would otherwise wreck the figure.
  • It accounts for the things that actually move price: condition (a Near-Mint/Lightly-Played/… selector) and finish (reverse holo and 1st edition are their own markets, priced separately).
  • Every figure carries an eBay attribution and an "informational only — not financial advice" line, and the last value is cached for offline so a card still shows its worth without a connection.

Crucially, the value follows the card everywhere — not just after a scan, but on every card you already own.

The market value shown on an owned card in a collection, alongside what was paid

3. Thirty-five thousand cards — including Japanese

A scanner is only as good as the catalogue behind it. Beyond Scan ships with over 35,000 cards baked in, so recognition works the moment you open it, offline.

The part I'm most proud of is Japanese support. Japanese cards are stored under their katakana names but traded in the UK in English — so I built a translation layer that maps the Japanese species name to English, meaning you can search "Charizard" and find the Japanese card, see its English name, and get a UK-accurate price for the Japanese print. It's the kind of detail only a collector would notice, which is exactly why it matters.

Searching the bundled catalogue surfaces every printing of a card, instantly and offline

4. The holo effect

Pokémon cards shimmer. A flat photo of one feels dead. So the signature touch of the app is a tilt-reactive holographic foil — as you move the phone, the card catches the light, a prismatic rainbow shifts across it, and a spectrum rim refracts along the edge, driven by the gyroscope in real time.

It's the one piece of ambient motion in an otherwise still app, and it does real work: it's how you tell a holo from a reverse holo by eye, the same way you would with the card in your hand. It respects Reduce Motion, and the intensity scales with a card's rarity — a secret-rare chase card shimmers harder than a common.


Designed to be calm

Everything outside that foil is deliberately quiet. A restrained monochrome palette, generous space, one clear action per screen, and honest empty states. Collections show what you own, what you paid, and what it's worth now — so you can see the deal you got — with a discoverable way to remove a card you've sold or traded.

Collections, each fanned out with its own cards Inside a collection — a clean grid of the cards you own

It's a premium, trustworthy feel for a hobby that's usually served by cluttered, ad-heavy tools.


Under the hood

  • Swift 6 & SwiftUI, targeting iOS 18, with strict concurrency throughout.
  • Apple Vision for on-device OCR; Core Motion driving the holo.
  • A bundled SQLite catalogue (GRDB) with full-text search, so it's fully local and instant.
  • A swappable pricing layer behind a clean adapter, so the market-data source can evolve without touching the UI.
  • Modular Swift packages (catalogue, scanning, pricing, collections, design system) composed into the app — a codebase built to grow.

Where it's at

Beyond Scan is in active development on real hardware. The core loop — scan, identify, value, collect — works end-to-end, the catalogue is comprehensive, and the pricing is live. Next up is deepening the market data toward realised sold prices and widening card-image coverage.

It's the project where design and engineering had to be the same discipline: the scanning had to be engineered to feel effortless, and the value had to be honest to feel premium. That's the kind of work I like most.

Beyond Scan is an independent project and is not affiliated with, endorsed by, or sponsored by Nintendo, Game Freak, or The Pokémon Company.

Next project

Harrison Morrow Motorsport

Branding

Harrison Morrow Motorsport
View project