The client
Club de mini is a kidswear brand that sells online. Like any online fashion store, it needs product photos for every garment. The brand wanted to turn a flat photo of a garment into a photo of a model wearing it, with the print, colours and logo unchanged.
What we built, in three stages
We started with an app inside the brand's Shopify store. A user uploaded a garment photo, picked the model's details, and got back a photo. It used Gemini image models, with a second model to fall back on and a recovery step when a request was refused.
Next we tried a custom GPT inside ChatGPT. Our engine chose the model's details and built the prompt, and ChatGPT's image tool made the picture. Two modes came out of this stage. Best Fit reads the garment and sets the scene. Random keeps what the user chose and draws everything else. The GPT could not guarantee that our exact prompt reached the image tool, so we moved generation back to our own servers.
The studio is now a complete SaaS product that any fashion business can subscribe to:
- Sign up as a merchant and invite your team.
- Capture a garment with your phone camera or upload a photo.
- Save model personas and presets, so every product in a collection uses the same look.
- Send jobs to a queue and collect the results in a gallery.
- Refine a finished image with a short instruction instead of starting again.
- Choose a plan and pay by subscription through Razorpay.
- Staff run accounts, plans and usage from a separate admin portal.

How we kept the garment intact
The garment is the product, so every prompt treats its print as fixed artwork and asks for an exact match. We test that every part of the system builds the same prompt, character for character.
We also learned that image models drop the whole prompt when it contradicts the photo. An early test drew a teenage model for a toddler sweatshirt, and the image tool ignored the prompt. Now, for clearly children's clothing, the model's age is drawn only from child ages.
Skin tone, hair, eyes and face are never guessed from the garment. Unless the merchant picks them, they are drawn at random. Simple rules catch odd combinations, such as braids on a buzz cut or visible teeth on a newborn.
How it runs
A Java and Spring Boot API handles merchants, plans, jobs and payments. A separate Python worker picks up each job, sends the garment photo and the prompt to Gemini image generation on Google Cloud Vertex AI, and retries a failed call with a growing wait. Files live in Google Cloud Storage. Sign in runs on Firebase Authentication.
Technology used
- AI
- Gemini image models ยท Google Cloud Vertex AI
- API
- Java ยท Spring Boot
- Worker
- Python
- Web apps
- React
- Data
- PostgreSQL ยท MongoDB ยท Redis
- Storage
- Google Cloud Storage
- Sign in
- Firebase Authentication
- Payments
- Razorpay
If you need product photos at catalogue scale
If every new garment means booking a model and a studio, the same approach works for you. Treat the garment as fixed, keep the model's look consistent across a collection, and let people refine a photo instead of reshooting it. Talk to us about AI product photography for your catalogue.
