Inspiration

Every founder, marketer, and designer eventually has to answer the same question: what does our market actually look like visually? The usual answer involves hours of manually opening competitor websites, screenshotting
brand imagery, and writing up notes in a doc. We wanted to make that feel more like a conversation with a sharp creative consultant — one that shows you the work in real time.

What it does

Scout is a voice-powered brand research tool. You describe a market out loud — "premium coffee DTC brands" or "minimalist skincare" — and Scout immediately searches for competitors, fetches and analyzes their brand imagery using vision AI, extracts brand positioning copy from their websites, and synthesizes the entire competitive landscape into actionable patterns and gaps.

The interface shows competitor cards populating in real time as research runs: brand images, color palettes, typography style, mood, target demographic, and a positioning summary for each. When analysis is complete, Scout delivers two outputs: Market Patterns (what the whole category looks like visually — dominant colors, common styles, the prevailing mood) and Positioning Gaps (white space a new entrant could own — specific, opinionated, and actionable).

The voice agent stays in the conversation the whole time — narrating what it's finding, asking sharpening questions, and adapting if you redirect it.

How we built it

  • Voice layer: Gemini 2.5 Flash Native Audio (Live API) for real-time speech-to-speech conversation, streamed over WebSocket between the browser and a FastAPI backend
  • Search: Tavily API for competitor discovery and brand image search
  • Vision analysis: Gemini 2.5 Flash with structured JSON output to extract color palettes, typography, mood, photography style, and demographic targeting from brand imagery
  • Text extraction: Parallel.ai for extracting brand positioning copy from competitor websites
  • Synthesis: Gemini 2.5 Flash to reason across all visual analyses and identify market patterns and positioning gaps
  • Frontend: React + TypeScript, with a live activity stream showing every research step as it happens
  • Infrastructure: Google Cloud Run, Cloud Build CI/CD, Firestore for search result caching

Challenges we ran into

Getting the voice agent and the background research pipeline to feel in sync was the hardest problem. Gemini Live operates as a streaming audio session, while the deep research (image search, vision analysis, text extraction, synthesis) runs as async background tasks that can take 20–30 seconds. Making those two timelines feel coherent — so the agent narrates naturally while analysis is still running — required careful event design and a lot of tuning of the inject queue.

We also hit Gemini Live's WebSocket stability: the service occasionally drops connections with a 1011 code, which caused a tight error loop that spammed logs and consumed resources. Debugging live streaming edge cases in production is genuinely hard.

Vision rate limiting was another real constraint — running parallel vision calls for 5 competitors simultaneously saturated the Gemini Flash quota. We throttled concurrent calls with a semaphore.

Accomplishments that we're proud of

The research pipeline runs entirely automatically after a single voice query — no follow-up tool calls from the agent, no manual triggers. From "premium skincare brands" to a full visual competitive analysis with positioning gaps takes under 45 seconds. The agent feels like a real conversation, not a query interface.

What we learned

The Gemini Live API is powerful but the streaming model requires thinking about failure modes differently than a standard request/response API. State management across a persistent audio session + async background tasks is its own design problem. And vision AI is genuinely useful for brand analysis — the structured outputs from image analysis are specific enough to actually act on.

What's next for Scout

  • Export reports (PDF / Notion)
  • Side-by-side brand comparison mode
  • Upload your own brand for positioning analysis against the market

Built With

Share this project:

Updates

Submission history