PokeTop10 is a free, professional-grade analytics platform for Pokémon TCG investors and serious collectors. It was built by software developer Sean LeBlanc to solve a specific problem he encountered as an active sealed-product buyer: the existing tools (eBay search, hobby YouTube, scattered forums) gave inconsistent and often contradictory signals. This page describes what the platform does, how it works under the hood, and the editorial principles that govern its development.
Sean is a software engineer who has been actively investing in Pokémon TCG sealed product and graded singles since late 2022, with a tracked personal portfolio across booster boxes, ETBs, UPCs, and PSA-graded chase singles from Crown Zenith, Evolving Skies, 151, and earlier modern sets. PokeTop10 was built and is maintained as a sole-operator project — every signal, every guide, and every line of analytics code on the site is written or reviewed by Sean directly.
Background in software development includes building backend data systems, statistical analysis pipelines, and consumer-facing applications. The technical decisions documented in the methodology guide reflect that background — trimmed-mean outlier filtering, percentile-rank scoring, prediction validation against random baselines, and explicit quantification of where the signals fail (rather than only where they succeed).
Editorial standards for financial content: PokeTop10's analysis pages and guides are not personalized financial advice. The site analyzes a specific category of collectibles (Pokémon TCG sealed product and graded cards) using public market data, and explains the limits of every signal it publishes. Where the data is uncertain, the page says so. Where a prior call was wrong (see the founder story for specific examples), it's documented openly rather than quietly removed.
Public profiles: GitHub (poketop10 source) · Direct contact: poketop10sean@gmail.com
PokeTop10 is a free, professional-grade analytics platform for Pokémon Trading Card Game investors and serious collectors. It tracks current and historical prices for over 4,000 chase-rarity individual cards and roughly 1,400 sealed products across every modern set, applies a set of proprietary scoring signals to highlight what's moving and why, and gives you a free portfolio tracker (PokeFolio) that values your collection in real time.
The pitch is simple: institutional investors have Bloomberg, Refinitiv, FactSet. Stock pickers have Yahoo Finance, Seeking Alpha, hundreds of Substacks. Crypto traders have Glassnode, CoinGecko, Dune dashboards. Pokémon TCG investors had spreadsheets, YouTube, and gut feel. PokeTop10 is the attempt to close that gap — to give the same kind of data infrastructure to anyone allocating real money to Pokémon collectibles.
Crucially, this is a decision-support tool, not a recommendation engine. We surface signals; you decide. Every number on the site is documented, every methodology page (read the full methodology) explains exactly how the formulas work, and nothing on this site is financial advice. The goal is to make you more informed, not to take your judgment out of the loop.
The origin of PokeTop10 traces to late 2022, when Sean — returning to Pokémon TCG as an adult after twenty years away — pulled a Mewtwo VSTAR Galarian Gallery (GG44) from a Crown Zenith Elite Trainer Box at a Target store. The cards were familiar from childhood; the investment angle was new. The natural next step was watching the YouTube channels that cover sealed Pokémon investing. Within a couple of weeks, a pattern emerged: every channel was excited about everything. Every set was a "must buy." Every ETB was a "10x in 5 years" call. Even sets that historically underperformed got the same euphoric framing as the legitimate winners.
The missing thing was data. Specifically: which sets had actually appreciated and which hadn't, what the typical post-OOP curve looked like, how much of a chase card's price was momentum versus fundamentals. The first attempt at filling that gap was a Google Sheets workbook — 30 sealed products, manually refreshed weekly with eBay sold-listing prices. Within three weeks the spreadsheet was painful. Within six weeks it was clear that code, not manual data entry, was the only sustainable path forward.
The first version of PokeTop10 was a single Cloudflare Worker that polled the eBay Browse API on a cron, computed a trimmed-mean price (to filter out scam listings and bundles), and served the result as a static JSON file. The frontend was a single HTML page with a sortable table. That was it. The whole thing took a weekend.
Signals came next. The trend score was first — momentum needs to be expressed in a way that accounts for volatility and historical position, because a card dropping from $500 to $400 is mathematically identical to a card rising from $300 to $400 if only the dollar change is shown. Then volatility. Then the buy/hold/sell zone based on position in the historical range. Then the breakout radar, addressing the consistent problem of missing entries on cards that were quietly accumulating before the YouTube cycle caught up. Then CSIS for sealed products, because comparing an ETB against a booster box against a tin requires a normalized score, not raw prices. Each signal solved a specific frustration encountered while actively buying.
PokeTop10 isn't a startup pitch deck. It's the tool one developer needed, that other people might also need, built one weekend at a time on top of free Cloudflare infrastructure.
The site has three layers and runs entirely on Cloudflare's edge network — no traditional servers anywhere.
The frontend is static HTML, CSS, and vanilla JavaScript. No build step, no React, no framework — just files served from Cloudflare Pages. This is deliberate: zero build complexity, every page renders in under 200ms, and a non-developer can read the source and understand what's happening. The dashboard, card explorer, sealed explorer, promos page, and portfolio tracker are all pure browser-side rendering against a single backend API.
The backend is a single Cloudflare Worker (~12,000 lines of JavaScript) that runs on Cloudflare's global edge. It exposes about 40 endpoints — `/init` (the dashboard mega-fetch), `/catalog/search`, `/sealed/catalog`, `/portfolio/*`, the auth endpoints for PokeFolio's magic-link sign-in, the price-alert system, the admin diagnostics — all served from one worker instance per region. KV storage holds the snapshot data and computed leaderboards. D1 (Cloudflare's SQLite database) holds the price history, portfolio data, user accounts, and snapshot logs.
The data pipeline runs on cron triggers. Eleven separate cron invocations across each 24-hour cycle — full snapshots at 04:00 and 16:00 UTC, dedicated scanner runs for catalog refresh (04:30), promos (05:30), sealed products (06:30), images (07:30), and quick refreshes at 09:00, 14:00, and 23:00. Each cron has its own subrequest budget on Cloudflare's edge, which is the architectural reason why the heavy work (per-card price fetching, eBay listing volume scanning, image backfills) is spread out instead of crammed into one monolithic run.
Data sources are JustTCG (primary card pricing — they expose Near Mint condition prices specifically, which is what serious collectors care about), eBay Browse API (real-time sealed product listings and price floors), PokémonTCG.io (card metadata, set information, image URLs), and PokéTrace (a fallback when JustTCG returns thin data on the long tail). All three are accessed through OAuth or API key authentication; none of them are scraped. Every price you see has gone through an outlier-filtering trimmed-mean methodology before it lands in our database — we don't trust any single listing on its own.
Raw price data is necessary but not sufficient. The signals below are what turn data into insight. Each one solves a specific problem encountered during active buying.
Every signal listed here is documented in the methodology guide. We publish the formulas openly because users deserve to know what's behind the number, and because hiding them would imply the magic is in the formula itself — which it isn't. The magic, to the extent there is any, is in what data goes in (NM-condition pricing, trimmed-mean filtering, multi-source cross-checks, daily refresh cadence) and how the signals combine to flag patterns a human eye would miss.
A handful of things this site will never do, even if they would make money.
Here's what's actively being built, in priority order:
For specific feature requests or feedback, the contact page is the fastest way to reach the founder directly.
PokeTop10 is and will remain free for the analytics. The site is funded primarily by affiliate commissions through the TCGPlayer Affiliate Program and the eBay Partner Network. When a reader clicks a "Buy on TCGPlayer" or "View on eBay" link from a card page or sealed product page and subsequently makes a purchase, the platform earns a small commission at no additional cost to the buyer. That commission funds the Cloudflare Workers usage tier, the JustTCG and PokémonTCG.io API quotas, the domain registration, and the development time invested in writing code and content.
Transparency about how affiliate-driven incentives could distort a tool like this matters. Affiliate commissions are paid on ANY purchase a user makes, regardless of which specific card. That means there is no incentive to favor any particular card, set, or grade in the analytics. The breakout radar, trend scores, and CSIS grades are computed before any affiliate consideration. Buy and sell links appear on every product page in the same place, with the same visual weight, regardless of which retailer would pay a higher commission. (As of writing, TCGPlayer and eBay pay roughly comparable rates.)
If the affiliate model ever stopped being sufficient, the next step would be the optional Pro and Investor subscription tiers, both of which add convenience features (more alerts, advanced tools) without restricting access to any of the core analytics. The principle is "free analytics forever, optional premium tools" — not "free trial that becomes paid."
Direct email: poketop10sean@gmail.com — every message gets read. Bug reports go to the GitHub issues page. Feature requests, data corrections, partnership inquiries, press, and anything else: the contact page is the central hub.
For deeper reading, the guides section has long-form articles on grading, sealed product types, out-of-print investing, the methodology, set retrospectives, and the founder narrative behind why this site exists.
← Back to Dashboard