Inspiration

I play GeoGuessr with my friends in class all the time when lessons get slow. I wanted to build something just as easy to pick up, then realised a price-guessing game collects something valuable by accident: what people think products are worth. Companies pay a lot for consumer pricing research, and surveys are boring. A game isn't.

What it does

On the surface, Hunch is a multiplayer Price Is Right game. A host creates a room, friends join with a 6-character code, and everyone guesses the price of 10 products drawn from 8 categories, from Tech to Food and Drink. Guesses stay hidden until the host reveals the price, and points go to whoever is closest.

Underneath, it's a consumer pricing research tool:

  • Opt-in research: players can choose to share their guesses, and optionally answer "what's the most you'd pay?" before the price is revealed.
  • Company portal: each company gets its own access key and a pooled report across all games, showing median perceived price, the spread of guesses, whether shoppers over- or under-estimate prices by category, and stated maximum willingness to pay. Reports export to CSV.
  • AI analyst: companies can ask questions in plain English, like "Do people think our snacks are overpriced?", and get an answer backed by the study data.
  • Privacy by design: nothing is published until a product has at least 5 responses, companies only see aggregate numbers, and every data pull is logged.

How we built it

  • Frontend: React and Vite, with Recharts for the insight dashboards
  • Backend: Node.js API serving game rooms, scoring and research reports
  • Database: Postgres on Supabase, with its auto-generated public REST API locked out of Hunch's tables
  • AI: a tool-using Gemini agent. The model decides which analyses to run, the server runs them on the real data, and the results go back to the model until it can answer.
  • Deployment: Vercel, with every /api route sent to a single serverless function

Challenges we ran into

  • Stopping the AI from making up numbers. LLMs love confident statistics. I made the agent get every figure from a tool that calculates it in code, and its instructions forbid stating any number it hasn't looked up. If data is withheld for being too small, it has to say so instead of guessing.
  • Keeping the game fair. Actual prices and other players' guesses never leave the server until the reveal, so nobody can peek at the answer in their browser.
  • Making the research honest. A guess measures what people think something costs, not what they would buy. I had to design the reports so they don't overclaim, with separate perception and willingness-to-pay measures and a minimum sample before anything is shown.
  • Moving from local Wi-Fi to the internet. Hunch started as a local-network game and had to be migrated to Postgres and serverless hosting without breaking multiplayer.

Accomplishments that we're proud of

  • Turning a silly classroom game into something with a real business case, including a written pilot offer for cafés, beauty brands and retailers
  • An AI analyst whose numbers can be trusted because they all come from code
  • Building and deploying the full product solo: game, research pipeline, company portal and AI agent
  • A test suite that covers hidden guesses, ties, scoring, permissions and the analyst, and never touches the real database

What we learned

  • Grounding an LLM with tools is far more reliable than prompting it to "be accurate"
  • Privacy and consent are much easier to build in from day one than to bolt on later
  • Good research design matters as much as good code: what you measure, and what you can honestly claim from it
  • Testing in phases caught edge cases I'd never have thought of, like duplicate names, early reveals and players who withdraw consent mid-game

What's next for Hunch

  • Verified, dated retail prices and licensed product images in place of demo data
  • Dedicated client studies with screened participants, randomised product order and A/B tests of packaging or messaging
  • Established pricing methods like Van Westendorp and Gabor-Granger
  • A first paid pilot with a local brand
Share this project:

Updates

Submission history