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.
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:
- OpenAI-based embeddings — powerful but paid
- Cohere's embedding model — exceeded MongoDB’s free cluster limits
-
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
- fastapi
- firebase
- gemini
- google-cloud
- huggingface
- javascript
- mongodb
- python
- rag
- react
- vector-search
- vite


Log in or sign up for Devpost to join the conversation.