SynthChoice
Simulate minds, Predict decisions.
What is SynthChoice?
Traditional conjoint analysis — the gold standard for market research — costs $15k–$50k and takes weeks. You need to recruit real people, design surveys, wait for responses. Most startups and small teams just skip it entirely.
SynthChoice does the same thing in minutes using AI-powered synthetic personas. Built at the Build India: Anthropic × Replit × Lightspeed Hackathon in February 2026.
What you can do
Competitive analysis: Test how different customer segments react to your product vs competitors. Simulate 500 tech-savvy millennials choosing between MacBook, ThinkPad, and Framework laptops.
Price sensitivity: How does a budget-conscious parent react to $999 vs $1299? Get the answer in seconds, not weeks.
Feature prioritisation: Figure out which features actually matter. Does battery life beat screen quality for remote workers?
Cross-demographic insight: See how an INTJ in Bangalore decides differently from an ESFP in New York.
How it works
- Define your experiment with alternatives (products/services) and their features
- Configure synthetic agents with personality types, locations, and traits
- Watch agents make decisions in a visual SimWorld (think Gather Town meets market research)
- Get preference shares, segment breakdowns, and the reasoning behind each choice
The SimWorld
The visual simulation makes abstract data tangible. You can literally watch an agent walk to the MacBook shop, pick it up, and leave while explaining "I chose this for the M3 chip and build quality."
We wanted agents to feel alive, not just API responses. This meant building a 2D world with procedural buildings, animated characters, and product sprites that appear on shops. Each alternative needs a pixel-art sprite — so we built a pipeline: web search for a product image, convert to base64, send to Gemini Flash to generate a 2×2 sprite sheet, then post-process to normalize colors and enforce grid alignment. Buildings appear instantly, sprites pop in as they generate. Feels like loading into a game.
Technical Challenges
Rolling window concurrency: With 100+ agents, we couldn't spawn all at once (lag) or run sequentially (too slow). We needed a rolling window where ~10 agents are active at any time. The first attempt used Promise.race() but would deadlock when the queue emptied at the wrong moment. We rewrote it as a semaphore pattern where each agent completion triggers the next spawn — agents now flow smoothly through the world.
Built almost entirely with Claude Code (Opus 4.5). Full-stack: Next.js 16, Firebase, Redux, PixiJS.