đź’ˇ What it does

FitCheck is a Chrome extension that lets users virtually try on clothes directly on e-commerce websites. It detects product images, adds a “Try On” button, and uses Google Gemini with a Firebase backend to generate realistic try-on previews.

Before processing, the user’s uploaded image is validated through the Prompt API, which checks whether it’s suitable and properly formatted for virtual try-on. The result appears instantly in a sleek modal where users can download or share their look — all without leaving the website.


🛠️ How we built it

FitCheck was built as a Manifest V3 Chrome extension with popup, content, and background scripts.

  • Popup: users upload avatars via file input or drag-and-drop. The Prompt API checks image suitability, then Gemini performs on-device validation (with a RAM check via chrome.system.memory). Valid avatars are stored locally.
  • Content script: auto-detects clothing pages, injects “Try On” buttons, and handles image clicks synced with the popup.
  • Background: routes messages and relays VTO/fetch requests through a proxy to bypass CORS.
  • Backend: a Firebase Cloud Function calls Gemini for virtual try-on, using detailed prompts for pose, lighting, and garment details. A Flask proxy on Cloud Run manages CORS and base64 conversions, with secrets in Google Secret Manager.
  • UI: designed with gradient pill buttons, fade/slide modals, and soft #EFBFFF accents.
  • Supports major sites like Nike, Zara, Amazon, H&M, and Adidas, with avatars and settings saved in chrome.storage.local.

⚙️ Challenges we ran into

  • Handling CORS restrictions and Manifest V3 limitations during extension development.
  • Realizing the Prompt API requires 16 GB RAM, forcing a redesign of on-device validation.
  • Deploying and debugging the proxy and VTO Cloud Functions on Cloud Run, including CORS and permission errors.
  • Coordinating team collaboration, syncing code and environments across multiple members.
  • Navigating through endless, cryptic Chrome and API errors, testing our patience and persistence.

🏆 Accomplishments that we're proud of

  • Building a working end-to-end virtual try-on inside a browser.
  • Seamlessly integrating Gemini AI, Firebase, and Chrome APIs.
  • Designing a clean, intuitive UX that feels native to e-commerce sites.
  • Achieving privacy-friendly, on-device image validation.
  • Overcoming CORS, memory, and deployment challenges under tight time pressure.

đź§  What we learned

  • How to bridge browser limitations with backend AI orchestration.
  • How to design around Manifest V3 constraints and CORS restrictions.
  • Effective collaboration across frontend, backend, and AI integration.
  • Building production-ready workflows with Gemini and Chrome extensions.

🚀 What's next for FitCheck

  • Expand beyond fashion to include accessories, glasses, and furniture.
  • Build an outfit builder for mixing and matching items from multiple retailers.
  • Add personalized recommendations using user style data and try-on history.
  • Enhance try-on realism with improved pose, lighting, and texture understanding.
  • Support more e-commerce platforms and optimize performance for lower-RAM devices.

Built With

Share this project:

Updates

Submission history