Inspiration
Getting dressed every morning sounds simple, but it routinely devolves into decision fatigue. Most outfit recommendations online suggest clothes you don't own, ignore whether your favorite pants are sitting at the bottom of a laundry basket, or fail to account for local weather changes.
I wanted to build FitFlow as a privacy-focused, local-first "wardrobe OS" that solves this exact daily friction. Instead of relying purely on generic cloud styling services, FitFlow treats your physical closet as a deterministic state machine: tracking laundry availability, parsing personal aesthetic notes, and factoring in real-time climate data to algorithmically generate the right fit for the day.
How I Built It
FitFlow is designed as a hybrid architecture: combining local-first privacy with optional LLM styling capabilities.
- UI & Client Polish: Built with a dark tactical design system, an iOS-style translucent floating navigation bar, tactile haptic feedback, and custom UI audio triggers to make daily wardrobe management feel responsive and polished.
- Deterministic Laundry Engine: Keeps full state management of every clothing item ($i \in I$). An item's availability state $S(i)$ transitions through a defined state cycle:
$$S(i) \in {\text{Clean}, \text{In Wash}, \text{Drying}, \text{Dry Cleaning}}$$
If an item's state is not Clean, it is strictly excluded from the recommendation candidate pool $C$.
- Contextual Outfit Scoring Algorithm: The outfit generator scores valid combinations based on weather compatibility $W$, recent wear frequency penalization $R$, and style context flags $V$ (e.g., excluding "home-only" gear when toggled for "Heading Out"):
$$\text{Score}(\text{Outfit}) = \alpha \cdot W(i) + \beta \cdot V(i) - \gamma \cdot R(i)$$
- AI Stylist & Local Privacy: Sensitive wardrobe photos and closet metadata remain entirely on-device (stored securely using Android Keystore). Users can optionally provide a Gemini API key to trigger deep natural language style note parsing without sacrificing local data control.
- Monetization (RevenueCat): Integrated the RevenueCat SDK to handle freemium feature gating — free users get core wardrobe tracking, laundry state management, and basic outfit recommendations, while Daily Fit Pro unlocks the AI Stylist (Gemini-powered style parsing) and AI-driven Wardrobe Gap Recommendations (suggested items to fill gaps in your closet, linked out to Amazon/Myntra).
Challenges I Faced
- Managing Micro-Interactions & State: Balancing smooth UI transitions with instant state updates—such as long-press gestures to toggle laundry states—required tuning haptic feedback timing and audio cues so the app felt instantaneous without dropping frames.
- Edge-Case Filtering: Designing the algorithm to handle depleted wardrobes gracefully (e.g., when all tops in a specific weather bracket are currently in the wash) without breaking the recommendation pipeline.
What I Learned
Building FitFlow highlighted the power of combining deterministic rule engines with modern generative AI. Relying on strict state rules for constraints like laundry availability while delegating subjective tasks like style coordination to LLMs produces a much more reliable user experience than using AI alone.
Built With
- android
- android-keystore
- dark-mode
- flutter
- gemini-api
- google-gemini
- haptic
- jetpack-compose
- kotlin
- local-first
- material-ui
- openweather-api
- react-native
- revenuecat
- sqlite
Log in or sign up for Devpost to join the conversation.