Fashion is more than individual garments—it is connected to music, film, art, communities, and personal identity. We wanted to build a discovery experience that understands those connections instead of reducing style to a shopping category.

StyleGraph AI was inspired by the idea that a user’s outfit image, written preferences, and cultural interests can work together to reveal meaningful fashion inspiration. The project combines visual analysis with cultural discovery so users can explore not only what matches their style, but also why it matches.

What it does

StyleGraph AI is a multimodal fashion discovery application that helps users explore their personal aesthetic.

Users can:

  • Upload an outfit image or describe their style in natural language.
  • Identify broad aesthetic similarities and an approximate dominant color palette.
  • Combine visual style with preferences such as an occasion, aesthetic, or cultural reference.
  • Discover ranked brand inspiration from a curated demo catalog.
  • Use live Qloo discovery to connect artists, films, brands, and other cultural references with fashion brands.
  • Like or reject recommendations to adjust rankings during the current session.
  • See how recommendations were generated and whether they came from demo data or live Qloo discovery.

The system is designed as an inspiration tool, not a product marketplace. It does not invent prices, inventory, review counts, or unsupported affinity scores.

How we built it

We built StyleGraph AI as a separate FastAPI backend and Streamlit frontend.

The backend uses:

  • OpenAI CLIP ViT-B/32 through OpenCLIP for image and text embeddings.
  • Pillow for secure image decoding and validation.
  • NumPy and scikit-learn for image processing and lightweight color analysis.
  • Pydantic for request and response validation.
  • HTTPX for asynchronous Qloo API requests.
  • A deterministic recommendation ranker that combines visual similarity, text similarity, and session feedback.

For an uploaded image, the application validates the file type, size, dimensions, and image contents before inference. The image is transformed into an embedding and compared with broad style descriptions using cosine similarity. Text-only preferences are evaluated in the same embedding space, allowing image-based and language-based discovery to use a consistent representation.

The recommendation score can be understood as a weighted combination of the available signals:

$$ S = w_v V + w_t T + w_f F $$

where (V) represents visual similarity, (T) represents text similarity, and (F) represents session feedback. The weights and available signals depend on whether the user provides an image, text preferences, or both.

The app supports two modes:

  • Demo mode: Uses a clearly labeled curated catalog and requires no credentials.
  • Live mode: Resolves a cultural reference through Qloo and requests brand entities from Qloo Insights.

The frontend never receives the Qloo API key. Live requests are handled by the backend, and errors are surfaced clearly instead of silently falling back to demo results.

Challenges we ran into

One challenge was combining different kinds of input without implying more precision than the model can provide. CLIP similarity is useful for broad aesthetic matching, but it is not a calibrated probability and should not be presented as an exact identification system. We therefore focused the output on broad style categories, approximate color information, and transparent explanations.

Another challenge was designing a reliable live integration with Qloo. Entity resolution, API permissions, supported entity types, and response formats all needed careful handling. We made the Qloo integration explicit and kept demo mode available so the application remains usable without an API key.

We also had to consider practical deployment constraints. CLIP model weights are downloaded lazily, CPU inference can be slow, and free hosting environments may have limited memory. To address this, the app validates uploads, avoids storing user images, loads the model only when needed, and provides readiness information through the API.

Finally, recommendations needed to remain understandable. Rather than hiding everything behind an opaque score, the application exposes recommendation provenance, available signals, and the effect of user feedback.

Accomplishments that we're proud of

  • Built a complete end-to-end multimodal fashion discovery experience.
  • Connected image understanding, natural-language preferences, and cultural references in one workflow.
  • Added a demo mode that works without external credentials.
  • Integrated live Qloo brand discovery while keeping credentials secure on the backend.
  • Designed transparent recommendations with clear provenance and limitations.
  • Added input validation for file size, image type, image dimensions, and corrupted uploads.
  • Created a feedback loop that lets users like or reject recommendations during a session.
  • Kept the architecture modular so the vision, ranking, API, and Qloo services can evolve independently.

What we learned

We learned that a strong AI product needs more than a model. The surrounding experience—input validation, explanation, error handling, privacy, fallback behavior, and deployment design—is just as important as the embedding model itself.

We also learned that multimodal systems are most useful when their limitations are made visible. Broad similarity can support exploration and inspiration, but it should not be presented as objective truth. Clear language around confidence, provenance, and data sources helps users understand what the system is actually doing.

Working with cultural discovery also reinforced the importance of separating inspiration from commerce. A brand recommendation is not the same as a product listing, and the application should not manufacture details that were not returned by the source.

What's next for StyleGraph AI

Our next steps include:

  • Improving the visual style taxonomy with more nuanced aesthetics and substyles.
  • Adding richer explanations for why a recommendation matches a user’s inputs.
  • Supporting persistent user profiles and long-term preference learning with explicit consent.
  • Expanding cultural discovery beyond brands while preserving source transparency.
  • Improving performance through model caching, batching, and optimized inference.
  • Adding more evaluation data to measure recommendation quality and reduce bias.
  • Publishing a live deployment with verified Qloo access and a production-ready frontend experience.

Built With

Share this project:

Updates

Submission history