03 / Product
Mintlytics
Collectibles Market Intelligence / Pokémon TCG
A Pokémon TCG market-intelligence platform — pricing history, portfolio tracking, alerts, market signals, eBay deal discovery, sealed products and collector tools, in one interface.
Product / Mintlytics
↔ Drag2044 × 1197
01 / The Problem
The market isn't broken. It's scattered.
The Pokémon market isn't fundamentally broken. Pricing tools exist, marketplaces exist, collection trackers exist, population data exists.
The problem is fragmentation. Checking a price is one platform; tracking a collection is another; marketplace listings, PSA population, alerts and sealed products are each somewhere else. For anyone actively collecting, flipping, grading or managing a larger collection, that pile of separate tools is friction.
I collect Pokémon myself, which gave me a direct read on the questions I wanted answered in one place.
What I kept asking
- 01What is this card worth?
- 02What has it been doing over time?
- 03Is the price unusually high or low versus recent history?
- 04Is there a listing below a price I'd pay?
- 05How has my collection changed in value?
- 06What sealed products are moving?
- 07Is Pokémon Center restocking?
- 08Is a PSA population changing?
The problem wasn't missing data.
It was having to look everywhere for it.
02 / The Idea
One account, one data layer, one market view.
The original idea was an all-in-one tool I could use myself — useful for both sides of the hobby. A collector wants to find cards, track a collection, watch prices, set alerts, complete sets and follow sealed products. A reseller or market participant wants to watch prices, find listings, track spreads, follow activity and compare cost basis against current value.
Over time it grew into a much larger market-intelligence platform, but the goal stayed the same: collapse a dozen disconnected tools into one system.
One account.One data layer.One search.One portfolio.One alert system.One market view.
03 / The Data Terminal
Many signals in. One market view out.
Every external signal Mintlytics reads is normalized into one internal data layer — and that layer, not any single source, is what the features are built on.
Inbound / sources
- eBayactive listings
- TCGPropricing
- Pokémon catalogcards + images
- PSA populationscarcity
- Redditmentions
- Pokémon Centerrestock monitor
- Portfolio activityuser holdings
- Price historyinternal store
Outbound / surfaces
04 / The Product
One product, a lot of surface area.
Mintlytics combines a broad set of tools against that single data layer. The dashboard is the way in — portfolio value, tracked cards, active alerts and market pulse in one view — with each module a click away in the rail.
- 01Market intelligenceCurrent pricing, movement, sentiment, movers, and set and sealed activity, with comparisons to recent pricing history.
- 02Collection & portfolioTrack raw, graded and sealed holdings with cost basis, current value and performance over time.
- 03Watchlist & alertsPrice alerts on absolute values or percentage moves, plus thresholds for prices you'd personally buy at.
- 04eBay SniperWatch cards and compare live listings against tracked market pricing at a margin you define.
- 05Sealed, sets & PSAA sealed catalog, set-completion tracking, and population and scarcity context where data exists.
- 06AI, grounded in the dataA card assessor and a conversational analyst that read Mintlytics' own market context.
System / Dashboard
↔ Drag2045 × 1257
05 / The Design
A trading terminal that's still, unmistakably, a Pokémon tool.
Most collection tools feel static, plain and database-like. Mintlytics was designed to feel closer to a trading platform — deep-navy surfaces, cyan and mint data accents, dense dashboards, large card imagery, charts, tickers and live status — because the audience includes collectors and market participants who enjoy highly visual products.
The energy is deliberate, but never at the cost of legibility: the goal is immersion that stays easy to use.
Colour
Signal
Ticker
Status
06 / The Build
A broad stack, kept legible.
Mintlytics is a Next.js and React 19 app in TypeScript on Node 20, with Prisma over PostgreSQL on Neon, NextAuth for auth, and Tailwind and Recharts on the front. It runs on Vercel, with scheduled work on Vercel Cron guarded by wall-clock limits and a start/end log-event pattern for observability.
The data comes from several external systems — TCGPro through RapidAPI (capped near 2,400 calls a day), the PokémonTCG.io catalog for cards and images, the eBay Browse API for the sniper feed, the Reddit API for mentions, and ScrapingBee for Pokémon Center monitoring.
- FrameworkNext.jsReact 19Node 20
- LanguageTypeScript
- DataPrisma 7PostgreSQL / Neon
- UITailwind CSS v4Rechartslucide-react
- AuthNextAuth
- Hosting / opsVercelVercel Cronwall-clock guardsstart/end log events
- Data sourcesTCGPro (RapidAPI)PokémonTCG.ioeBay Browse APIReddit APIScrapingBee
- ToolingtsxESLintPrettier
07 / The Data Problem
The better data was the data we didn't rent.
The hardest part of Mintlytics has been data reliability. Early on it leaned heavily on external APIs for market information, and that brought stale data, changing APIs, rate limits and a dependency on third-party availability — plus the difficulty of maintaining consistent historical data.
TCGPro was an important pricing source, and still is. But relying entirely on outside providers would cap what the product could become. So Mintlytics is gradually building its own historical pricing database instead — deliberately limiting external calls to roughly 2,400 a day while collecting and storing data internally.
The tradeoff is time. Building a reliable historical dataset is slower than displaying an external API response. It's also a far stronger long-term foundation.
The fastest way to build it wasto rely on someone else's data.The better way was to startbuilding our own.
08 / Data Ingestion
One pipeline, built to be trusted over time.
External sources feed a controlled pipeline — polling within limits, validation, normalization — into a historical price store, and the platform's surfaces read from that store.
External sources
- Rate limit / polling / cron~2,400 calls a day01
- Validationshape + sanity checks02
- Normalizationone internal shape03
- Prismadata layer04
- PostgreSQL / Neonstorage05
- Historical price storethe long-term foundation06
Surfaces
09 / Market Intelligence
Where the market reads at a glance.
Market Intelligence is the platform's read on the Pokémon market: catalog size, active sets, movers, sentiment, and cards meeting relative-pricing criteria.
The “Undervalued Cards” panel is careful by design. Mintlytics doesn't claim to know a card's true value — it surfaces cards trading below selected historical benchmarks (like a 90-day average) and orders them by platform-defined opportunity signals. The word is a label for a relationship to recent history, not an objective truth.
Market / Intelligence
↔ Drag2056 × 1261
Signal / Market sentiment
↔ Drag1801 × 1176
10 / The Deal System
A deal is a personal number, not a verdict.
In collectibles, what counts as a deal is subjective. Mintlytics doesn't treat a market price as a guaranteed signal — it helps a user define what a good entry price means to them.
You can watch a card, view its history, set a threshold and a target margin, and get an alert when the market reaches it. For cards with strong demand, rarity or historical significance, you might watch for temporary weakness — but the platform never implies that popularity guarantees future appreciation.
The platform doesn't decidewhat a deal is.The user sets the threshold.
11 / eBay Sniper
Stop refreshing the marketplace.
The eBay Sniper watches cards you choose and compares active eBay listings against Mintlytics' tracked market pricing. You define the margin or threshold; when listings meet your criteria, Mintlytics surfaces them for review — so you're not searching listings by hand all day.
Market / eBay Sniper
↔ Drag2056 × 1258
Alert / Target margin
↔ Drag2049 × 1260
12 / Portfolio
Your collection, read as a portfolio.
Mintlytics treats a collection as a tracked portfolio: cost basis, current value, realized and unrealized gains, performance over time, composition, cards versus sealed, and top and underperformers — built from stored price history rather than a single live lookup.
Portfolio / Performance
↔ Drag2058 × 1263
Portfolio / Composition
↔ Drag2056 × 1257
13 / Collection, Sealed & Sets
Raw, graded and sealed — in one place.
Mintlytics was built for more than individual cards. Raw, graded and sealed holdings live in one environment, with sealed products tracked separately where it matters — their pricing and behaviour differ from singles.
It's not only for flipping or speculation, either. Set-completion tracking supports collectors whose goal is simply finishing a set, with an estimated cost to complete where the data exists.
Collection / Holdings
↔ Drag2058 × 1257
Market / Sealed
↔ Drag2053 × 1265
Collection / Set tracker
↔ Drag2058 × 1260
14 / Alerts
Alerts on your terms, not a generic signal.
Users can set alerts on cards they own or cards they want to buy. A threshold can be an absolute price, a percentage increase or a percentage decrease — so Mintlytics notifies you against your own goals rather than forcing one signal onto every collector.
Alert / Price watch
↔ Drag2056 × 1257
15 / Pokémon Center Monitor
Watching the restock, so you don't have to.
A radar polls pokemoncenter.com every 2–5 minutes during peak restock windows and can alert you when queue or restock activity is detected. It runs on a controlled polling schedule through ScrapingBee — precise about the windows it watches rather than claiming constant real-time detection.
Monitor / PC queue
↔ Drag2055 × 1256
16 / PSA / Scarcity
Scarcity as context, not a promise.
Mintlytics tracks population and scarcity data for selected graded cards where it's available, so you can read population context and 30-day movement alongside pricing. Scarcity is context — the platform doesn't imply that a low population alone predicts appreciation.
Data / PSA
↔ Drag2056 × 1259
17 / AI, Grounded in the Data
AI that stays in its lane.
Mintlytics' AI features surface and interpret the platform's own data. The assessor is a card-focused view that reads Mintlytics' market context; the analyst, Mintly, is a conversational interface that answers questions about cards, sealed products, market context, portfolio data and grading — and cites platform data rather than inventing numbers.
The framing is deliberate, and stated in the product itself: informational and research-oriented, not financial advice.
AI should be grounded in the data
Mintlytics already has.
AI / Assessor
↔ Drag2057 × 1259
AI / Analyst
↔ Drag2054 × 1260
The hard part wasn'tbuilding another feature.It was keeping the system coherent.
18 / The Challenge
Scale was the feature nobody asked for.
Mintlytics became much larger than a single-feature app: catalog data, pricing, historical storage, scheduled jobs, scraping, external APIs, alerts, portfolio tracking, sealed products, AI, market intelligence, PSA, Reddit activity, eBay listings and Pokémon Center monitoring.
For a solo developer, keeping those systems understandable and maintainable became a product and engineering challenge in itself.
What it forced me to think about
- 01Boundaries between systems
- 02Scheduled jobs and cron
- 03Observability
- 04Rate limits
- 05Failure recovery
- 06Data freshness
- 07Database growth
- 08Long-running collection
19 / Validation
Not launched — matured.
Mintlytics has 15 users and remains in closed beta. It is intentionally not public yet, and the reason is data maturity.
Rather than launch immediately with shallow data, the priority is building enough internal pricing history — roughly six months of useful context — before a broader release. It's a deliberate product decision to build the foundation first.
15
Beta users
~2,400
External calls / day limit
~6 mo
Target pricing history before public
Closed
Beta
20 / What I Learned
Data you can trust is the hard part.
Mintlytics taught me how different a data-heavy product is from a traditional CRUD app — external APIs and their limits, cron jobs, scraping, scheduled polling, historical price storage, normalization, database growth, portfolio math, charting, alerts, background systems, observability, and integrating independent data sources.
It also taught a product lesson: more features don't automatically make a better product. Mintlytics grew fast, and building it forced me to think about which systems deserve to exist, which data is reliable enough to show, and when not to launch something just because it technically works.
Building the feature was easycompared with building data I could trust.
21 / What's Next
The data layer, first.
The current priority is the data layer — continuing to collect historical pricing toward roughly six months of useful history before a wider public release. Once the foundation is mature enough, the next major phase is a dedicated app, which will make alerts far more useful through push notifications rather than relying primarily on email.
- 01Grow the pricing historyKeep collecting internal data toward a usable historical foundation.
- 02A dedicated appThe next major phase, once the data is mature enough to support it.
- 03Push notificationsMake alerts land in the moment, not just by email.
22 / Why I Built It
I built it because I'm in the market it serves.
I collect Pokémon cards, and I wanted tools that could help me understand what I owned, know what it was worth, track changes over time, find cards at prices I was comfortable paying, monitor opportunities and manage sealed products.
The more I built, the more I saw the same system could help people with very different goals — completing sets, watching high-end cards, collecting sealed, buying and selling, or simply wanting better information. Mintlytics became an attempt to support all of those from one platform.
Better information.Not guaranteed outcomes.