Platform status

All systems operational

Every upstream venue CardPricer ingests, with the last time we saw a row from it and how many rows landed in the last 24h / 7d. If your dashboard goes stale, this is the first place to look — the answer is either “we're fine, you cached something” or “here's the venue that's broken”.

Healthy sources
4
of 14 tracked
Cards refreshed · 24h
7,835
across every category
Last card update
5h ago
Thu, 24 Sep 2026 20:11Z
Latest history row
2026-09-24
price_history table

Monetization & growth

Pro subscribers
1
~$19 MRR
Affiliate clicks · 24h
0
outbound buy links
Affiliate clicks · 7d
0
EPN wired
Price coverage
31.6%
18,782 priced

eBay sold comps

Browse (active listings) is connected. Marketplace Insights (sold prices) is pending eBay Application Growth Check approval for scope buy.marketplace.insights. On-chain comps (Collector Crypt, Magic Eden) are live and drive most card prices today.

Upstream sources

SourceTypeLast seen24h7dHealth
Collector Crypt
source=collector-crypt
On-chain10h ago5402,403Healthy
Pokémon TCG API
source=pokemontcg
Aggregator16h ago1952Healthy
YGOPRODeck
source=ygoprodeck
Aggregator10h ago103642Healthy
Scryfall
source=scryfall
Aggregator2d ago0272Inactive
Magic Eden
source=magic-eden
On-chain11h ago28104Healthy
eBay
source=ebay
Marketplacenever00Inactive
COMC
source=comc
Marketplacenever00Inactive
PWCC
source=pwcc
Auctionnever00Inactive
Goldin
source=goldin
Auctionnever00Inactive
Heritage
source=heritage
Auctionnever00Inactive
TCGplayer
source=tcgplayer
Marketplacenever00Inactive
Cardmarket
source=cardmarket
Aggregatornever00Inactive
Courtyard
source=courtyard
On-chain2mo ago00Inactive
Whatnot
source=whatnot
Marketplacenever00Inactive

Match strategy mix

Every on-chain comp records how it was attributed to a card. A healthy mix is dominated by the tightest strategies — number+grade and number+player+grade. Looser strategies are still safe (every match goes through a player-similarity check) but they signal where our card metadata is incomplete enough that the matcher has to lean on weaker signals.

Strategy7d30d
cc_buy_now
cc_buy_now
1,0001,000

Cron pipeline runs

CronLast startedExpectedDurationResultStatus
recompute-volumes1d ago24h6.3schanged=190 · processed=59,175 · totalComps=1,489 · distinctActive=933Stale
refresh-price-history1d ago24h5.0sStale
refresh-card-price1d ago24h2.9schanged=0 · processed=59,175Stale
sync-onchain-sales12h ago24h37.2sOk
sync-courtyard-sales12h ago24h——Stale
sync-onchain-listings10h ago12h117.9sOk
harvest-spec-sales4h ago16h30m170.7sOk
sync-ebay-sales11h ago24h148.4scardsProcessed=24Ok
sync-scryfall-pricesnever24h—no run ever recordedNever run
sync-pokemon-pricesnever24h—no run ever recordedNever run
sync-ygo-pricesnever24h—no run ever recordedNever run
sync-psa-population7h ago24h——Stale
sync-cgc-population6h ago24h2.3sOk
harvest-ebay-certs7h ago24h——Stale
price-reference5h ago9h78.1scardsProcessed=100Ok
poll-pricesnever24h—no run ever recordedNever run
prune-prices1d ago24h4.6scleaned=40 · downgraded=0 · playersRefreshed=3,395Stale
resolve-players9h ago24h22.8slinked=209 · scanned=3,954 · playersRefreshed=3,404Ok
sync-card-catalog6h ago24h88.7scardsProcessed=674Ok
accrete-sports-catalog6h ago12h401.1sOk
refresh-scp-prices11h ago16h248.0sscanned=beaux-collins:0,beck-malenstyn:0,beckett-sennecke:0,ben-bredeson:0,ben-chiarot:0,ben-hutton:0,ben-jones:0,ben-kindel:0,ben-meyers:0,ben-saraf:0,ben-sims:0,ben-sinnott:0,ben-skowronek:0,ben-wallace:0,ben-williamson:0,ben-yurosek:0,benjamin-morrison:0,benjamin-st-juste:0,berkly-catton:0Ok
backfill-spec-images6h ago24h——Stale
snapshot-portfolios2h ago24h1.8sOk
snapshot-tcg-prices3h ago24h99.3schanged=0Ok

Health rules

  • Healthy: last row seen within 36 hours. Daily syncs (Scryfall, Pokémon TCG, YGOPRODeck) should always be here when running.
  • Stale: last row between 36h and 7d ago. Aggregator quotes drop here first; marketplaces stay healthy longer since activity is naturally bursty.
  • Inactive: never ingested. Either the source is on the roadmap but not wired up yet, or it's been disabled.
  • Cron Never run / Stale: every tracked job is listed, even with no cron_runs row. Stale means the last start is older than 36 hours — Vercel is not invoking it, or auth is failing before the job can log.

Cron rows are judged against their own cadence, and the Expected column is derived from vercel.json rather than restated here, so the two can't drift. A cron reads Stale once its last run is more than one full cadence plus 2h old, and Never run when it has no run on record at all — a tracked job that never fires is the failure mode this table exists to catch, so it is always shown rather than omitted.

The same payload is available as JSON at /api/v1/status. That endpoint and this page share their query logic, so they can never diverge.

Why this exists

Transparency goes both ways.

We publish a confidence score on every card and player folder. If you're going to trust those numbers you should also be able to verify the pipeline that produced them. That's what this page is for.