Inspiration

The $50B+ resale market has a trust problem. Authenticating vintage clothing costs $50-200 per item and is gatekept by a handful of experts. Meanwhile, counterfeit vintage floods Grailed, Depop, and eBay — costing buyers billions annually. We asked: what if your phone camera could do what only trained authenticators can?

## What it does

Point your camera at any thrift store find. Grail Hunter runs a 4-phase forensic analysis:

  1. Visual Thought Signature — Examines stitching patterns, hardware, fabric weave
  2. Taxonomy Analysis — Identifies brand, era, category, rarity tier
  3. Market Delta — Estimates current resale value from comparable sales
  4. Authentication Verdict — Delivers confidence score with reasoning chain and red flags

The app includes a real RN/WPL Dating Engine — FTC Registration Numbers used by actual vintage dealers to date garments. This isn't AI hallucination; it's regulatory science: year = 1959 + floor((RN - 13670) / 2635).

## How we built it

5 Gemini APIs power distinct features across the app:

| API | Model | Feature | |-----|-------|---------| | Vision + Extended Thinking | gemini-3-flash-preview | Forensic scan with thinkingLevel: high + structured JSON output | | Search Grounding | gemini-3-flash-preview | Intel tab — real-time market Q&A backed by Google Search | | Maps Grounding | gemini-2.5-flash | Map tab — discovers nearby vintage/thrift stores | | Text-to-Speech | gemini-2.5-flash-preview-tts | Audio briefings of scan results (Kore voice) | | Veo 3.1 | veo-3.1-fast-generate-preview | Cinematic product reels for social sharing |

Stack: React 19 + TypeScript (strict mode), Vite, Tailwind CSS. Zero runtime dependencies beyond React and the Gemini SDK. 77 tests across 13 files. Works fully in simulation mode without an API key.

## Challenges we ran into

  • Extended thinking latencythinkingLevel: high produces incredible forensic reasoning but takes 15-45s. We built a multi-phase HUD animation that displays forensic phase labels to keep users engaged during the wait.
  • Structured output schema design — Getting Gemini to reliably return typed JSON with confidence scores, red flag arrays, and material composition required careful schema engineering with responseMimeType: application/json.
  • Maps grounding fallback — The Maps API needs browser geolocation. We built graceful degradation to SF coordinates when permission is denied or unavailable.
  • XSS prevention — AI chat responses render as HTML for markdown formatting. We wrote a custom escapeHtml() sanitizer that runs before markdown-to-HTML conversion to prevent injection from model outputs.

## Accomplishments that we're proud of

  • RN/WPL Dating Engine — Real textile forensics, not just an AI wrapper
  • 5 distinct Gemini surfaces in one cohesive app — most entries use 1-2
  • 77 passing tests with zero TypeScript errors in strict mode
  • Simulation fallback — every API gracefully degrades when no key is set
  • Badge gamification — 6 collectible achievements that create retention loops

## What we learned

  • Extended thinking is a game-changer for structured reasoning — the forensic chains it produces are genuinely expert-level, not generic summaries.
  • Search grounding transforms a chatbot into a research analyst — the Intel tab answers market questions with cited sources, not hallucinations.
  • JSON schema + responseMimeType makes AI responses deterministic enough to drive real UI components like confidence rings and red flag cards.

## What's next

  • Batch scanning — scan entire thrift store racks and get a ranked "hunt list"
  • Price tracking — monitor items over time with search grounding for live comp data
  • Community verification — let authenticated experts confirm or challenge AI verdicts
  • Mobile app — native camera integration for faster capture

Built With

  • gemini
  • gemini3
  • geminimapsgrounding
  • geminisearchgrounding
  • geminitts
  • geminivision
  • react
  • tailwindcss
  • typescript
  • veo3.1
  • vercel
  • vite
Share this project:

Updates