
The idea
The bet was simple: e-commerce brands need more product and fashion content than they can afford to shoot manually. I tried to turn that into a small SaaS-style tool where a user could upload a model image and a garment image, generate try-on output, make short AI video variations, and save results into a gallery.
It did not become a business. The useful part was learning what breaks when an AI media idea moves from "cool demo" to "actual workflow."
What I built
The app was a Flask project with user auth, a SQLite database, and several generation paths:
- Virtual try-on jobs through the
fashn/tryonmodel on Fal. - Image-to-video jobs through a Kling endpoint.
- A user-owned gallery for generated try-ons, videos, and UGC clips.
- Socket.IO rooms for job status updates.
- A UGC composer that could merge an avatar/template video with a product video and optional caption text.

Implementation detail
The central pattern was job-first: save a database record, submit the generation request, then let the webhook update the job and gallery later.
new_job = TryOnJob(
model_image_url=model_url,
garment_image_url=garment_url,
category=category,
status="SUBMITTED",
config=config,
)
db.session.add(new_job)
db.session.commit()
handler = rate_limited_api_call(
fal_client.submit,
"fashn/tryon",
arguments={
"model_image": model_url,
"garment_image": garment_url,
"category": category,
**config,
},
webhook_url=webhook_url,
)
The UGC path used FFmpeg-style processing through Python subprocess calls: trim the uploaded product video, scale it to match the template, optionally burn in a caption, concatenate the clips, and extract a thumbnail.

Why it failed
The core value proposition was too broad. It mixed virtual try-on, AI video, UGC management, subscriptions, and gallery behavior before any one user workflow was sharp enough.
Technically, async generation also made the product surface harder than expected: upload validation, temporary files, webhook reliability, user ownership, generated asset expiry, and model quality variance all mattered more than the landing page implied.
What stuck
This was a good early lesson in AI product scope. The model call was the easy part. The actual product was the surrounding system: job state, fallbacks, ownership, previews, cleanup, and a UI that made failures understandable.