Inspiration
Small sellers and independent creators often need a full content pipeline from one product shoot: a clean catalog image, a marketplace-ready background, social video, motion, multiple output sizes, and sometimes a 360 or AR asset. Today that work is fragmented across several desktop tools and opaque AI apps. Retouchly was built to make the workflow mobile, understandable, and durable.
What it does
Retouchly turns an iPhone into an AI photo and product-content studio. A user can clean and enhance an image, isolate a product, remove or replace a background, add a studio shadow, expand a canvas, recolor a product, create channel-specific video output, animate a still image, assemble an ordered 360 spin, or start a photo-to-3D workflow. Results are archived so the user can leave the app, return later, reopen them, and download them.
The app routes each task to the provider that actually supports its intent: Cloudinary for production image/video transformations, delivery, and archival; Qwen/Wan for creative and multi-reference generation; Tripo for estimated photo-to-3D geometry; and Skia for on-device filter work.
Cloudinary Product & Video Pipeline
Cloudinary is not a single background-removal button in Retouchly—it is the production media backbone of the new Product Studio.
Product image workflows
- Native-safe React Native multipart uploads, built after browser-style FormData failed on real devices
- Product extraction and isolation
- Background removal, clean white marketplace backgrounds, and background replacement
- Studio shadow generation
- Product recoloring
- Canvas expansion and staging workflows
- Typed transformation builders so every preset produces an explicit, testable Cloudinary transformation
- Provider-aware routing that fails honestly instead of silently substituting a semantically different model
Product video workflows
- Cloudinary Product Video Studio for channel-specific outputs
- Exact custom output dimensions and delivery transformations
- Photo-motion and recolor-animation pipelines
- Six live-smoked video presets, with codec, dimensions, duration, and audio state checked on the generated files
- Playback, saving, reopening, and durable archive behavior through Albums
Mobile reliability
Cloudinary transformations can remain pending longer than a fixed client timeout. Retouchly persists the provider job and asset identifiers, resumes the same work after backgrounding or relaunch, and archives the usable result instead of starting a duplicate job. Credit settlement is output-aware and idempotent: failed, cancelled, pending, or undecodable results do not charge the user.
Before submission, 16 Cloudinary image/product transformation cases and six Cloudinary video output presets were live-smoked against a real Cloudinary account. Automated regression coverage checks routing, transformation strings, resumable job state, archive behavior, and success-only credit settlement.
How we built it
The mobile client uses Expo SDK 56, React Native 0.85, TypeScript, Expo Router, Zustand, Skia, Expo Video, Firebase, and Supabase. Cloudinary handles image/video upload, transformation, delivery, and durable media archival. Alibaba Model Studio provides Qwen image editing and Wan video generation. Tripo is integrated behind a server-side authenticated control plane so its secret never enters the Expo bundle.
Codex with GPT-5.6 was the core engineering workflow. It traced every edit path from UI preset through provider payload, compared direct and proxy transport behavior, read Cloudinary and other provider documentation, designed typed routing tables and transformation builders, implemented native multipart uploads, added resumable job state and idempotent charging, and created table-driven tests for model ordering, prompt preservation, Cloudinary transformation strings, credit settlement, and archive behavior.
GPT-5.6 is the reasoning model behind the Codex development workflow used to build and verify these features. Retouchly's production runtime media generation is powered by the providers best suited to each task; it does not disguise those providers as OpenAI runtime calls.
Challenges
- React Native multipart behavior differed from browser FormData and caused real-device upload failures.
- Similar-sounding generative edits have different semantic boundaries; silently falling back can change the user's intent.
- Longer Cloudinary transformations can return pending states, making fixed client timeouts unsafe.
- Backgrounding, relaunching, and retrying can restart jobs or charge twice without persisted IDs and idempotent settlement.
- A single photograph cannot produce a truthful photographic 360 spin, so ordered-angle 360 input is separated from estimated AI-generated 3D geometry.
Accomplishments
- Built a focused Product Studio around real seller workflows instead of a flat list of unrelated AI tools.
- Added native-safe Cloudinary image/video uploads, typed transformations, durable delivery, and resumable jobs.
- Live-smoked 16 Cloudinary image/product cases and six Product Video output presets.
- Added exact output sizing and validation for video codec, dimensions, duration, and audio state.
- Added output-aware credit settlement so unusable or incomplete results do not charge the user.
- Built preset-aware multi-provider routing with no silent semantic fallback.
- Preserved the honest boundary between ordered-angle Native 360 and estimated photo-to-3D.
Before and after July 13
Before Build Week, Retouchly was a general Expo photo editor with Qwen/Wan image generation and a basic result and credit lifecycle. After July 13, it was substantially extended with Codex and GPT-5.6 through:
- A typed, provider-aware Cloudinary mobile image pipeline
- Native multipart uploads for real-device reliability
- Product extraction, white-background, shadow, recolor, canvas-expansion, and staging workflows
- Cloudinary Product Video Studio, exact output sizing, photo motion, and recolor animation pipelines
- Persisted and resumable Cloudinary and Wan jobs with idempotent success-only charging
- Durable Cloudinary delivery and archive behavior through Albums
- Preset-aware routing, exact fallback chains, prompt-preserving direct/proxy payloads, and no silent fallback for provider-exclusive tools
- Ordered-angle Native 360 and a separate authenticated Tripo photo-to-3D workflow
- Table-driven tests for routing, Cloudinary transformations, prompts, job resumption, archives, and credit settlement
What we learned
The hardest part of a production AI editor is not adding another model. It is matching each user intent to a provider capability, keeping the operation durable through a mobile lifecycle, and communicating uncertainty without pretending that a successful HTTP response guarantees a good visual result. Codex helped turn Cloudinary documentation, provider boundaries, and repeated device feedback into routing invariants, tests, and safer product language.
What's next
- Complete device smoke tests for photo-to-3D GLB/USDZ generation and Quick Look
- Add larger resumable video uploads and webhook-backed job completion
- Add visual-quality review gates for identity, label, logo, and product-count preservation
- Expand judge-safe sample projects and guided product workflows
Built With
- alibaba-model-studio
- cloudinary
- codex
- expo-router
- expo-sdk-56
- expo-video
- firebase
- gpt-5.6
- qwen
- react-native-0.85
- react-native-skia
- revenuecat
- supabase
- tripo3d
- typescript-5.9
- vitest
- wan
- zustand
Log in or sign up for Devpost to join the conversation.