Inspiration
Getting dressed shouldn’t be this hard. Screenshots, saved tabs, random ads - nothing connected. You see a great outfit, but would it even work with your closet?
We want recommendations from people whose style we trust.
So we built Fitz: your wardrobe, your OOTDs, and your style community in one place.
What it does
Fitz is a fashion and outfit app built around a real closet and real behavior.
You capture an OOTD (camera or upload); we use AI segmentation (Hugging Face & OpenAI Vision) to detect individual items and suggest matches from your closet. You confirm or add new pieces, then post. New items can be saved to your closet and ranked so your “top ranked” reflects what you actually wear.
The feed isn’t just pretty pictures: each post shows a compatibility score with your closet (shared colors, vibes, categories), and post detail includes an AI insight on why a fit works. On profiles you see a style match percentage (how much your own engagement graph (likes, saves, follows, closet and post tags) points to that user) plus short reason chips (e.g. shared brands or vibes).
We’re also building a personalized shop: you enter a query (e.g. “black blazer” or “white sneakers”) and get product recommendations that are tailored to you. The twist is social: recommendations are influenced by what your friends and people you follow have liked and saved in the app, so you’re not just seeing generic results but items that fit the taste of your style circle. Product data for the shop comes from Bright Data scraping, which we use to populate a catalog that we then filter and rank using those social signals.
How we built it
We used React, Vite, and Supabase (Auth, Postgres, Storage, Edge Functions). The segmentation Edge Function tries Hugging Face’s SegFormer clothing model first for per-item masks; the client crops and uploads per-item images. Most other AI (clothing analysis, body type, pairing, daily look, shopping-query generation) runs on GPT-4o in the browser or in Edge Functions. Closet ranking uses a tier-segmented Elo system (K=64) with binary search; items compete only within their preference tier, requiring just 2-3 comparisons instead of O(n), with scores normalized via linear interpolation to prevent clustering. Style match is our own Personalized PageRank over a graph of users, posts, and tags from likes, saves, comments, follows, and closet/post metadata. SerpAPI powers Suggest in production via a Vercel serverless proxy so the key stays server-side.
The personalized shop is backed by a catalog that we populate from Bright Data-scraped product data. When you search, we combine your query with signals from your graph—e.g. which posts and items your friends have liked or saved—to rank and surface recommendations that match both the query and your community’s taste.
Challenges we ran into
BrightData web scrapers initially returned no results and did not work as expected unless via directly through the website.
Making segmentation reliable meant supporting multiple backends (Hugging Face, OpenAI, and we initially tried Replicate) and handling CORS and cold starts.
Accomplishments that we're proud of
We got the full loop working: one photo becomes a segmented OOTD, optional new closet items with ranking, and a post that shows compatibility for every viewer. Style match is driven by real behavior (no style quiz) and we wired in shopping links and suggestions, so adding items doesn’t mean leaving the app to hunt for URLs. The closet is actually used in the feed and on profiles instead of sitting in a separate tab.
What we learned
Graph-based recommendations (PPR over a heterogeneous user–post–tag graph) fit “style similarity” well and stay explainable with reason chips. Combining vision (segmentation and analysis) with structured closet and engagement data makes the feed and profile more useful than a plain photo feed. Keeping API keys in Edge Functions and serverless endpoints is a bit more setup but avoids CORS and key exposure in production.
What's next for Fitz
We want stronger discovery (filter and sort by style match and compatibility), deeper shopping integration (restock, prices, buy links from the items we already link), and more consistent use of body-type context in daily look and pairing. Longer term we’d take it to mobile so capture and “your look today” live where people actually get dressed.
Github: https://github.com/sabpdo/Treehacks-Fitz
Built With
- brightdata
- figma
- huggingface
- openai
- react
- supabase
- tailwind
- vercel
Log in or sign up for Devpost to join the conversation.