What inspired me

Choosing clothes can be exhausting — especially when trying to stay stylish without spending hours analyzing trends or scrolling through fashion blogs. I wanted to build a smart, simple AI assistant that understands what you're already wearing and helps elevate it — instantly, visually, and creatively.

RAG-inspired: combines image-based generation (Gemini) with retrieval (MongoDB Vector Search) for enhanced fashion suggestions.

What it does

Aspetto is an AI-powered stylist that analyzes your outfit photo and returns fashion advice along with visually and semantically matching items. It uses Gemini for generating advice and MongoDB Vector Search to find similar products from a curated fashion dataset. Users receive suggestions for complementary pieces, trending combinations, or missing items — all based on their own image.

How I built it

  • Gemini 1.5 Pro extracts visual features and generates structured fashion advice
  • Hugging Face Embedding (thenlper/gte-small) converts item descriptions to vectors
  • MongoDB Atlas stores a searchable collection of 44,000+ products based on the Fashion Product Images Dataset
  • MongoDB Vector Search retrieves semantically similar items based on the generated vectors
  • Python + FastAPI handles backend logic, image processing, and Gemini integration
  • React + Tailwind CSS powers the responsive frontend, including image upload and result display
  • Fully deployed using Firebase, Artifact Registry, Cloud Build, and Cloud Run

What I learned

  • Using MongoDB Vector Search for real-world semantic fashion matching

  • Structuring and embedding large-scale fashion datasets

  • Prompt engineering to guide Gemini towards visually relevant and tone-aware recommendations

Skills earned

I completed the two official MongoDB Skill Badges recommended in the resources:

  • Vector Search Fundamentals
  • RAG with MongoDB

The badges are verified on my Credly profile and reflect my focused learning during project development.

🎓 See my badges on Credly

Challenges I faced

Choosing a Gemini model that supports image input

Gemini 1.5 Pro was selected after testing options for vision-based prompting that could reliably extract structured data from photos.

Finding a suitable method for generating embeddings

The GenAI-Showcase repo (linked in hackathon resources) provided 3 options:

  1. OpenAI-based embeddings — powerful but paid
  2. Cohere's embedding model — exceeded MongoDB’s free cluster limits
  3. gte-small — an open-source model from Hugging Face that worked well and was free to use

I chose the third option for accessibility and performance.

Handling vector storage format limitations in MongoDB

According to MongoDB docs, binData with float32 is the recommended format for vector storage. I implemented this format, but later discovered it’s supported only in paid clusters (M2 and above). On the free M0 tier, it throws errors. As a workaround, I stored vectors as float arrays.

What's next

  • Support for analyzing multiple uploaded items (wardrobe overview)

  • Filters by price, season, color, or use-case (e.g. business, travel)

  • Integration with fashion retailers for one-click outfit building

Built With

Share this project:

Updates