Inspiration

I was tired of wardrobe apps that feel like spreadsheets. Uploading took forever, outfits repeated, and nothing stopped me from buying a third black knit. People don’t want a catalog they want to know what to wear this morning, and whether that thing in the shop is worth it.

Shipaton forced one UX bet: make the wardrobe feel like a stylist. From that, Matchy became a mobile-first habit get dressed, shop smarter, wear what you already own.

What it does

Matchy is a personal stylist for clothes you already have.

  • Today — one weather-aware outfit, not a grid, with a short explainable “Why this?”
  • Add many (Pro) — lay-out or several photos; auto cutout + color/category so the closet is usable fast
  • Scan — camera → Buy / Wait / Skip with a one-line reason. Free gets the verdict + outfit-count; Pro gets duplicate details and cost-per-wear
  • Style DNA — learns from wears, love/nice ratings, skips, and rejects, then biases the next look and shop check
  • Closet — cutouts on ivory, laundry, favorites, forgotten / least-worn views
  • Memories — full timeline free; Wear it again is Pro
  • Packing (Pro) — trip outfits from the real closet
  • Habit — one tap “I’ll wear this,” a small celebration, look-lock photo

How I built it

  • App: Expo (React Native) + TypeScript, NativeWind, Reanimated, FlashList, expo-image
  • State: Zustand, MMKV, TanStack Query
  • Backend: Supabase (Postgres) for accounts, closet, and scans
  • Payments: RevenueCat for Matchy Pro
  • Vision: fal.ai for background removal (cutouts); Gemini for clothing recognition (category, colors, etc.)
  • Stylist: rule-based scoring for launch (weather, what you wear, favorites, Style DNA) — explainable reasons, not LLM copy. Smarter models later if they stay trustworthy
  • Weather: Open-Meteo
  • Forms: react-hook-form + Zod
  • Also: one design-token file, Expo for builds/testers, CI lint + typecheck, Next.js for matchy.se

Challenges

  • Upload friction — closet apps die at add. Add many + cheap rembg was the unlock; single-piece add stays free.
  • Trust vs “AI” — generative outfit text felt fake. Launch reasons are explainable and human (“You already own something similar.”).
  • Cost vs magic — vision is the expensive meter. Core daily look stays free; scans, closet size, DNA, packing, Add many are gated.
  • Habit — one recommendation, tiny surprises, low-friction love/nice — not twenty options.
  • Camera production — permissions, image size, Edge quotas, rembg coalescing so a refetch doesn’t double-bill fal.

Accomplishments

  • Add many that makes a pile of clothes a closet in one sitting
  • Today loop you can accept in one tap
  • Scan that is closet-aware, not a shopping feed
  • Live on the App Store; matchy.se for the listing
  • A real brand (mascot, blush-on-ivory, voice) instead of a generic AI wrapper

What I learned

Fixing upload friction beats “more AI.” Explainability beats generative magic for trust. Freemium has to sit on cost hotspots (vision), not fake scarcity. Tokens + one design system keep the app feeling premium while you ship fast.

What’s next

Stronger duplicate signals (visual embeddings, opt-in). Optional LLM-edge explanations that stay transparent. Deeper Style DNA as the closet grows.

How to try it

Download from the App Store (or matchy.se). Add ~8–12 real pieces, open Today, accept a look, then Scan something close to what you already own.

Use these credentials: Email:[email protected] Password:Test1234

Built With

  • accessibility-first-design
  • app
  • ci-/-typescript
  • design-tokens
  • expo.io
  • fal.ai-(background-removal)
  • flashlist
  • google-gemini-edge-(vision-stubs)
  • lucide-react-native
  • mmkv
  • nativewind
  • next.js-(landing)
  • open-meteo
  • postgresql
  • react-hook-form
  • react-native
  • react-native-reanimated
  • revenuecat
  • supabase
  • tailwind-css
  • tanstack-query
  • typescript
  • vercel-(landing)
  • zod
  • zustand
Share this project:

Updates

Submission history