Per-product pipeline: for each product, Claude first reviews the actual artwork image and writes an art-director analysis of its essence (elements, palette, light, open space), then writes 2 variant(s) from what it sees (change the count in ⚙ Settings), and that product's renders start immediately while the next product is being written. Machine checks run on every result; safe to stop and resume any time — nothing already written is touched, rewrites keep the old version in History. Want more style options? Raise the variant count in ⚙ Settings and press ⚡ again — products below the new count get topped up with extra variants from different scene elements, keeping everything you have.
One image per variant, rendered with img2img on the product's own store artwork (the portrait stays untouched — only the name is added) with the test name (Clara / Michael). 6 render in parallel; failures are logged and can be retried; safe to stop and resume. Re-renders keep the old image in History.
🎨 Claude's artwork analysis
keys: 1…9 choose variant (← A · → B) · ↓ reject · space next · click image to zoom
Models & rendering
Changes save to the app and apply to the very next write / render — no redeploy needed.
Tick as many models as you want — every ticked model writes the number of name prompts you choose, all of them running in parallel on the same brief (e.g. Claude + GPT + Qwen × 2 each = 6 outputs per product; up to 12 slots total). Every prompt is rendered through fal, so you get 6 outputs to compare — each colour-framed and labelled by the model that wrote it: CLAUDE 1-2 GPT 1-2 QWEN 1-2. Switch it off to write with a single model — much cheaper for a full 158-product run. If one model errors, the others still land and the row shows which one failed.
The key for the chosen provider must exist as a Cloudflare secret (Settings → Variables and secrets, then redeploy): Claude → ANTHROPIC_API_KEY · ChatGPT → GPT_API (or OPENAI_API_KEY) · Qwen → QWEN_API (or DASHSCOPE_API_KEY). All models see the artwork image (vision) and follow the same rules and checks.
Applies to prompts written from now on. Products that already have prompts keep their current variants until you press ↻ regenerate on them. More variants = more Claude + render cost per product.
Status legend & how it works
| 🔴 MISSING PROMPTS | Not started — no name prompts written yet (fresh product, or you deleted its data). Press ⚡ WRITE + GENERATE. |
| 🔴 ERROR · flagged | Claude's prompts failed the machine checks twice. Press 🎨 REGEN or ⚡ to retry with a fresh attempt. |
| 🟡 NEEDS IMAGES | Prompts exist, some renders are missing or failed. ⚡ WRITE + GENERATE renders only what's missing. |
| 🔵 RENDERING… | Working right now — the row updates live when each image lands. |
| 🟠 TO REVIEW | Everything is rendered — compare the variants and ⬆ push the winner (or reject). |
| 🟢 READY | You decided — a winner is pushed (or the product is rejected). It moves to the READY section and is included in the export. |
Model panel: when it's on, each product gets a set from every model — 1–4 prompts each from
Claude, GPT and Qwen (so 3–12 per product), written in parallel and all rendered through your chosen fal model. Every output carries its model's colour frame and badge
(CLAUDE 1-2 GPT 1-2
QWEN 1-2), so you can see which AI wrote what. Products written before the panel was
switched on keep their old variants until you press 🎨 REGEN on them.
Never-repeat memory: every variant you delete, reject, or replace with
🎨 REGEN is remembered per product and shown to Claude as a banned list — future writes must take a completely
different creative direction. This memory survives deletes and even the full reset, so discarded styles never come back.
Placement rule: the name always renders ABOVE the child, in the top part of the artwork — enforced when prompts
are written and again at render time.
⚠ Danger zone
Erases all prompts, renders, choices, pending jobs and history from the app so you can start completely fresh (for example after upgrading the prompt engine). Your products and these settings are kept. This cannot be undone.