Inspiration

Tier lists are fun, but most tools are manual and static. We wanted to build something that feels like internet culture in real time: type a topic, upload a photo, or rant into the mic, then instantly get a bold GOAT-to-TRASH ranking.
The main idea was to make Gemini 3 the actual product engine, not just a chatbot wrapper.

What it does

GOAT or TRASH is a multimodal tier-ranking app powered by Gemini 3.

  • Text input: generates a full 5-tier ranking with witty reasons.
  • Image input: detects whether the image is a menu/list or a scene/object.
  • Menu/list flow: extracts items and ranks only those items.
  • Scene/object flow: suggests related ranking topics for user selection.
  • Voice input: extracts topic + sentiment from audio rant, then builds a personalized ranking.
  • Share mode: exports the final board as a high-resolution snapshot.

How we built it

We built the app with React + TypeScript (Vite) and integrated @google/genai.

  • Used gemini-3-flash-preview for low-latency multimodal inference.
  • Defined strict JSON schemas for structured, predictable output.
  • Implemented a unified ranking pipeline that supports text, image, and audio contexts.
  • Added safety checks (isValidTopic + refusal message) for unsafe topics.
  • Rendered final results as shareable images using html-to-image.
  • Added robust UI states for loading, errors, and modal-based topic selection.

Challenges we ran into

  • Keeping responses creative while still returning valid schema-compliant JSON.
  • Designing reliable image branching (menu/list vs scene/object) across mixed-quality images.
  • Handling voice-input variability (mic permissions, noisy audio, inconsistent speech).
  • Balancing response quality and latency for a fast, demo-friendly UX.
  • Preserving personality while enforcing safety constraints.

Accomplishments that we're proud of

  • Built a complete end-to-end multimodal experience, not just text generation.
  • Achieved consistent structured outputs across different input modes.
  • Created a distinct, shareable product feel with retro UI + one-tap snapshot.
  • Connected AI reasoning directly to interaction design and user flow.
  • Delivered a functional, public demo-ready app with clear Gemini-first value.

What we learned

  • Gemini performs best when we combine strict structure with controlled creativity.
  • Schema-first design dramatically improves reliability for production-style demos.
  • Multimodal AI quality depends on product flow as much as model capability.
  • Good fallback logic and loading/error UX are critical for trust.
  • Prompt engineering works best when tied to concrete UI states and user intent.

What's next for GOAT or TRASH

  • Add user accounts, saved lists, and public leaderboard-based voting.
  • Introduce collaborative party mode for real-time group ranking.
  • Improve image understanding with richer item normalization and deduplication.
  • Add multilingual support and regional trend presets.
  • Build analytics and feedback loops to tune prompts and ranking quality over time.

Built With

  • filereader)
  • gemini-3-api-(@google/genai)
  • getusermedia
  • html-to-image
  • html5-web-apis-(mediarecorder
  • node.js
  • npm
  • react-19
  • react-router
  • typescript
  • uuid
  • vite
Share this project:

Updates