Back to case studies

Own product

Graded

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

Graded collection overview
Video-game inventory in Graded
Graded sales workflow

An operable product with real inventory and data-review workflows.

The system

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 decisions

Technical Challenges & Solutions

  1. 01
    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.

  2. 02
    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.

  3. 03
    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.

Inside the product

Key Features

01

Inventory — Portfolio of record

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

02

Dashboard — P/L at a glance

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

03

Sales — Realized trades

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

04

Lots — Group & price

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

05

IGDB Match — Canonical titles

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

06

Community Pricing — The index is social

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

Technologies Used

Technology serves the system.

  • React
  • NestJS
  • PostgreSQL
  • Prisma
  • Market data

Next case

Agora

Community, competition, profile and digital economy designed as one coherent mobile experience.

Open case