# From Competitor Ad to Your Live Ad in One Run: A Workflow Walkthrough

> A real run, logged -- including both quality checks it failed and why.
- **Author**: Marxx
- **Published**: 2026-10-07
- **Category**: Production
- **URL**: https://marxx.ai/posts/competitor-ad-to-live-ad-walkthrough

---

Most "AI ad workflow" articles describe a process nobody ran. This one is a log. One real competitor ad went in, two real assets came out, a real quality check failed both of them, and the whole thing cost 12 credits. The failures are in here too, because they are the part you actually learn from.

The claim being tested is narrow: can a rival's ad be decoded, countered, generated and shipped inside one run, without the usual week of briefing and revisions in between.

## The input: one rival ad, read properly

The run starts with an ad that is already working for someone else. This one belongs to Motion, it has been live 32 days, and the brand is running two near-identical copies of it.

<div>
<img src="https://marx-ad-assets.s3.amazonaws.com/ads/101486688686771/1620027456339423/a3cff1ed.jpg" alt="The rival ad used as input: a Motion static reading &quot;Don&#39;t read this report&quot;" style="width:100%;max-width:600px;height:auto;display:block;margin:32px auto;border:1px solid #d1d2d5;border-radius:6px">
</div>

Looking at it tells you very little. Decoding it tells you what to do. Read into its sixteen attributes, it comes back like this:

| Attribute | Value |
|---|---|
| Hook text | "DON'T READ THIS REPORT" |
| Hook type | Negative |
| Problem | Struggling to create winning ads and stay competitive |
| Offer type | Bonus content -- a free benchmarks report |
| Emotion | Curiosity |
| Ad type | Headline |
| Social proof | Trusted-by claims |
| Reliability signal | Transparent data |
| Scene | Gradient light background |
| Objective | Lead |
| Audience | Performance marketers who feel their playbook is going stale |

Now the ad is a set of positions rather than a picture -- and positions can be argued with.

<div>
<img src="https://marxx.ai/media/trending-tactics.webp" alt="Marxx trending tactics view showing live ads grouped by the structure they use" style="width:100%;max-width:720px;height:auto;display:block;margin:32px auto;border:1px solid #d1d2d5;border-radius:6px">
</div>

## The decision: counter the position, don't copy the format

The instinct is to make the same ad slightly better: another bold headline, another report, another negative hook. That is how a category ends up with nine identical ads.

The decode points somewhere more useful. Motion's offer is **a report about other people's ads** -- 550,000 of them, aggregated. It is excellent, and it has a structural weakness that is visible right there in the attribute table: everything it promises is about the market in general, not about the reader's account in particular.

So the counter-position writes itself: *they analysed everyone's ads; yours are already read.* Same audience, same objective, opposite axis. That is an argument, not a format swap.

## The brief, derived rather than invented

Because the counter-position came out of the decode, the brief is almost mechanical:

- **Claim on screen in frame one** -- the hook has to be legible at thumbnail size
- **Dominant idea:** your own account, already decoded
- **Emotion:** confidence, not anxiety -- the rival already owns anxiety
- **Visual must be the same idea as the copy**, not decoration beside it
- **Brand rules:** near-black indigo ground, Outfit headline, Inter body, periwinkle accent, generous space, no people, no photography

Note what has not happened yet. Nobody has opened a design tool, and nobody has written a creative brief document. The brief is a consequence of the decode.

## The build

The canvas carries the whole chain as nodes -- research, brand and product DNA, text, image, video, voice, avatar, UGC, resize -- and the last link in it is a Publish Meta Ads node.

<div>
<img src="https://marxx.ai/media/node-library.webp" alt="The Marxx canvas node library, including research, text, image, video, audio and Publish Meta Ads nodes" style="width:100%;max-width:600px;height:auto;display:block;margin:32px auto;border:1px solid #d1d2d5;border-radius:6px">
</div>

For a static counter-ad, only a short path is needed: brand rules in, prompt out, image node, QA.

**Run one.** Model `gpt-image-2`, 4:5, 6 credits. Returned in under a minute.

<div>
<img src="https://marx-ad-assets.s3.amazonaws.com/workflow_images/24f2ea18-43ae-4e2c-bb73-2ff02faa8a01.png" alt="First generated static reading &quot;Your account, already read&quot; with green progress bars" style="width:100%;max-width:600px;height:auto;display:block;margin:32px auto;border:1px solid #d1d2d5;border-radius:6px">
</div>

