BurgReport: Fine Wine Pricing Intelligence
A live pricing-intelligence tool that aggregates scattered market data into fast, usable benchmarks for fine-wine buyers, sommeliers, and retailers.
- Role
- AI Product Builder
- Product
- Live pricing intelligence and market benchmarking tool
- Stack
- Python, FastAPI, OpenAI web search (Tavily fallback), Supabase, Airtable, Railway
- Focus
- Low-friction user experience (UX), data normalization, and fast time-to-value
Challenge
Fine-wine pricing is scattered across sources and slow to evaluate. Buyers often have to cross-reference multiple merchant listings, inconsistent critic scores, and scattered vintage guidance just to get to a usable pricing view. That slows decision-making for collectors, sommeliers, and retailers, and increases the odds of weak pricing decisions. BurgReport was built to compress that scattered research into a single benchmark view that can be used in seconds.
Build Decisions
BurgReport acts as a specialized aggregation and pricing-reference layer for fine wine. It provides:
- Live price snapshots with average, minimum, and maximum retail pricing.
- Merchant-count visibility.
- A seen-price checker to compare an observed price against market benchmarks.
- Normalized critic consensus across major sources.
- Vintage and drinking-window context to make the pricing signal more useful.
The product
A no-login pricing terminal that compresses scattered merchant listings into one confidence-gated read. Click any frame to enlarge.
Outcome Evidence
This project was less about model development and more about live data acquisition, normalization, and fast search-to-insight UX. Key technical decisions:
- Python FastAPI backend on Railway with three routers (search, wines, vintages).
- Uses the OpenAI Responses API web-search tool (with a Tavily fallback) to fetch live pricing from public merchant listings: unvalidated estimates parsed from public web pages, not a licensed feed or Wine-Searcher integration.
- Supabase Postgres for a 24-hour cache expiry (TTL) price cache to keep response times sub-3 seconds.
- Airtable REST API for curated Grand Cru content (descriptions, producers, pairings) with a 1-hour in-memory cache.
- Nightly Railway scheduled job refreshes 34 Grand Crus across 5 vintages so the cache stays warm.
- Designed for near-instant utility with no login wall or onboarding friction.
- 24-hour Supabase cache and nightly cron keep price lookups fast and repeatable.
- Multiple source normalization reduces outlier noise before benchmark display.
- No onboarding wall: interface is optimized for immediate utility in high-intent sessions.
