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:
- Visual Thought Signature — Examines stitching patterns, hardware, fabric weave
- Taxonomy Analysis — Identifies brand, era, category, rarity tier
- Market Delta — Estimates current resale value from comparable sales
- 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 latency —
thinkingLevel: highproduces 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 +
responseMimeTypemakes 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

Log in or sign up for Devpost to join the conversation.