Type renders cleanly, layout is right, the headline reads at thumbnail size. It looks finished. It is not.

## The quality check, which is the point of the whole exercise

The QA step scores the asset against the brief and the brand rules rather than against taste. Run one came back **65 out of 100, failed**, with four specific issues:

- Accent colour wrong -- green bars where the brand specifies periwinkle
- The progress bars are generic decoration and do not communicate the decoded-account idea
- Visual reads as a stock SaaS dashboard element, not as the counter-position
- Pink corner glow sits outside the palette

Every one of those is correct, and every one of them traces back to my prompt rather than to the model. I had asked for green bars and a pink glow while simultaneously declaring a periwinkle-only palette. The check caught a contradiction I had written myself.

**Run two**, with the revision notes folded in: periwinkle only, pink glow removed, progress bars replaced by a decode diagram where the ad is pulled apart into tagged attributes. 6 more credits.

<div>
<img src="https://marx-ad-assets.s3.amazonaws.com/workflow_images/04550ddd-c651-41bd-8b04-b3cbbc9440f4.png" alt="Second generated static with a periwinkle decode diagram and empty tag chips" style="width:100%;max-width:600px;height:auto;display:block;margin:32px auto;border:1px solid #d1d2d5;border-radius:6px">
</div>

Brand fit went up -- 60 to 80. The total score went **down**, to 45.

The reason is instructive. I had told the model to leave the tag chips empty, reasoning that unreadable text looks worse than no text. The reviewer's verdict: the empty boxes read as a wireframe placeholder, the diagram no longer explains the headline, and at thumbnail size it creates confusion rather than clarity. Brief adherence fell from 50 to 30.

So the second run fixed the brand problem and broke the communication problem, because I over-corrected on one axis without protecting the other. That is the single most common failure in creative iteration and it is usually invisible -- you simply end up with a worse ad and no idea which change caused it.

Here it took one call to see it. The fix for run three is obvious from the notes: put real attribute labels in the chips -- HOOK, OFFER, EMOTION, PROOF -- so the visual states the claim instead of gesturing at it.

## What the loop is actually for

Three observations worth more than the asset itself:

**The reviewer is scoring your brief, not just the picture.** Both failures were authored in the prompt. A loop that only critiques output would have sent me hunting for a better model.

**Separate scores beat a single verdict.** Brand fit 80 with adherence 30 is a completely different instruction from 60 and 50. One says fix the idea; the other says fix the palette. A single number would have hidden that the second run was half a success.

**Two scored attempts cost 12 credits and about four minutes.** The equivalent loop through a designer is two days, and the feedback arrives as taste rather than as a scored issue list.

## The last node

The chain ends where the ad does. The canvas's Publish Meta Ads node takes the finished creative into a campaign from the same graph that reasoned about it, so there is no handoff between the thing that decided the angle and the thing that ships it.

<div>
<img src="https://marxx.ai/media/publish-to-meta.webp" alt="A Marxx canvas graph wiring research and generation nodes through to a Meta ad" style="width:100%;max-width:720px;height:auto;display:block;margin:32px auto;border:1px solid #d1d2d5;border-radius:6px">
</div>

One honest note on this run: I stopped at the asset. The generation tools I drove here produce and review creative, and publishing is a canvas step rather than something I executed -- so treat the publish stage as documented, not as demonstrated. Everything before it in this piece happened exactly as described.

## The run, in numbers

| Step | Result |
|---|---|
| Input | One live rival ad, 32 days in market, 2 copies running |
| Decode | 16 attributes |
| Counter-position | Derived from the decode, not invented |
| Run one | 6 credits -- QA 65, failed, 4 issues |
| Run two | 6 credits -- QA 45, brand fit up, adherence down |
| Total spend | 12 credits |
| Elapsed | Under five minutes |

Two failed checks is the honest result, and it is a better advertisement for the method than a clean first pass would have been. The value is not that the machine makes a finished ad on demand. It is that the distance between "I think this is off" and "here is exactly which rule it broke and what to change" collapses to a single call -- and you can afford to be wrong twice before lunch.

**Demo: a rival ad goes in, your ad goes live, in one run.** [Book a session](https://marxx.ai/book-a-demo) and we will take a competitor ad from your own category, decode it live, build the counter-creative on the canvas, and take it through to a Meta campaign -- you keep whatever comes out.

---
- [More Production articles](https://marxx.ai/posts/category/production)
- [All articles](https://marxx.ai/posts)