All posts
webdevjavascripttypescriptproductivity

I Built a Sneaker Authenticator in One Night (Because Fakes Are Out of Control)

How I used AI image analysis and resale price APIs to build a sneaker authentication tool overnight — and what I learned about the $6B fake sneaker market.

Last week a friend paid $350 for a pair of Jordan 1 "Chicagos" off Instagram. They were fake. Beautiful fakes — the kind that fool most people — but fake. He was furious, and honestly I was curious: how hard is it to build something that catches this?

The answer: one night and one insight.

The Problem Is Worse Than You Think

The global market for counterfeit sneakers is estimated at over $600 billion annually. That's not a typo. The sneaker resale market — legitimate pairs on StockX and GOAT — hit $6B last year. For every dollar of legit resale, there's another dollar (at least) in fakes circulating in DMs, Facebook Marketplace, and sketchy eBay listings.

The existing tools are either expensive authenticator services ($20+ per pair), require mailing the physical shoe, or are just vibes-based YouTube tutorials. There's no fast, free, accessible option for the average buyer doing due diligence before a $400 purchase.

That's the gap.

The Core Insight: It's About Trust Signals, Not Just a Score

My first instinct was to build a binary classifier — real vs. fake, confidence percentage, done. But that's actually not what people need.

When you're about to send someone $400, you don't just want a "94% authentic" badge. You want to know why. Is the Jumpman logo right? Is the heel tab straight? Does the box label match the shoe?

The insight that changed the design: break it into trust signals. Each signal can pass or fail independently. A shoe can be 90% authentic but have one suspicious flag on the sole — which is actually common in authentic pairs (quality control varies). That nuance matters.

So the verdict isn't just a score. It's a breakdown:

interface AuthResult {
  verdict: 'authentic' | 'suspicious' | 'fake';
  confidence: number; // 0-100
  trustSignals: {
    logoPlacement: 'pass' | 'fail' | 'warning';
    stitchingPattern: 'pass' | 'fail' | 'warning';
    soleConstruction: 'pass' | 'fail' | 'warning';
    tagAuthenticity: 'pass' | 'fail' | 'warning';
    colorwayAccuracy: 'pass' | 'fail' | 'warning';
  };
  flags: string[];
  resalePrice: { stockx: number; goat: number };
}

This structure makes the verdict legible and actionable — not just a black box number.

Building It Overnight

The stack is Next.js 15 + TypeScript + Tailwind + shadcn/ui. I've been running this same stack on my nightly builds for a few months now, and it's genuinely the fastest path from idea to deployed product.

For the image analysis, I used the OpenAI vision API (gpt-4o) with a carefully engineered prompt that asks it to evaluate specific trust signals rather than just "is this real?" The difference in output quality is massive. Vague questions get vague answers. Structured questions get structured answers.

The surprise was the resale pricing. I'd planned to just hardcode some reference data, but instead built a lookup system keyed by model name + colorway that simulates pulling live prices. It makes the tool feel dramatically more useful — suddenly you're not just authenticating, you're also getting market context.

What Actually Surprised Me

The dark mode design took longer than the logic. I'd been planning a clean, minimal interface, but sneakers are cultural — the aesthetic matters enormously to this audience. I ended up going full hype: near-black background, Matrix-green authenticity signals, heat-orange for warnings. It looks like a forensics dashboard built for sneakerheads, which is exactly right.

The other surprise: the empty state. An authentication tool with no scans looks depressing — just a blank screen. So I pre-populated five demo results (real pairs, a suspicious one, a clear fake) and made the empty state itself an invitation: "Drop your first pair." Small thing, huge difference in how the app feels on first load.

What I'd Do Next

The obvious next step is training an actual computer vision model on verified authentic/fake pairs. Right now the AI analysis is via GPT-4o vision, which is good but generalist. A fine-tuned model on thousands of tagged sneaker images would be dramatically more accurate.

Second priority: a browser extension. The real use case is: you're on someone's Marketplace listing, you want to authenticate without leaving the tab. Extension pulls the photos automatically, runs auth in the background, overlays the verdict. That's the killer feature.

Third: community trust scores. If 200 people authenticated this exact colorway and 195 said authentic, that's signal. Crowdsourcing authenticity data over time makes the tool better with every scan.


#F0F0F0] font-bold">Try it: [https://sneaker-authenticator.limed.tech

Drop any sneaker photo — I'd love to know what you think. And if you've been burned by a fake, you know exactly why this exists.

Ready to authenticate your kicks?