← Back to Builds

INSIDE THE LAB / CASE STUDY 01

GrailLocker.Trust the input.

Building a collector's decision tool means getting the card, the evidence, and the record right.

IN DEVELOPMENT / PREPARING FOR BETA

Built from a real question.

GrailLocker started after a card show with my son. He'd bought a card, then wanted to understand its value and whether he'd made a good decision.

I'm building a native iOS application to bring card identity, market context, purchase and trade analysis, and collection records into one workflow. The product direction spans sports and trading-card games; provider coverage is still being validated.

The problem

Collectors move between tools to identify cards, look up prices, compare a deal, and organize what they own. At a show, there's little time to check whether a price belongs to the exact set, parallel, or condition in front of you.

From a card to a decision.

The card starts the workflow. The useful outcome is knowing what to do next, then keeping a record of the cards you acquire.

  1. 01Scan / Identify

    Capture the card and confirm its identity.

  2. 02Market Data

    Understand pricing evidence and its source.

  3. 03Analyze

    Compare a purchase, flip, or trade.

  4. 04Decide

    Buy, counter, pass, or trade.

  5. 05Store

    Keep acquisition details in your Locker.

Card Show Mode focuses on the deal before acquisition. Collector Mode keeps the owned card, what you paid, and market history together. Deal Maker, Flip Opportunity, and Trade Analyzer are part of the product work in progress.

Different jobs. Clear boundaries.

Capture, identification, provider matching, and storage solve different problems. Keeping those responsibilities separate makes it easier to test a decision without changing a collector's records.

Native iOS workflow

  1. iPhone camera / Vision capture
  2. Card identification and identity confirmation
  3. Market evidence and decision tools
  4. Owner-scoped local collection records

Market-data foundation

  1. External pricing provider feeds
  2. PHP validation and staged import
  3. Persistent MySQL market catalog

Provider matching checks catalog candidates against card identity.

Simplified view of implemented development components. The market-feed foundation has been piloted separately; complete app integration and automatic refresh are still being validated.

A price needs evidence.

Similar cards aren't the same card.

A subject and card number aren't enough. The matching resolver checks category, year, full release, number, and variant. Missing evidence stays unknown. An exact match needs one fully proven candidate; unresolved alternatives remain ambiguous.

Provider calls need limits.

The search adapter rejects overlapping requests and applies a cooldown after rate-limit responses. Diagnostic searches are explicit, with no automatic retry loop. That makes provider behavior easier to investigate without multiplying requests.

A failed import shouldn't erase good data.

The market-feed importer validates rows before publishing and commits catalog updates together. If validation or publication fails, it preserves the current catalog. Provider product identity stays separate from a collector's owned copy.

Freshness isn't one timestamp.

A download time doesn't prove when a provider generated its data. The feed foundation keeps source dates, download times, and import times distinct. If the source date isn't supplied, it stays unknown.

Make uncertainty explicit.

Two examples from the development work:

Problem
Release-date metadata can differ from a card's catalog year.
Decision
Compare an explicit catalog year. Don't use a release date to invent a missing year.
Result
The resolver keeps unproven years unresolved instead of forcing a match.
Problem
An unlabeled candidate doesn't prove a requested parallel.
Decision
Require evidence for the complete variant. An unknown variant isn't Base.
Result
A plausible search result can't silently replace the card being investigated.

The lesson so far: a useful tool should be clear about what it knows, what it can't prove, and what the collector still needs to confirm.

Still inside the Lab.

GrailLocker is actively in development and preparing for beta. Matching and market-data components have dedicated development tests, while coverage and integration work continue.

The GrailLocker experience is still in development. Some screens shown are mockups or beta previews and may change before release.

This case study describes development work, not a claim that every integration is available in a released app.