DripOrSkip
An AI outfit checker and digital closet. Upload a look, get a Drip or Skip verdict with fix-it suggestions, and see daily outfits matched to your weather and style.
SpecSheet 009
- Role
- Sole developer
- Year
- 2026
- Language
- TypeScript
- Platform
- Cross-platform
- Stack
- Next.js
- React Native
- NestJS
- TypeScript
- Supabase
- pgvector
- OpenRouter
- Tailwind CSS

The problem
Deciding what to wear is a daily decision, and generic style advice ignores what is actually in your closet.
DripOrSkip rates a photo of your outfit, explains the verdict, and suggests fixes using the clothes you own, the weather and your style preferences.
The system
11 components · 13 connections · 2 request flows
A mobile app, a web app and a NestJS API share one Supabase backend. A vision model rates outfits, embeddings keep the digital closet free of duplicates, and weather, background removal, billing and push reminders plug in around them.
Play a request
- Client
- Service
- Model / AI
- Data store
- External service
- Worker
- Data / control flow
- The request
- Collapsed — open for detail
Select a component to see its role, the technology behind it and what it talks to — or play a request and watch it travel the system.
Arrow keys move between components, Home and End jump to the first and last. Enter or Space selects one; Escape clears. Plus and minus zoom, 0 fits the map.
Component reference11 components · 2 flows · as text
Components · in request order
- Client · layer 01Mobile app
- The React Native app: outfit checks, the digital closet and daily suggestions.
- TechReact Native, TypeScript
- ToAPI server (HTTPS + Supabase JWT)
- Client · layer 01Web app
- The Next.js app with the same closet and outfit-check flows, plus an admin area and a blog.
- TechNext.js 14, Tailwind CSS, Radix UI
- ToWeb API routes
- Service · layer 02API server
- Validates the Supabase JWT, loads the user's preferences and history, and runs outfit analysis, profiles, wardrobe and subscriptions for the apps.
- TechNestJS, TypeScript
- FromMobile app (HTTPS + Supabase JWT)
- ToOutfit analysis (outfit photo + context); Wardrobe embeddings (closet items); Supabase (profiles, checks, closet); Billing (subscription webhook)
- Service · layer 02Web API routes
- Next.js route handlers for outfit analysis, outfit suggestions, weekly lookbooks, checkout and webhooks.
- TechNext.js route handlers
- FromWeb app
- ToOutfit analysis (outfit photo + context); Supabase; OpenWeather (forecast); Background removal (cut-outs); Billing (checkout + webhook); Push reminders (daily-reminder route)
- Model / AI · layer 03Wardrobe embeddings
- Embeds closet items so near-duplicates such as Black T-Shirt and Black Tee can be detected semantically.
- Techtext-embedding-3-small
- FromAPI server (closet items)
- ToSupabase (vector search)
- Model / AI · layer 03Outfit analysis
- A vision-capable model rates a photo as Drip or Skip and returns feedback and fix-it suggestions.
- TechGPT-4o mini, OpenRouter
- FromAPI server (outfit photo + context); Web API routes (outfit photo + context)
- Data store · layer 04Supabase
- Postgres, auth and storage for profiles, closet items, outfit checks and wear history. pgvector backs the similarity search.
- TechPostgreSQL, pgvector, Supabase Auth
- FromAPI server (profiles, checks, closet); Web API routes; Wardrobe embeddings (vector search)
- External service · layer 04OpenWeather
- Real-time and forecast weather for daily and 7-day outfit suggestions.
- TechOpenWeather API
- FromWeb API routes (forecast)
- External service · layer 04Background removal
- Turns uploaded clothing photos into transparent cut-outs for a clean closet.
- TechRemove.bg API
- FromWeb API routes (cut-outs)
- External service · layer 04Billing
- Stripe handles web checkout and webhooks; RevenueCat webhooks keep mobile subscriptions in sync with the API.
- TechStripe, RevenueCat
- FromWeb API routes (checkout + webhook); API server (subscription webhook)
- Worker · layer 04Push reminders
- A daily scheduled job sends personalised reminders to subscribed devices.
- TechWeb Push, Vercel Cron
- FromWeb API routes (daily-reminder route)
Request flows
Outfit check (mobile)
The API loads the user's preferences and history from Supabase, asks the model for a verdict, and stores the result on the outfit check.
- Step 1: Mobile app
- Step 2: API server
- Step 3: Outfit analysis
Add a closet item
A clothing photo has its background removed before the item is saved to the closet.
- Step 1: Web app
- Step 2: Web API routes
- Step 3: Background removal
Decisions & trade-offs
4 decisions
One backend, two clients
The mobile app talks to a NestJS API, while the Next.js web app uses its own route handlers. Both sit on the same Supabase project, so a closet and its history are the same everywhere.
Deduplicate the closet with embeddings
Wardrobe items are embedded and compared with pgvector, so near-duplicates are caught by meaning rather than exact names.
Personalise every verdict
The prompt is built from the user's style personas, body type, fit and colour preferences and recent history, and the tone of the response is configurable.
Gate usage by plan
The free tier allows a few outfit checks a day; Pro removes the limit. Stripe handles web checkout and RevenueCat webhooks keep mobile subscriptions in sync.
The write-up
What it does
Outfit checks. Upload a photo and get a Drip or Skip verdict with specific suggestions to improve the look.
A digital closet. Upload and crop clothing items; backgrounds are removed automatically so the closet stays clean.
Daily suggestions. A "your outfit today" card and a 7-day lookbook, matched to the weather and the occasion.
Personalisation. An onboarding wizard captures style, body type, fit and colours, and the app tracks streaks, milestones and a Drip ratio.
Signature combinations. Save reliable four-item outfits and log wears with one tap.
Reminders. A push notification system with scheduled reminders, including nudges to wear forgotten items.
How it works
A photo goes to the API, which loads the user's preferences and history, asks a vision model for a verdict, and stores the result against the outfit check. Closet uploads pass through background removal before they are saved, and embeddings keep the closet free of near-duplicate items.
Under the hood
Next.js 14 web app and a React Native mobile app
NestJS API with Supabase JWT validation, retries with exponential backoff and request throttling
Supabase for Postgres, auth and storage, with pgvector for similarity search
GPT-4o mini through OpenRouter for analysis; OpenWeather and Remove.bg for context and cut-outs
Stripe on the web and RevenueCat webhooks for mobile subscriptions
Web Push and a daily Vercel Cron job for reminders


