Methodology

How Verdict Works

Last updated July 2026

Every number on this site is built from real market data — recent eBay sold listings, third-party catalog and pricing services, and population reports from the major grading companies. This page walks through the pipeline and names every data source.

Where the Data Comes From

Verdict is not a one-source tool. The verdict on any given card draws from a stack of independent providers, each picked for the job they do best:

  • Verdict’s own card catalog — the primary resolution layer. 2.2M+ cards built from hand-curated hobby checklists, carrying subset, parallel, and print-run detail. This is what turns a messy search into one specific card — and it’s why a “gold /50” prices against the right pool instead of the base card. We keep replacing weaker auto-extracted data with hand-checked checklists as we go.
  • CardSight — fallback catalog lookup when our own checklists don’t cover a card yet, sold-comp and grade data for selected categories, and the vision model behind AI Snap for sports, Magic, and Pokémon. Queried live at request time; we don’t retain their catalog as our own.
  • GemRate — aggregated grading population data across PSA, BGS, SGC, CGC, and CSG. Drives the Pop Report block, the grade-distribution table, and the probability-weighted EV in the Should I Grade panel.
  • eBay sold listings — the historical sales record. Used directly for the median comps and the trend chart, and cached in our own database so sales eBay drops from its 90-day window don’t disappear from your history.
  • TCGPlayer — used in TCG mode for ungraded (Near-Mint) market price on cards where TCGPlayer has a match. Cleaner than eBay for raw TCG because TCGPlayer is condition-specific by default.
  • eBay’s official Browse & Taxonomy APIs— live in production. Powers active-listing search (what a card is asking right now) and structured per-item data pulled straight from eBay’s own listing fields (player, parallel, grade, card number) rather than regex-parsing a seller’s title.
  • Apify — how we retrieve eBay sold-listing comps for most categories (a few are served by CardSight instead), plus server-side listing retrieval for Lot Calculator URL imports. Budgeted carefully (see the Watchlist / Collection section below for how we protect that budget). In late July 2026 eBay tightened anti-bot protection on its sold-listings page, which broke the previous retrieval path industry-wide; Apify restored real, current sold data. If a category is ever left without sold coverage, affected searches show a “Sold Comps Temporarily Unavailable” notice with active listings shown as a fallback rather than stale or wrong data.
  • Anthropic Claude — the vision model behind the Grade Tool, Lot Calculator bulk identification, and cert scanning. Single-card AI Snap identification on the search page uses CardSight; the multi-card flows use Claude.

The Pipeline, Step By Step

1. Pulling sales

When you search a card, your query is resolved against Verdict’s own catalog — falling back to CardSight when a card isn’t covered yet — then priced against the last ~90 days of eBay sold listings (not active ones — active listings show what people want; sold listings show what people actually paid). Every sale we pull gets cached in our own database, so sales that drop out of the rolling window don’t disappear from your history.

2. Strict matching

Every word in your search must appear in the listing title. We allow one typo in longer words (Levenshtein distance 1 or 2 depending on word length). Card numbers are matched with word boundaries — #7 won’t accidentally match #75.

3. Sub-brand & non-card exclusion

If you search for base Topps, Chrome listings get filtered out. If you search a card, wax boxes, packs, lots, and cases get filtered out. This sounds obvious but it’s the single biggest source of inflated FMV estimates on other pricing tools.

4. Parallel/insert handling

We keep a checklist of every major parallel (Refractor, Prizm, Gold, Silver, Sapphire, etc.) and insert set across MLB, NFL, NBA, NHL, TCG, and non-sport products. When your query targets a specific parallel or insert, we merge every matching listing into one bucket. When it doesn’t, we split sales by parallel so you can see each variant priced separately.

5. Outlier removal

Using the interquartile range method (2× IQR), we remove extreme prices that would skew the median — a wax box that slipped through a filter, a bidding-war anomaly, a typo listing. Only applied when we have at least 5 sales to work with, and only when the removal doesn’t wipe more than half the data.

