Ecommerce
A creative pipeline where the machine checks the machine, and a human still decides
Two intake paths into one scoring model, generation bounded to real product photography, a second vision model inspecting every image before anyone sees it, and one human gate that nothing reaches delivery without.
Client: A direct to consumer jewellery brand
System flow and narrative
Quality control: Passed first time. Approver decision: Approve. Path: Daily collection, then Saved to a board, then Ad ingested, then Vision analysis, then Family scored, then Recreation brief, then Held on watchlist, then Variations generated, then Automated QC, then Passed first time, then Approval card, then Approved, then Animated and cut, then Delivered to Drive.
A creative pipeline where the machine checks the machine, and a human still decides: system flow
Edges: live is a thicker, full-opacity, travelling dashed line; not taken is a thinner, dimmed, solid line. Nodes: live is a thicker, full-opacity outline; not taken is a thinner, dimmed outline. Color is never the only signal.
01
Two ways in, one path after that
A scheduled run collects new competitor advertising every morning from a set of tracked brands and category searches. Separately, anyone on the client's team can save an advert to a watched board and it enters within the hour, carrying priority. That second path is the one the team uses most, because it replaces the thing they were already doing by hand. What matters is that it is the same path: the manual entry point does not get its own shortcut through the system, it gets a higher position in the same queue. Everything is deduplicated on the way in, so an advert already seen does not become a second record.
02
The family is the unit, not the advert
A vision model describes each advert first: the format, the opening hook, the visual hook, the claim, the composition, the lighting, where the product sits. Nothing creative happens at this step, it only writes down what exists. Those descriptions are then grouped into creative families, because a competitor running ten variations of one idea is a far stronger signal than ten unrelated adverts, and the family is what gets scored. The score is built from observable evidence of scaling rather than from taste: how long the adverts have run, how many variants exist, whether hooks repeat across campaigns, whether the concept has been reused across formats and markets. Images and video are ranked within their own format first, so video does not win simply because it generates more material to measure.
03
A brief that is not allowed to borrow
For a family that clears the threshold, the system writes a recreation brief: the reference concept, why it is likely working, which of the client's own products fits, and the composition, lighting, copy and call to action. Two constraints are written into the brief itself rather than left to the generation step. A fixed minimum number of elements must differ from the reference, and competitor logos, models, footage and copy never enter the output. The product is chosen only from the client's asset vault, which is the single source of product truth the system is permitted to draw on. That is what keeps a generative pipeline from inventing a piece of jewellery the brand does not sell.
04
The machine checks the machine
Generation produces a set of variations, and then a second vision call, separate from the generator, inspects each one beside the real product photograph against a fixed list: the right number of pieces, the right stone count, no broken or invented parts, correct scale and finish, natural shadows, the product not obscured by text, no trace of the competitor original. A failure is retried exactly once with the reasons injected into the prompt. A second failure flags the image for a person rather than spending more on generation, which is the part worth copying: the retry budget is bounded, and the fallback is a human rather than a loop. Both outcomes still reach the approval queue, because a flagged image is information the approver should see rather than something to hide. Three things happen around this that are easy to leave out of a generative pipeline and expensive to add later. The day's spend is checked against a cap before any of it starts, and the budget is reserved up front rather than counted afterwards, which is what keeps two runs beginning seconds apart from both reading the same stale total and overshooting together. The inspection runs before the branding composite and the upload, so a failing image never becomes a finished file that somebody has to find and remove later. And the generator is told to render no text at all, not even the brand mark, because wording a model draws itself comes back misspelt at any size and however well drawn; every word on the finished asset is composited afterwards at a measured position in the real typeface, once the image has been judged.
05
The one gate that matters
Every creative becomes a card carrying the reference, the score and its evidence, the brief, the variations and the inspection results. The approver approves, rejects, asks for a correction, or asks for a new hook. The decision is written to a permanent audit log before the system acts on it, every time, so the record survives even if the action that follows does not. A correction sends that one variation back through generation with the written feedback built into the instructions, and the refreshed image returns to the same card and is inspected again. That loop can repeat. A correction request with an empty feedback box does not run: the system stops and asks for the feedback first, because regenerating against nothing produces another guess.
06
Delivered, never published
An approved image becomes the opening frame for the video stage rather than a prompt of its own, because asking a video model to invent both the product and the motion produces a broken product. Captions, music, branding and the format renditions are rendered on top of that approved frame. Finished files land in the client's own storage under a fixed naming pattern, and the filename is the entire attribution mechanism, so a rename cannot be recovered from. The system stops there. Nothing is ever published to an ad platform by us or by the system, and that boundary is deliberate: every account, every asset and every decision stays with the client.
The branch logic, as a table.
| Condition | Then | Why |
|---|---|---|
| the morning collection run finds a new ad | Ad ingested | |
| somebody saves an ad to the watched board | Ad ingested | |
| the family clears the priority threshold | Recreation brief | |
| the family scores below the threshold and is held | Held on watchlist | |
| Quality control is Passed first time | Passed first time | the inspection finds nothing to correct |
| Quality control is Retried | Retried with reasons | the failure reasons are injected into the prompt for one more attempt |
| the retry passes, or a second failure flags it for a human editor | Approval card | |
| Approver decision is Approve | Approved | the decision is logged before the system acts on it |
| Approver decision is Request correction | Correction asked | the written feedback becomes part of the instructions |
| Approver decision is Reject | Rejected | the card closes and nothing is generated from it again |
| Approver decision is Request correction | Back to the card | the refreshed image replaces the previous one and is inspected again |
The stack.
| Layer | Tools |
|---|---|
| Competitor ad intelligence | Atria |
| Orchestration | n8n |
| Vision, briefs and image generation | OpenAI |
| Video | Kling, FFmpeg |
| Database and approval surface | Airtable |
| Delivery | Google Drive |
Safeguards.
- The approver's decision is written to a permanent audit log before the system acts on it, so the record exists even if the action that follows fails.
- Nothing reaches the approval queue without an inspection result, and nothing reaches delivery without a human approval on record.
- Generation may only place products that exist in the client's asset vault, so the model cannot invent a product the brand does not sell.
- The brief requires a fixed minimum of elements to differ from the reference, and competitor logos, models, footage and copy never enter the output.
- A failed inspection is retried once with the reasons attached, and a second failure routes the image to a person rather than spending more on generation.
- A correction request with an empty feedback box stops and asks for the feedback rather than regenerating against nothing.
- The image model is instructed to render no text of any kind, not even the brand mark, because wording a model draws itself comes back misspelt. Every word on the finished asset is composited afterwards at a measured position, after the image has been inspected.
- The day's spend is summed and checked against a cap before any generation starts, and the budget is reserved before the work begins rather than counted after it.
- When the cap is reached, the cards that would have been generated are found and reset rather than left parked half processed.
- A pause lasts until a person lifts it, and the control workflow cannot pause itself. Nothing resumes on a timer, because a workflow that quietly switched itself back on would be worse than one that stayed off, and a control that could stop itself would leave nothing able to start it again.
- Every workflow reports failures to one handler that stores what is needed to retry them, so a failure raises an alert rather than passing silently.
Before and after.
- Spotting a competitor winner
- Before: Someone scrolled competitor pages and formed an impressionAfter: Scaling evidence is scored on the family rather than on a single advert
- What counts as a signal
- Before: One striking advert could be mistaken for a working oneAfter: A concept is judged on how far it has been reused across variants, formats and markets
- Generated product
- Before: A model asked to invent a product returns one that cannot be soldAfter: Generation is bounded to photography from the asset vault
- Checking the output
- Before: A person reviewed every generated image for defectsAfter: A separate vision model inspects each one beside the real product photograph first
- A bad generation
- Before: Rework was unbounded and quietly expensiveAfter: One retry with the reasons attached, then it goes to a person
- The approval record
- Before: Approvals lived in a chat thread and were reconstructed laterAfter: Every decision is logged before the system acts on it
- A paused workflow
- Before: A pause could quietly expire and work could resume unwatchedAfter: A pause lasts until a person lifts it, and the page shows when it started
This is one delivered system, published in full. See how we build AI automation
Want this on your own stack? See our n8n automation agency page.
Start a conversation
Tell us what you’re building.
Share the essentials and we’ll reply within 4 hours with a real next step, not an auto-responder.
What happens next
- We reply within 4 hours, from a real person, not an auto-responder.
- A short scoping call to understand the goal, constraints, and timeline.
- A fixed-scope discovery sprint: a working prototype and a written estimate.
- info@irenictech.com
- Office
- Austin, TX, United States
- Hours
- Mon–Fri · Async + scheduled calls
