Skip to content

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.

RoleProduct Design / Full-Stack Development / UX / UI / Data Engineering / Product Strategy
StackNext.js / React 19 / TypeScript / Tailwind CSS / Recharts / Prisma 7 / PostgreSQL / Neon / NextAuth / Node 20 / Vercel / Vercel Cron
StatusClosed beta
TimelineActive development
LiveClosed beta

Product / Mintlytics

↔ Drag
The Mintlytics landing page: “Buy the right card. At the right price.”, a fanned stack of Pokémon cards, and a live market ticker of graded-card prices.
The public site — pricing history, market signals, deal discovery and collector tools, presented as one terminal for the Pokémon TCG market.

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
Mintlytics data layernormalize · store

Outbound / surfaces

MarketPortfolioAlertsSniperSealedPSAAICollection

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

↔ Drag
The Mintlytics dashboard: portfolio value, tracked cards, active alerts and PSA population changes, a portfolio-value chart, a collection table and a live market-pulse panel.
The dashboard — the way into the product: portfolio value, alerts and market pulse, with every module one click away in the rail.

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

Surface#0a0e1a
Signal#22d3ee
Gain#34d399
Watch#f5b74a
Risk#fb7185
Accent#8b5cf6

Signal

Ticker

CharizardBase · #4/102▲ 2.4%

Status

URPSA 10GrailBelow avg

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.

  • Framework
    Next.jsReact 19Node 20
  • Language
    TypeScript
  • Data
    Prisma 7PostgreSQL / Neon
  • UI
    Tailwind CSS v4Rechartslucide-react
  • Auth
    NextAuth
  • Hosting / ops
    VercelVercel Cronwall-clock guardsstart/end log events
  • Data sources
    TCGPro (RapidAPI)PokémonTCG.ioeBay Browse APIReddit APIScrapingBee
  • Tooling
    tsxESLintPrettier

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

TCGProeBayPokémon catalogRedditPokémon Center
  1. Rate limit / polling / cron~2,400 calls a day01
  2. Validationshape + sanity checks02
  3. Normalizationone internal shape03
  4. Prismadata layer04
  5. PostgreSQL / Neonstorage05
  6. Historical price storethe long-term foundation06

Surfaces

MarketSniperPortfolioAlertsAISealedPSA

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

↔ Drag
Market Intelligence: catalog size, an undervalued-now count, biggest mover and most active set, a market-sentiment gauge, and a list of cards trading below their 90-day average.
Market Intelligence — sentiment, movers and active sets, plus cards trading below selected historical benchmarks, ordered by platform-defined opportunity signals.

Signal / Market sentiment

↔ Drag
The Market Sentiment panel: a bull/bear gauge reading 73/100, 30-day price-trend and volume indicators, top sets by comps, and an undervalued-cards list, with a “not financial advice” note.
Market sentiment — a health read across tracked cards, carrying the platform's own “not financial advice, do your own research” note in the footer.

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

↔ Drag
The eBay Sniper: a grid of watched cards, each with its tracked market price, an alert-below threshold and a target margin, and a “scan eBay” action.
eBay Sniper — watch cards, then compare live listings against tracked pricing at a margin you set. No deals are implied; the thresholds are yours.

Alert / Target margin

↔ Drag
The Sniper alert modal: “alert me when listed 15% below market for PSA 10”, a grade selector, the tracked market value, an alert-when-below price, and a 5–50% target-margin slider.
The target-margin control — the user defines how far below tracked market a listing must fall before Mintlytics surfaces it.

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

↔ Drag
The Portfolio view: total value, total invested, all-time return, best and worst month, a portfolio-value-over-time chart, and realized and unrealized gains.
Portfolio — the collection read as a tracked portfolio, built from stored price history rather than a single live lookup.

Portfolio / Composition

↔ Drag
Portfolio Composition: a donut of value by era, a “you vs the TCG market” comparison, monthly performance, and separate sealed-portfolio performance.
Composition — where value concentrates, and how the portfolio compares to a broad market read. Sealed is tracked on its own.

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.

RawGradedSealed

Collection / Holdings

↔ Drag
My Collection: holdings across cards and sealed, cost basis, current value and total P&L, with raw / graded / sealed filters and a card detail.
Collection — raw, graded and sealed holdings in one place, with cost basis and current value per item.

Market / Sealed

↔ Drag
Sealed Products: a sealed-product catalog with market, collection, sniper and deals tabs, and booster boxes with current values.
Sealed — a catalog tracked separately from singles, because sealed pricing and behaviour differ.

Collection / Set tracker

↔ Drag
The Set Completion Tracker: sets tracked, total cards owned, most-complete set and cost to complete, with a grid of sets and per-set completion.
Set tracker — the non-investment side: owned cards by set, completion, and an estimated cost to complete where data exists.

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

↔ Drag
The Set price alert modal: notify when price rises above or drops below a value, or rises or drops a percentage from today, with email and in-app toggles.
Price watch — an alert can be an absolute price or a percentage move, on a card you own or one you want to buy.

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

↔ Drag
The Pokémon Center queue tracker: a radar “watching Pokémon Center”, armed push and email channels, a flight recorder of recent queues, and stats on queues detected.
PC queue — a radar that polls Pokémon Center every 2–5 minutes during peak restock windows and pings you when queue activity is detected.

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

↔ Drag
The PSA Tracker: a featured graded card with its PSA 10 population, a scarcity dashboard of pop counts, tiers, prices and 30-day movement, and a pop-trend section.
PSA — population and scarcity context alongside pricing, with 30-day movement. Scarcity is context, not a prediction.

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

↔ Drag
The Mintly AI Assessor: a card search that returns a structured read grounded in real market data and PSA population, with example cards to try.
AI Assessor — a card-focused read of Mintlytics' own market context. Informational and research-oriented, not financial advice.

AI / Analyst

↔ Drag
AI Analyst “Mintly”: a grounded conversational analyst with starter prompts, a list of what it can do, and a footer reading “not financial advice · informational only · grounded in platform data”.
AI Analyst — a conversational interface that cites platform data and says so when the data isn't there. The footer states the framing: informational only.

The hard part wasn'tbuilding another feature.It was keeping the system coherent.

CatalogPricingJobsScrapingAlertsAI

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.