6. Statistics

What you see on the dashboard:

  • Fair Market Value: the median after all filtering. The middle sale, not the average — less sensitive to outliers.
  • Weighted Recent: a median that gives more weight to the most recent sales. Catches trend moves earlier.
  • Low / High: the 25th and 75th percentile — what a fair low and fair high look like, not the absolute bottom and top.
  • Last Sale: the single most recent confirmed sale.
  • Price Stability: how tightly recent sales cluster. Wide spread = Volatile.
  • Trend: the % change in average price over the last 14 days vs the prior 14 — shown in the header badge.

Why Fair Market Value can sit below the last few sales

This is the question we get most, and it’s worth being direct about. Fair Market Value is a recency-weighted median across roughly the last two months of sales — not an average of the last few. Recent sales count for more, but older ones still count.

So on a card that is climbing fast, our number will read lower than the most recent sales, and that is deliberate. A card with a hot week might show a $320 plain median, a $330 weighted value, and $360–$400 sales in the last three days. All three are accurate — they just answer different questions. The last-three-days average tells you what it is trading at this week. Ours tells you what it is worth in a way that a short hot streak, one overpay, or a single thin day can’t swing.

That resistance is the whole point. Cards with only a handful of sales are easy to distort — we’ve seen a five-sale card swing from $295 to $176 on one bad comp — so the window is wide enough that no single sale can move the headline much. The trade-off is that a genuinely rising card takes time to be reflected.

