Inspiration
As a UGC creator, I kept running into the same wall: brands want to see you with their product before they send samples, but you can't shoot real content without the product. I've been designing clothes since I was a kid, so I know how much a visual changes a pitch. I wanted a way for creators to show a brand exactly what the collab could look like before the first sample ever ships, without passing AI images off as real content.
What it does
PitchFit lets UGC creators see themselves in a brand's product before they pitch it.
- Creator mode: upload a photo of yourself and a product photo, then add the product details and your niche. PitchFit uses the YouCam Clothes VTO API to put you in the product, then an AI concept agent writes 3 hooks, a 5 shot list and a short pitch email that makes your personal connection to the product clear.
- Beauty pitch: an optional toggle scans a dedicated face photo with YouCam's Skin AI and weaves your top Skin Strengths and a Shade Match line into the pitch. This makes PitchFit useful for skincare and makeup creators pitching beauty brands, not just apparel.
- Pitch board export: the try-on mock and concept are combined into a downloadable pitch board, ready to drop into an email or deck.
- Brand mode: brands upload one product and several creator photos to preview each creator with it side by side, with the same optional skin profile comparison, before deciding who gets samples.
- Built in safeguards: every image carries a "Concept Mock" watermark baked into the export, the pitch email notes that final content will be shot with the real product, every Skin AI result carries a "cosmetic analysis, not medical advice" disclaimer and nothing posts directly to social. PitchFit is for pitching, never for replacing real content.
- Auto-reframe: if a face photo fails Skin AI's framing check (face too small or off-center), PitchFit automatically crops it tighter and retries — but if the real problem is a tilted head, it doesn't blindly retry a crop that can't fix that; it tells you to lift your chin instead.
The try-on keeps the creator's original pose, which turned out to be a feature: the mock matches the shot they would actually film.
How we built it
- Next.js (App Router) + TypeScript + Tailwind for the web app, deployed on Vercel
- YouCam AI Clothes (Clothes VTO) and Skin AI APIs, called only from server API routes so the API key never reaches the browser. Each request uploads the images, creates a task and polls until the result is ready.
- An LLM concept agent [Claude/Gemini] that returns validated JSON with hooks, a shot list and a pitch email
- HTML canvas to stamp the watermark and render the exportable pitch board
- Built with Claude Code, testing each step (starting with one real VTO call) before building the UI on top of it. That same discipline of making one real API call before trusting a change is what caught every issue below.
Challenges we ran into
- A "success" response isn't proof of a good result. I extended PitchFit to route jewelry and watches to YouCam's dedicated try-on endpoints instead of sending them through Clothes VTO. The endpoints returned
task_status: "success", but in my tests the output didn't render the product correctly (a doubled necklace one time, a blank area with no product the next), even with inputs that matched the documented requirements. Rather than ship results I couldn't stand behind, I hid the option and documented the behavior. - Docs that needed live verification. Some reference pages gave differing request schemas and photo framing guidance (one section said chest up, another said full body). Testing against the live API was the only way to confirm what actually worked.
- One photo can't do two jobs. I'd been reusing the same selfie for both the try-on and the Skin AI scan, but they need different framing. The try-on wants shoulders and face, while Skin AI needs a tight, face filling headshot with a level chin. The fix wasn't smarter error messages; it was giving Skin AI its own dedicated photo upload with its own guidance.
- Knowing when to cut a feature. I built, live tested and shipped an AI aging visualization feature. Unfortunately, it didn't fit the product's core purpose so I reverted it cleanly rather than leave it half right.
- Async results: try-on tasks take time, so I needed reliable polling with timeouts, clear loading states and friendly errors.
- Time: shipping a full creator flow plus brand mode, then iterating on real failures, meant ruthless scoping throughout.
- Not every failure needs the same fix. Skin Strengths and Shade Match were failing for two different reasons: face framed too small and head tilted down. My first instinct was just a better error message for both. But only one of those is fixable by cropping; the other needs a new photo entirely. Building an auto-reframe meant separating error codes by what you can actually do about them, not just what they say, then retrying only the crop-fixable ones (up to two tighter attempts) and leaving the rest as a clear, honest "take a new photo" message.
Accomplishments that we're proud of
- Going from idea to a live, deployed product efficiently, then continuing to harden it against real world failures, not just the happy path
- Verifying actual outputs instead of trusting status codes and choosing to hide a feature rather than ship unreliable results
- Solving a real problem I face as a working UGC creator, for both apparel and beauty pitches
- Serving both sides of the deal: creators pitch with confidence and brands preview creators before committing samples
- Treating responsible AI as a core feature, not an afterthought
What we learned
- Building the API integration first and testing one real call before any UI saved hours of debugging, and kept saving time every time I touched the integration again.
- A "success" status is not the same as a correct result. Always look at the actual output.
- Constraints can become features: the fixed pose and the watermark both made the product more honest and more useful.
- Two use cases that both need "a photo of a person" usually need two different photos, not one clever crop.
- Creators and brands want AI that supports human content, not AI that replaces it.
- A good auto-fix knows when not to fix something. Retrying blindly on every error wastes API calls and hides real problems from the user. Retrying only on the subset that a crop can actually solve and telling the user in the UI when their photo was auto-cropped kept the feature honest instead of just quieter.
What's next for PitchFit
- Reliable jewelry and watch try-on as the endpoints mature, so accessory creators get the same flow
- Full makeup VTO (actual lipstick and eyeshadow try-on, not just skin analysis) so beauty creators get the same mock before you pitch experience apparel creators have
- Saved creator profiles and a pitch history
- A shareable private pitch link brands can view and respond to
- Integration with CanvOps so a pitch that lands flows straight into deliverable and payout tracking
- A brand dashboard for shortlisting creators across campaigns
Built With
- claude-code
- gemini-api
- html
- next.js
- react
- tailwind-css
- typescript
- vercel
- youcam-ai-clothes-api
- youcam-api
Log in or sign up for Devpost to join the conversation.