We will be undergoing planned maintenance on Oct 7th 6:00AM UTC / Oct 7th 2:00AM ET

Inspiration

I wanted to build something that made organising your wardrobe genuinely enjoyable. The goal was simple: photograph your clothes once, then use them to create outfits, generate flat lays, fill gaps in your wardrobe and experiment with new styles before buying anything.

How I built it

MyDrobe is built entirely in SwiftUI using SwiftData, CloudKit, Firebase and Google Gemini.

One of my favourite implementation details is using Apple's Vision framework before making any AI request. User photos are cropped entirely on-device using VNGeneratePersonSegmentationRequest, ensuring Gemini receives a tightly cropped image of the person. This avoids an unnecessary AI request, reduces latency and cost, and significantly improves the quality and consistency of generated try-ons.

Every AI request is securely proxied through Firebase Cloud Functions, keeping API keys off-device while allowing the app to take advantage of Gemini 3.1 Flash Image (Nano Banana 2) for image generation and editing.

Challenges

The biggest challenge was image quality.

I didn't want to ship another AI app with inconsistent results, so I spent a lot of time evaluating image generation models. I eventually settled on Gemini 3.1 Flash Image (Nano Banana 2) because it delivered the best balance of quality, consistency, speed and cost, making it practical to offer high-quality image generation while keeping operating costs low.

Another challenge was making try-ons feel genuinely useful rather than gimmicky. Instead of limiting users to a single clothing item, MyDrobe lets users combine up to four wardrobe items in a single generation, making the results much closer to planning a real outfit.

Designing the wardrobe workflow also took several iterations. Every clothing item is automatically transformed into a clean catalogue-style image with its background removed and metadata generated using AI, making the wardrobe feel organised without requiring manual effort from the user.

What I learned

This project reinforced that great AI products are about much more than choosing the latest model. Careful preprocessing, thoughtful UX and knowing when to use on-device intelligence can have just as much impact as the AI model itself.

I also learned that combining traditional Apple frameworks with modern generative AI produces a much better experience than relying on AI alone. By handling person detection and cropping on-device before sending images to Gemini, MyDrobe became faster, cheaper to run and more reliable.

Perhaps the biggest lesson was that users don't really care which AI model powers an app. They care that it produces consistent, high-quality results. Every technical decision, from using Vision on-device to selecting Gemini 3.1 Flash Image, was made to achieve that goal.

Built With

Share this project:

Updates

Submission history