Inspiration
We wanted to build something that makes fashion advice feel more personal, practical, and interactive. A lot of shopping platforms let you browse clothes, but they do not really help you understand what colors work for you, what outfits fit your style, or how a piece might look as part of a full outfit. We liked the idea of combining AI color analysis, a structured fashion catalog, and virtual styling into one experience.
The core idea behind our project was simple: upload a photo, understand your color profile, and then get outfit recommendations that are actually connected to your palette, preferences, and available products.
What it does
Our project analyzes a user’s photo to identify color-related features like undertone, contrast, and seasonal palette. From there, it uses a fashion catalog to recommend outfit pieces based on color compatibility, style vibe, fit preferences, size, and budget.
We also built support for:
- structured clothing inventory and search
- explainable outfit recommendations
- palette-based matching
- real product image support
- try-on-ready metadata for future virtual outfit generation
- voice and AI assistant support for styling interactions
The result is a fashion assistant that can move from “what colors suit me?” to “what should I actually wear?” in a much more connected way.
How we built it
We built the backend in Python using FastAPI. We used Snowflake as the main cloud database for storing product inventory, trend collections, palette data, and recommendation-related information.
For AI-powered features, we used the Gemini API in two major ways. First, for color analysis: Gemini processes the user's uploaded photo as a multimodal input and extracts undertone, contrast level, seasonal palette, recommended hex colors, and colors to avoid. Second, for garment previews: when a user selects a product, we send both the user's photo and the product image to Gemini, which composes a side-by-side visual showing how the garment relates to the user's coloring — giving a sense of how the piece would actually complement their palette before committing to a purchase. This makes the try-on experience feel grounded in the user's actual appearance rather than just showing a generic product photo. We use Nano Banana 2 through vertex api on the google cloud platform to do prompt engineering with a chat model, combined with our media pipe to get accurate proportions to then feed that combined with our image of a person to the generative image model creating a truly indistinguishable image of our person trying on any garment.
For the styling assistant, we built a conversational Tailor agent powered by Gemini on the backend, grounded in the live Snowflake product inventory so every recommendation it makes refers to real, in-stock items. What makes the Tailor feel like more than a chatbot is ElevenLabs: every response is synthesized into natural-sounding voice audio using the eleven_multilingual_v2 model, so the experience of asking your stylist a question and hearing a confident, warm voice answer back feels genuinely interactive. Users can ask things like "what should I wear to a dinner date?" or "does this jacket work for my season?" and get a spoken, personalized answer.
Our fashion catalog was built from Kaggle datasets, which we cleaned, transformed, and mapped into our own inventory format. We also upgraded the product image pipeline by switching from low-resolution product images to higher-quality versions while preserving the same product IDs and URLs.
On the recommendation side, we built logic that combines:
- user size preferences
- fit preferences
- style vibes
- category preferences
- seasonal palette matching
- preferred and avoided colors
- budget constraints
We also added a normalization layer so Gemini's color analysis output can be translated into backend-friendly recommendation data. That means the AI can return things like undertone, contrast, season, hex colors, and avoid colors, and the backend can still turn that into product matches and outfit suggestions.
Challenges we ran into
One of the biggest challenges was bridging the gap between AI output and structured product matching. Gemini can return rich color-analysis information, but a recommendation system needs more than just a nice description. We had to normalize that output into something the backend could use consistently, especially for matching seasonal color profiles and converting hex colors into usable clothing recommendations.
Another challenge was image quality. Our first dataset had very small product images, so when we displayed them in larger UI contexts they looked blurry and pixelated. We solved that by switching to a larger image dataset and replacing the served product images with higher-resolution versions that still matched the same catalog product IDs.
We also had to think carefully about what should be handled by AI and what should be handled by the backend. Instead of letting AI make every decision directly, we used it where it adds the most value, such as color analysis and styling intelligence, while keeping recommendations explainable and structured in the backend.
It was a challenge to deploy this on Digitalocean as it was a new software that we were not used to.
Creating the pipeline for all of the different features was a bit of a challenge to synchronize. All of the features not only use Gemini but they also integrate a different version of Gemini as well as have a different place in the over all pipelines.
What we learned
We learned a lot about designing systems where AI is only one part of the pipeline instead of the entire product. One of the biggest lessons was that strong user experiences come from combining AI outputs with good backend structure, not just prompting a model and hoping for the best.
We also learned how important data quality is. Even with strong recommendation logic, low-quality images or inconsistent metadata can make the overall product feel weaker. Improving those details made a huge difference.
Finally, we learned how much value there is in explainability. It was not enough for the app to recommend an outfit. It had to explain why that outfit matched the user, whether because of season, color palette, fit, or style preference. That made the project feel much more real and much more useful.
What's next
We’d like to expand the persistent user profile system so the app can remember liked colors, rejected outfits, style history, and shopping behavior over time. We also want to improve the virtual try-on pipeline by using cleaner garment assets and deeper integration with generated outfit previews.
Longer term, we see this as a step toward a more intelligent personal styling experience: one that understands both what suits you visually and what you actually want to wear.
Log in or sign up for Devpost to join the conversation.