Back to Home

Graded

A community-driven price index for PAL retro collectors that reframes your collection as a portfolio priced by the community itself.

Visit Website
Graded.
graded@terminal:~$
Graded dashboard showing portfolio NAV, unrealized P/L and top movers

Project Overview

Graded is an in-house product that solves a real problem in the European market: PriceCharting — the de-facto reference — is US-biased, updates sporadically, and ignores the reality of the PAL market where most transactions happen on Wallapop, Vinted, and local fairs.

The platform reframes retro collecting as an asset class: your collection stops being a toy drawer and becomes a portfolio. Every transaction a collector reports refines the price index for the entire network.

While the network bootstraps, the index is seeded with temporary Wallapop and Vinted feeds so the terminal never feels empty. As users report real transactions, seeded data decays out.

Under the hood: NestJS backend on PostgreSQL with Prisma, automatic enrichment via IGDB + Twitch OAuth, 34 REST endpoints, 13 models with cascade and unique constraints, and 50+ platforms mapped. React 18 + Vite frontend with Tailwind and shadcn/ui.

Technical Challenges & Solutions

Challenge: Unifying titles and platforms with canonical identification across a fragmented ecosystem (regional variants, reprints, compilations).

Solution: I integrated the IGDB API via Twitch OAuth to automatically enrich every item and built a manual review queue for ambiguous cases. The result: a canonical 50+ platform map that makes prices comparable across users.

Challenge: Avoiding an empty terminal during network bootstrap without compromising the integrity of the community index long-term.

Solution: I designed a seeded-data system with temporary Wallapop and Vinted feeds that decay automatically as users report real transactions. Community signal always takes precedence over seed data.

Challenge: Making the index resistant to erroneous or malicious reports without turning the product into a moderated forum.

Solution: The index is computed with median (not mean) and filters by a minimum N of transactions before publishing a price. Outlier reports are statistically isolated without active human moderation.

Project Details

Client

In-house product

Visit Website

gradedhub.com

Timeline

6 months

My Role

Founder & Lead Developer

Technologies Used

NestJSTypeScriptPostgreSQLPrismaReact 18ViteTailwindshadcn/uiIGDB APITwitch OAuthJWTRailwayNetlify

Key Features

Inventory — Portfolio of record

CSV import from PriceCharting, batch-add, per-item cost basis, and region tags.

Dashboard — P/L at a glance

NAV, unrealized gain, platform distribution, and top movers 30D.

Sales — Realized trades

Multi-item lots, fees, net profit. Wallapop and Vinted aware.

Lots — Group & price

Bundle items for sale and pre-compute blended price vs. index.

IGDB Match — Canonical titles

Automatic enrichment, manual review queue, and 50+ platform map.

Community Pricing — The index is social

Collectors report sales and bids. Each report sharpens the median price for the entire network.

Results & Impact

50+

Platforms mapped via IGDB

34

REST endpoints across 6 NestJS modules

13

Prisma models with constraints

Product Thesis

Your collection is not a toy drawer. It is a portfolio.

Graded // Product Thesis

Interested in a similar solution?

I can help you build a custom e-learning platform tailored to your specific educational needs, with all the features that made FireMD Academy successful.