
Architflix Original
AI Outfit Recommender
A Streamlit virtual stylist that recommends outfits from your own wardrobe photos using a transparent weighted-scoring engine over color harmony, weather, skin tone, and calendar events.
Overview
AI Outfit Recommender is a Streamlit virtual-stylist app that assembles occasion- and weather-appropriate outfits from photos of your own wardrobe using a transparent, hand-written weighted-scoring engine over color harmony, weather, skin tone, and calendar context — an honest single-day portfolio build that is not deployed or benchmarked.
A Streamlit virtual stylist that recommends outfits from your own wardrobe photos using a transparent weighted-scoring engine over color harmony, weather, skin tone, and calendar events.
Built with Python, Streamlit, scikit-learn, OpenCV, NumPy, and 1 more.
AI Wardrobe Stylist ingests photos of clothes you already own and assembles complete, occasion- and weather-appropriate outfits, each with a stated reason. Instead of a black-box model, it uses a hand-written weighted-scoring engine (style, color harmony, weather, skin tone, completeness) over combinatorially generated outfits, capped and diversity-filtered so the top picks are distinct. Real computer vision (sklearn KMeans dominant-color extraction, RGB-to-name mapping, a 6-tier skin-tone color model) analyzes each item, while OpenWeatherMap and Google Calendar add live context with graceful mock/keyword fallbacks. The app is a clean modular Streamlit build with optional-import fallbacks so it runs offline and keyless. It is an honest single-day portfolio project: a Keras CNN classifier is scaffolded but unused, "feedback learning" is frequency analysis rather than a trained model, and it has not been deployed or measured.
- Weighted outfit scoring across style, color harmony, weather, skin tone, and completeness with a reason shown per recommendation
- Combinatorial outfit generation capped at 100 candidates with Jaccard-similarity diversity filtering
- KMeans dominant-color extraction over background-masked pixels with RGB-to-color-name mapping
- 6-tier skin-tone analysis with per-tone recommended and avoid color lists feeding the scorer
- OpenWeatherMap integration with temperature/condition categorization and a keyless mock-data fallback
- Google Calendar integration with keyword-based event classification, plus manual event entry
- Streamlit UI with six views: dashboard, wardrobe manager, selfie analysis, calendar setup, recommendations, and feedback/stats
- Like/dislike feedback logged to JSON with Counter-based color/style preference summaries (descriptive, not a trained model)
- Graceful optional-import fallbacks for face_recognition and webcolors so the app runs without heavy CV libraries
Every project hits walls. Here's what nearly broke AI Outfit Recommender — and how it shipped anyway.
- Ranking outfits explainably without a trained model — solved with a five-factor weighted score where each factor is a separate, inspectable function.
- Combinatorial blow-up when pairing every top/bottom/shoes/accessory/outerwear — capped candidates at 100 by random sampling, then Jaccard-filtered for diversity.
- Heavy, brittle dependencies (dlib, mediapipe, tensorflow) that break installs — wrapped optional libs in try/except with fallbacks so core features still work.
- Running with no API keys — added a mock-weather path and manual event entry so the app is demoable offline.
- Turning raw pixels into usable signal — background-masked KMeans color extraction plus heuristic leg-separation and pattern detection instead of a CNN.
Every build leaves residue. The takeaways from AI Outfit Recommender that carry forward.
- A transparent rule-based scorer can ship a believable 'AI' recommender in a day and is far easier to debug than a model you cannot train in scope.
- Advertising a CNN you never wired in undercuts trust — the working CV path (KMeans + heuristics) was the honest story worth telling.
- Optional-import fallbacks and mock data are what actually make a multi-API app runnable on someone else's machine.
- Declaring unused heavy dependencies (tensorflow, mediapipe, firebase) bloats installs and deploys for no benefit — requirements should match what runs.
- 'Feedback learning' via Counter stats looks like ML but is not; naming it accurately matters for an honest portfolio.