The problem
Show Korean trading-card buyers — Pokémon, Yu-Gi-Oh!, One Piece — prices from Korea, the US and Japan on one screen, with sales, asks and list prices kept apart.
Decisions
- An honesty charter: no fake numbers; only values measured at least twice (a single one is marked as a sample); no unlabeled numbers; no averages that mix sales, asks and list prices; no predictions; errors kept distinct from “none”; sources shown.
- Active eBay listings are re-sorted by price plus lowest shipping, with a ratio-trimmed mean as the representative value. On one card, fixed trimming gave $136.50 and ratio trimming $243.56 — free of bait listings. This axis is always labeled “ask”.
- Words that flag polluted overseas listings — same-name items, empty boxes, bundles — came from real samples (0 false positives in 120). The 6× divergence threshold is measured too: normal 1.24–4.73×, mismatches 100× or more.
What broke — and the fix
- Four outages (20 min, 2 min, 5.9 h, 47 min). The database status API said healthy while one-row queries timed out at 8 s, 49 times in a row. The cause was the disk IO budget; after a compute upgrade, 0 outages even under triple load.
- Missing images jumped by 3,875 — not a regression. The weekly cron had added rows that never had images at the source; existing images lost over a month: 0.
Results
- 80,591 cards (Pokémon 62,097 · Yu-Gi-Oh! 14,472 · One Piece 4,022)
- 77,068 source images + 231,204 derivatives · 98.5% coverage
- 11 regression suites · 27 pricing-engine unit tests PASS
- Prices, search, card and sealed-product pages, market and shop onboarding all working