Hadi Mulia

Rifter

Card scanner, collection, and deckbuilder for Riftbound.

Live · 2026 · Personal project

What it is

A social graph over Riftbound collections and decks, live at rifter.gg. The camera scanner identifies the exact printing of a card: the collector number is the printing signal, OCR on the title and rules text establishes identity, and a color-grid match only confirms. Visual similarity alone never locks a match; ambiguous reads become review candidates instead of guesses. Around it: a full card dataset ingested from Riot's own API (1,188 card images), a collection tracker with trade binders for spares and wants, a deckbuilder with import and export, daily price sync, portfolio and market views, and collector profiles you can follow, with notifications for trades, follows, and price moves.

Why I built it this way

Three opened boxes put about a thousand physical cards on the table and no way to capture them. Scanning has to feel like checkout, not data entry, or the collection stays empty and everything downstream starves. Built graph-social rather than feed-social, the Letterboxd or Discogs shape, and inside Riot's tools policy by design: no marketplace, no published or retained win rates, card art only from the Riot API.

Implementation and public artifacts

Next.js, TypeScript, Neon, Drizzle, Better Auth, OCR

rifter.gg

Published artifacts and reported outcomes have different evidential limits. How to read this portfolio's evidence.