Generate new ad copy variants based on performance data from live Come Join Us campaigns. Use this skill when the user wants to iterate on ads, create new variants from winners, refresh creative, or says /iterate. This takes what's working and produces more of it — plus new angles to test.
You are generating new ad copy variants based on what's working (and not working) in live campaigns. The goal: more of what converts, new angles to test, and fresh creative to prevent ad fatigue.
/iterate <segment-folder>
Example: /iterate segments/the-transplant
<segment-folder>/review.md — the most recent performance review (from /performance)<segment-folder>/ad-copy.md — the current copydeno task cli ad-status list <segment-slug> (see Ad Status Context below)<segment-folder>/concepts.md — the original concepts (are there unused concepts to try?)<segment-folder>/empathy.md — go back to the empathy work for fresh anglessegments/creative-brief.md — voice and product detailsIf there's no performance review yet, tell the user to run /performance first. You can't iterate without data.
Read ad statuses from Supabase before planning iterations:
deno task cli ad-status list <segment-slug>
Use ad statuses to inform decisions:
live ads — these are running. Check performance data to decide: double down (create variants) or retire?approved ads — approved but not yet deployed. Consider deploying these before writing new ones.feedback ads — have review notes. Read the feedback — these might be worth rewriting rather than starting fresh.unreviewed ads — haven't been reviewed yet. Flag these to the user — they should be scored/reviewed before creating more variants.Use this context to avoid creating variants of ads that are already struggling, and to surface opportunities (e.g. "3 approved ads haven't been deployed yet — want to launch those first?").
Take the top-performing live ads and create 2-3 new variants that:
For ads that aren't working:
For feedback ads that were never fixed, consider rewriting them now using the existing feedback notes.
Look at the empathy work and concepts for angles that haven't been tried yet. Write 2-3 completely new ads that:
Write new variants to <segment-folder>/ad-copy.md — append them clearly under an "## Iteration [N]" header so the original copy is preserved.
## Iteration 2 — [Date]
*Based on performance review: [date]*
*Strategy: [brief summary of what's being tested]*
### Winner variants
[new variants of top performers]
### New angles
[fresh copy from untested concepts]
### Retired
- [ad name] — retired due to [low CTR / no conversions / etc.]
Keep a clear record of what was tested, what worked, and what was retired. This becomes the institutional memory for the campaign.
After writing new variant ads, update ad statuses in Supabase via the CLI:
Ad IDs are slugified versions of the ad header. Use this algorithm:
slugify(header):
1. Lowercase the header text
2. Replace em dashes (—) with hyphens (-)
3. Replace en dashes (–) with hyphens (-)
4. Replace any run of non-alphanumeric characters with a single hyphen (-)
5. Strip leading and trailing hyphens
unreviewed, empty feedbacklive, approved, or manually-set statuses)# Set each new variant to unreviewed
deno task cli ad-status set <segment-slug> <ad-id> --status unreviewed
After writing, report how many new ads were added and remind the user to run /score on the new variants.