When you want the fast-moving read instead, use the Trend badge and Last Sale alongside FMV, and check the comp table — every sale we used is listed with its date, so you can always see the recent run for yourself.

    Photo ID & Auto-Crop

    When you tap AI Snap on the search page, your photo routes by category. For sports cards, Magic, and Pokémon, the photo goes to CardSight — image-trained on the actual catalog (~99.5% accuracy on supported sets). For Yu-Gi-Oh, Lorcana, One Piece, Bo Jackson Battle Arena, non-sport, or anything CardSight doesn’t cover, the photo goes to Anthropic Claude with a category-tuned prompt instead. If CardSight is unsure on a supported category, Claude takes a second pass as fallback.

    For sports and non-sport cards you can add a second photo of the back — the identifier reads it primarily for the card number, dramatically improving accuracy on cards where the front number is small or missing.

    Multi-card flows (Lot Calculator bulk identification, Grade Tool front/back analysis, and cert-label scanning) always use Anthropic Claude, because those flows need reasoning across multiple cards or full-card visual analysis rather than a catalog match.

    The Grade Tool auto-crop starts with a fast local edge-detection algorithm. If that fails — or returns a quad that doesn’t look like a trading card’s shape (wrong aspect ratio, heavy skew, defaulted to image bounds) — we fall through to a two-pass Claude Vision detection: first on the full photo to locate the card, then on a tight crop around that location for precise corners. You can also tap Re-run with AI at any time.

    Grade Prediction

    The Grade Tool reads front and back scans and predicts what PSA, BGS, SGC, or CGC is likely to assign. Underneath the hood it’s doing more than just classifying a picture — it’s measuring centering the same way professional graders do, scoring four sub-grades against the published PSA thresholds for each numeric grade, and then combining that prediction with real population data and real sales comps to tell you whether grading is actually worth your money.

    Centering — measured, not estimated

    Centering is the single most common reason cards miss a PSA 10, so we measure it explicitly using the SportsCardHQ centering overlay method. For each axis (left/right and top/bottom) we project the imaginary guide-line grid onto the card edges, identify which guide each border aligns to, and look up the exact ratio from the published guide-pair table (e.g., guide pair 8-6 → 57/43). Both axes are reported separately — averaging them is the most common mistake — and the worse axis is the one that caps the centering sub-grade.

    The centering sub-grade is then mapped to the official PSA centering thresholds: PSA 10 requires 55/45 to 60/40 on both axes; PSA 9 allows 60/40 to 65/35; PSA 8 allows 65/35 to 70/30; and back centering must be 75/25 or better for a 10, 90/10 for everything below. These thresholds aren’t something we made up — they’re what PSA publishes — and we apply them strictly. A card with 65/35 on either axis cannot be predicted a 10.

    Corners, edges, surface — judged honestly

    Each of the four corners and four edges is examined individually for softening, whitening, fraying, and chipping. Surface is scanned for print lines, scratches, indentations, gloss disruption, and print defects. Chrome, Prizm, and Refractor cards get extra scrutiny because their edge chipping is notoriously easy to miss in scans.

    Dirt isn’t a defect. Graders clean a card before they assess it — a fingerprint or a speck of dust picked up in transit gets wiped off and never reaches the grade. Only what won’t come off is graded. So loose dust, lint, and fresh fingerprints don’t lower your surface score here either; they show up under Before You Submit instead, because clearing them stops a grader mistaking them for damage. Marks that sit in the surface rather than on it — scratches, gloss breaks, ink, stains, set-in wax — are graded normally.

    That Before You Submit panel carries a bit more than dirt. It also names the specific corner or edge the scan couldn’t settle and tells you to check it in hand, and flags anything worth confirming before you pay a grading fee — measuring centering yourself when the card is sitting on a threshold, say. Nothing in it counts against the grade; it’s the short list of things worth doing while the card is still on your desk.

    A scan can’t replace an in-hand inspection — micro-scratches, soft corners under specific lighting, and gloss issues can be invisible on the best photo. Rather than hide that limitation, the tool widens its predicted range and lowers its confidence when image quality constrains what it can see. White-bordered cards on a white scanner background trigger a specific warning because the border-to-background contrast makes corner whitening genuinely undetectable.

    Sport, TCG, and category-specific quirks

    The prediction prompt includes dedicated playbooks for sports cards, Pokemon, MTG, Yu-Gi-Oh and other TCG, golf, UFC/MMA, and vintage non-sport categories. Topps Chrome and Panini Prizm get edge-chipping red flags; Yu-Gi-Oh secret rares get factory-print-line caveats; 1970s/80s wax-pack cards get corner-ding warnings. The same model runs underneath, but the rules it’s scored against shift by category.

    Predicted grade — range, not point estimate

    Every prediction returns a worst / likely / best range with a high/medium/low confidence band, not just a single number. PSA 10 is the hardest grade to hit and the easiest to predict wrong — so the tool is explicitly instructed never to confidently call a 10 without always including 9 in the range. If you see a confident 10 prediction elsewhere, treat it as a sales claim, not a grading opinion.

    Half grades, where the company issues them. BGS, SGC and CGC all grade in half steps — a CGC 8.5 is a real, commonly issued grade, typically the nod a card gets when its eye appeal beats a straight 8 but its flaws still bar a 9. PSA has no half grades. So the card is graded once, on a shared scale that allows half steps, and that number is then put on whichever company you’ve selected: BGS, SGC and CGC show it as-is, and PSA rounds it down. Down, not to nearest — a card between an 8 and a 9 hasn’t earned the 9, and rounding up would overstate the money on exactly the borderline cards where the decision is closest. Switching the grader pill re-renders the grade instantly; it doesn’t re-run the analysis.

    The verdict isn’t the prediction — it’s the math after

    Once we have a prediction, the tool computes a probability-weighted expected value for sending the card in to each of PSA, SGC, BGS, and CGC. The math:

    EV = Σ (probability of grade i × net sale price at grade i) − raw card price − grading fee − ship − marketplace fees

    Grade probabilities start from GemRate’s historical population distribution for that exact card — so the same prediction yields a different EV for a card with a 12% gem rate vs. one with a 47% gem rate. We then blend in the AI’s confidence and worst/likely/best range so the EV reflects what this card’s likely outcome looks like, not just the population average. Net sale prices come from the same eBay sold-listings pipeline that powers Verdict pricing — median, after outlier removal, after parallel-aware filtering.

    We auto-select the cheapest grading tier the card’s estimated top-grade value qualifies for, because most users don’t realize their $2k card needs the next tier up. PSA, SGC, and CGC all gate tiers by max insured value; using the wrong tier silently breaks the math elsewhere. The tier we picked and why is shown right under the verdict.

    Outcome ladder — not just one number

    The verdict panel includes a three-cell outcome ladder showing the actual net dollars at the AI’s worst, likely, and best grades for the selected grading company. This isn’t a probability blend — it’s “if it grades a 10, +$92 net; ifit drops to a 7, -$31.” You get to reason about downside and upside explicitly instead of trusting a single blended EV number.

    What this approach gives up — and why

    We don’t publish an “X% accuracy” marketing stat, because the only honest version of that number requires comparing thousands of our predictions against the grades PSA actually assigned — and we’d rather build that dataset for real (via the My Grades feedback loop, where users log their actual returned grades) than invent one. We don’t name an “N inspection points” figure either, because the model is examining the card as a whole; there’s no honest way to tally discrete “points.” And we don’t guarantee a refund if our prediction is off — that promise reads well but doesn’t change what’s in the slab.

    What we offer instead: real-world centering measurement against published PSA thresholds, honest confidence bands that widen when the scan doesn’t let us see well, EV math that uses your actual card’s population distribution and current eBay comps, per-grader cost auto-selection, and the outcome ladder so you can see what each possible result actually means in dollars. Use it as a decision tool, not a substitute for the slab.

    Population Reports (GemRate)

    When your search includes a grade token (e.g., “PSA 10”), we pull a population report from GemRate. The Pop Report block summarizes total graded population, gem rate (Perfect + Pristine + Gem Mint / total), and 9+ rate (everything Mint+ and above). Expand it for the full grader-by-grader breakdown — PSA, BGS, SGC, CGC, CSG — showing how many copies have hit each grade bucket.

    The same data appears as a per-row toggle on Collection and Watchlist whenever a row’s query is graded. If you have a cert number in hand, the cert-lookup form upgrades the summary into the detailed table for that specific submission. Population coverage varies by era and brand — modern Topps Chrome will show full detail; obscure vintage sometimes returns “summary only.”

    Should I Grade? — Probability-Weighted EV

    The Flip page’s Should I Grade panel combines CardSight’s pricing with GemRate’s grade distribution to compute an expected value for sending a raw card in:

    EV = Σ (probability of grade i × net proceeds at grade i) − raw cost − grading fee

    Grade probabilities are derived from the historical population distribution for that exact card. The result is a probability-weighted recommendation that beats just looking at the PSA 10 comp in isolation — a card with a tiny gem rate may still lose money on grading even when the PSA 10 sale is huge.

    Flip & Grade Arbitrage

    For a raw card with a known year and solid comps, we automatically pull comps at two grade tiers from your selected grading company (Mint and Gem Mint — e.g., PSA 9 and PSA 10) and calculate:

    Net profit = Graded comp × (1 − eBay fee % − payment fee %) − Raw buy price − Grading cost

    eBay fees, payment-processing fees, and grading cost are all editable in the Flip page’s settings drawer. Default grading cost is the cheapest published bulk/economy tier for the selected service (PSA Value $25, SGC Standard $18, BGS Base $19, CGC Bulk $15). The verdict bubbles up as “Strong Flip,” “Worth Flipping,” “Thin Flip,” “Hold — Underwater,” or “Don’t Flip Yet.” Confidence-adjusted logic will override a paper-best graded path in favor of selling raw if the graded comp is thin-sample, raw has dominant liquidity, or raw ROI is better.

    Lot Calculator

    Paste a lot listing URL; we scrape the photos, Claude Vision identifies each card, and each card is priced through the full pricing stack with a fallback cascade: exact match → raw equivalent (if graded) → alt grade (PSA 10 → PSA 9 comp) → drop print run → drop color → drop card number → drop parallel → drop year → drop set. Cards priced from a fallback are flagged as “estimated” so you can see where the uncertainty is.

    Offer Evaluator

    Someone sends you an offer. Enter the card, the offer, and what you’re in it for, and you get accept, counter at $X, or pass — with what you’d net after fees and shipping, the offer as a percentage of recent sold comps, and the price where you break even.

    The part that isn’t arithmetic is liquidity. The same 15%-under offer is worth countering on a card that trades weekly and worth taking on one that sells twice a year, because waiting has a cost that never appears on a fee line. Counters are aimed near comp, floored above your break-even (there’s no point countering into a loss) and capped at your own asking price. When the gap is only worth a dollar or two after fees, it says so rather than risking the sale. And if even a full-price sale wouldn’t clear what you paid, that’s called out as an underwater card — a different problem from a bad offer.

    Collection Completion — Rainbows & Sets

    A third view in your Collection, next to Grid and List, answering one question: what are you close to finishing? It deliberately renders no card images — a collection runs to hundreds of cards and a base checklist to thousands — so the unit of display is the chase, not the card.

    Rainbows track every version of a single card. Own one and the whole ladder appears — the base card, then the numbered parallels from the commonest print run through the 1/1 — colour-coded from the parallel’s own name. Owned rungs are filled; every rung links straight to an eBay search for that exact version. Marking a rung owned is just a tick: no price, no comps, no tile, and it doesn’t count against your collection cap, so the ladder can be accurate without you importing a card for every parallel. Sets show progress on the insert sets you’ve started, closest to done first, with the card numbers you still need and a copy-able want list. Inserts lead by default: a 25-card insert is a realistic chase, while a 300-card base run is better served by a dedicated checklist site.

    A completion percentage is only as honest as the checklist behind it. If we hold 40 cards of a 50-card insert, someone owning all 40 would see “complete” and stop hunting. So sets measured against a checklist we haven’t hand-verified are labelled as such, rather than implying you’re closer to done than you are.

    Collection & Watchlist Mechanics

    Both pages let you sort (by name, paid, current price, gain $, gain %, last checked, target, distance-to-target) and filter (priced/unpriced/ winners/losers on Collection; at-target/near/above/unchecked on Watchlist). Sort and filter are session-only — they reset on refresh.

    The arrow next to each price compares the current Fair Market Value to the value the last time you tapped Check on that card. Green up, red down, with a % delta. No arrow means there’s no prior check to compare against.

    Check All intentionally skips any card you’ve checked within the last 7 days. This protects our paid-API budget so a 100-card collection clicked twice a week doesn’t burn 200 calls for the same data. The skipped count is shown in the progress message; any individual card’s Check button still refreshes it immediately.

    Watchlist alerts. A daily job re-prices watched cards and emails you when one crosses the target price you set. Targets stay editable after you set them — a target is a judgement about a market that moves, unlike a cost basis, which is a fact that happened once. Removing a card offers Undo rather than a confirmation dialog: nothing is deleted while Undo is on screen, so your price history survives a misclick.

    What we DON’T do

    • Fair Market Value is never computed from asking prices — only confirmed sales (eBay) and verified market data (CardSight, TCGPlayer, GemRate). The one exception: when sold-comp retrieval is temporarily unavailable for a category (see the sold-comp retrieval note above), we show an explicit “Sold Comps Temporarily Unavailable” state with active listings as a clearly-labeled fallback signal — never blended into FMV as if it were a sold price.
    • We don’t apply secret multipliers, fudge factors, or fill in missing data with guesses. When a fallback is used, the result is flagged as “estimated.”
    • We don’t scrape anything beyond the data sources named at the top of this page. New providers will be added here before they ship.

    Still have questions on the math? Check the FAQ or reach out directly.