The Map β four tasks, one status each
Everything you do lives in four tasks. Click any box on the map or any Β§ link under a step to read the full rule. Status pills: Done β = you run it Β· Learning = you run it, we check together Β· Missing rule = no rule yet, goes to the call Β· Pending = task not built yet Β· In testing = the tool part works but is still being edited to be "no-thinking" for you. Pick the status from the dropdown β saved in your browser.
The process β one line per step
AEvery day Β· ~15 min
BWeakest product Β· ADS weak β refresh
CWeakest product Β· STORE-LP weak β offer move
DNew product β NEED SCALLING β onboard β CBO
ENew tasks to build Β· support Β· supplier Β· email
New product β Scale
Handoff from the Testing dept: a product flagged NEED SCALLING β onboard β gate β launch our structure. Two sub-sections: Β§3 onboard β gate β CBO Β§1 campaign structure & launch. Map: πΊοΈ
New product β Scale β NEED SCALLING β onboard β gate β CBO
A NEED SCALLING flag starts a LEARNING phase β not a scale. Onboard the product β generate new videos + statics β test until THREE ads each pass the winner line (β₯ β¬100 Β· ROAS β₯ 2.0 in CT) β only then build the new β¬50 CBO with all 3 winners inside. Three winners rotating = ad fatigue much harder to hit.
3.1 The trigger β "Need Scalling" in the testing list
- Source: the ClickUp list
03 - Media Buyer - Product Testing. - The media buyer sets a winner's status ACTIVE β NEED SCALLING (currently e.g. DEN-047 Pflegebock, DEN-039 Zielruhe, DEN-059 ZoomMeister). That flag is the only trigger.
- Every task in NEED SCALLING = one product to onboard. The tool pulls this list live (Dashboard β π Products to onboard).
3.2 The decision β one gate, three paths
The gate decides where the ads go β to the CBO, or back into testing. Good ads + low ROAS = a funnel problem (Β§2.4), not a creative one.
Do:
- Onboard the product (Β§3.4) and build fresh creative (Β§3.5β3.6) to keep the CBO fed.
- Duplicate the winner videos into a new β¬50 CBO (Β§3.7). Originals stay running in the test campaign.
- Move the ClickUp task β IN SCALING (Β§3.8).
Do:
- Notify the team to fix the conversion rate β LP / offer / price / checkout (Β§2.4).
- Hold β the creative isn't the problem, so don't scale and don't burn new creative on it.
- Re-check once conversion is fixed; if it clears the gate β take the SCALE path.
Do:
- Onboard the product (Β§3.4) β research (Β§3.5) β new creatives to fix the weak hook / high CPC (Β§3.6).
- Launch them on the TESTING campaign β not the CBO.
- Iterate until a creative hits ROAS β₯ 2.0, then follow the SCALE path.
3.3 Real case β DEN-039 Zielruhe Tripod Shooting Rest
3.4 Onboard the product in the tool
With Tailscale connected (Β§0), open the tool at http://100.91.34.1:8100/ β you land on the Dashboard (no deep-link to a tab).
- Open π Products to onboard β it lists exactly the NEED SCALLING products (β» pulls live from ClickUp). Click the product (or + Add new product).
- Enter the Product code (digits, e.g.
15) + the Shopify URL. - Auto-fill β scaffolds name, price, proof and live Meta campaigns from Shopify + Windsor. Review it.
- Save β the product is now in the tool.
3.5 Research (Deep Research File β Creative Map)
Go to the Research tab. Order matters:
- (Optional, better results) paste the Voice-of-Customer / extract the Reddit voice bank first.
- π§ Generate Deep Research File β a 20-section research brief (background job).
- πΊοΈ Generate Creative Map β auto-starts once the deep file finishes (locked until it exists). Turns research into idea-ready angle / hook / proof banks.
3.6 Scripts β brief β assign editor β publish
Produce the first batch of videos and hand each to an editor β all inside the tool. Use the Script Generator tab (one at a time) or β‘ Fast Production (all at once, with one review gate).
- Always start from the top 3 angles. The tool auto-ranks the deck and picks the deduped top 3 (spanning β₯2 audiences, β₯1 untested). In β‘ Fast Production they're auto-selected β keep them, swap only at the review gate; in the Script Generator, click the top-3 angle cards yourself. Keep the default of 3 scripts. Each ships 3 hook variations (A / B / C) β same body, only the first 3 seconds change.
- Generate the plan, then the full script + editor brief. For each angle the tool builds the plan (keep / change per layer), then the video script β Hook A/B/C + body + CTA + captions β with an English "Editor Notes" block. That Editor Notes block is the production brief.
- Approve & Publish to ClickUp + Drive. Hit β
Approve & Publish to ClickUp + Drive. The tool creates the Drive delivery folder first, then the editor task
π¬ <code>βOr#NN-VDin the video list β carrying the script, the editor brief, the delivery-folder tree (the exact filenames the editor must produce), and a "β Ready to launch β CONFIRM (editor)" checklist. - Assign the least-busy editor. The Editor dropdown shows each editor's live open-task count (e.g. "Edgar β free β ", "Nabeel β 3 open tasks") and auto-selects the one with the fewest open tasks. Keep that pick β π Refresh live re-pulls the counts. This keeps the load balanced across the team.
- Track the task on ClickUp until it's ready. It starts at TO DO; the editor delivers the cuts into the Drive folder and ticks the CONFIRM (editor) checklist.
3.7 Launch / feed the β¬50 CBO β only when the gate is passed
- Create the scale campaign (CBO):
<code> - <Product> - Acq - (DACH) #01β budget β¬50/day, Sales Β· DACH. - Duplicate the winner ads from the test campaign (
<code> - <Product> - CT - (DACH) #01) into the CBO. The originals stay running in the test campaign. - Scale unit = any winner, video or image (Β§2.5). A winning πΌοΈ static also graduates its angle to a video (Β§2.1).
- Launch at 23:45 Berlin.
- As Β§3.6 scripts produce winning videos (ROAS β₯ 2.0), duplicate those into the same CBO to keep it fed.
3.8 Close the handoff β set the ClickUp status
3.9 Quick checklist (per graduated product)
- Task flagged NEED SCALLING in the testing list
- Scale gate checked β 3 winners found (each β₯ β¬100 Β· ROAS β₯ 2.0 in CT)? If not β notify team (good ads) or iterate on testing (weak ads); don't touch the CBO.
- Onboarded in the tool (code + URL + saved)
- Deep Research File generated
- Creative Map generated
- First 3 scripts generated (top-3 angles)
- Gate passed only: β¬50 CBO created + winner videos duplicated Test β CBO (originals stay)
- ClickUp status β IN SCALING
β DONE Worked example β DEN-059 ZoomMeister 25-75Γ a real Β§3 run Β· click to expand
A completed, real run of this whole runbook on one product β kept here as the reference example. DEN-059 was flagged NEED SCALLING (a confirmed test winner, Β§3.1), then taken through gate β onboard β research β scripts β publish β scale. Do it once and the process is yours.
1 Β· Ran the gate (Β§3.2) β its real lifetime numbers, not the flag, decided the path. (This trial ran under the old product-level gate; since 18 Aug 2026 the gate is 3 winners, each β₯ β¬100 Β· ROAS β₯ 2.0 in CT β the steps below are unchanged.)
| Our rule | DEN-059 | Verdict |
|---|---|---|
| β₯ 10 sales | 12 | PASS β |
| lifetime ROAS β₯ 2.0 | 2.73 | PASS β |
| CPC < β¬0.80 (ads good, not weak) | β¬0.47 | GOOD ADS β |
Lifetime test-campaign figures (DEN059#Test): β¬397.27 spend Β· β¬1,086 purchase value β ROAS 2.73. All rules pass β π SCALE. (Had ROAS come in below 2.0 with these good ads β π FOR THE CALL, Β§3.3.)
2 Β· Then ran it end-to-end:
- Onboard β tool β π Products to onboard β ZoomMeister β Auto-fill β Save. (Β§3.4)
- Research β Deep Research File β Creative Map. (Β§3.5)
- Scripts β top 3 angles β plan β 3 scripts (Hook A/B/C). (Β§3.6)
- Publish + editor β β
Approve & Publish β least-busy editor auto-picked β
π¬ <code>βOr#NN-VD. (Β§3.6) - Scale β gate passed β winner videos duplicated into a β¬50 CBO; originals stay testing. (Β§3.7)
- Handoff β DEN-059 task β IN SCALING. (Β§3.8)
| Reference links | |
|---|---|
| DEN-059 task | ClickUp Β· DEN-059 ZoomMeister β |
| Testing queue | 03 - Media Buyer - Product Testing β |
| The tool Β· Tailscale | http://100.91.34.1:8100/ β |
Campaign structure & launch β CT β¬20 ABO / Acq CBO β¬50
Every product runs through two campaigns: a β¬20/day ABO Test, and β only once it's confirmed β a β¬50 CBO Scale. A creative is never launched straight into the CBO.
1.1 The model β two campaigns per product
| Campaign | Purpose | Budget type | When it exists |
|---|---|---|---|
| TEST (Creative Testing) | Test every new creative here first | β¬20/day ABO β one adset per format | From day 1 of the product |
| SCALE (Acquisition / "Acq") | Run only the proven winners to scale | CBO β¬50/day | Created once, after the product is confirmed |
1.2 Naming conventions (use these exactly)
| Campaign | Naming pattern | Example |
|---|---|---|
| TEST β established | <code> - <Product> - CT - (DACH) #01 | 024 - Schutzmeister - CT - (DACH) #01 |
| TEST β new product | DEN-<code>βC001#Test - <Product> | DEN-030βC001#Test - Doppelblick |
| SCALE (Acq) | <code> - <Product> - Acq - (DACH) #01 | 024 - Schutzmeister - Acq - (DACH) #01 |
Both β¦ - CT - (DACH) #01 and DEN-β¦βC001#Test are test campaigns (the naming evolved). New products use the DEN-β¦#Test form.
1.3 Adsets inside the TEST campaign β one per format
The Test campaign holds a separate ABO adset for each format, each β¬20/day:
| Format | Adset name | Budget |
|---|---|---|
| Video | <code> - CT01 - Video | β¬20/day ABO |
| Statics | <code> - CT01 - Statics | β¬20/day ABO |
1.4 The launch flow
A) New product (unproven β Test campaign only)
- The product already has its Test campaign (
DEN-<code>βC001#Test). Do NOT create a new one β use the one that exists. - Test all new creatives there, each format in its own β¬20/day ABO adset. Never mix videos + statics in one adset.
- No Scale (Acq) campaign yet β the product isn't confirmed.
B) Product gets confirmed β build the Scale campaign
- After an internal decision that the product is confirmed, create the β¬50/day CBO named
<code> - <Product> - Acq - (DACH) #01. - Duplicate the winning test ads into this new Acq/CBO campaign.
C) Established product (both campaigns exist)
- Keep testing every new creative in the CT campaign.
- Scaling trigger: any ad that has spent > β¬50 with good KPIs β duplicate it into the Acq (Scale) campaign.
- The Acq counterpart already exists, so no new campaign β you just duplicate the winner across.
1.5 Quick reference β what to do when
| Situation | Action |
|---|---|
| New creative to test | Launch in the product's Test campaign β video in CT01 - Video, static in CT01 - Statics (each β¬20/day ABO). Never the same adset. |
| Test ad spent > β¬50 with good KPIs | Duplicate it into the Scale (Acq) CBO campaign |
| New product needs a statics test | Add a β¬20/day ABO CT01 - Statics adset inside the existing Test campaign |
| Product just confirmed (flagged NEED SCALLING) | Run the full Graduate β Scale runbook (Β§3) β β onboard β generate videos + statics β test to 3 winners β then create the β¬50 CBO Acq with all 3 inside |
| New product, need a test campaign | Don't create one β DEN-<code>βC001#Test already exists |
Weakest products β ADS / STORE-LP
Find the weakest products (7 days), see which part is weak. ADS weak β refresh: Β§4 refresh Β§5 statics. STORE-LP weak β offer move: no rule yet β open the case for the call (Β§2.4).
ADS weak β refresh creative (2 videos + 1 static)
This works at the adset level, not per ad. When an active campaign's overall KPIs fall below target, the move is not to kill or scale (that's Β§2) β it's to refresh: feed it fresh creative. Generate 2 fresh videos + 1 fresh static from the tool so the adset has new angles to find a winner. They are two separate jobs β the videos go to an editor, the static you make and launch yourself (Β§5 β).
4.1 π When to refresh β the campaign-level trigger
Look at the campaign as a whole on the 7-day window, not ad by ad β and read two signals together, the same logic the tool uses: CPC (do the ads / hooks still work?) and ROAS (is it still profitable?). A campaign is healthy while ROAS β₯ 2.0 and CPC < β¬0.80. When either slips, the fix is not to kill or scale β it's to refresh with new creative.
| Campaign 7-day read (ROAS + CPC) | State | Action |
|---|---|---|
| ROAS β₯ 2.0 and CPC < β¬0.80 | HEALTHY | Leave it β keep feeding winners (Β§3). No refresh needed. |
| ROAS 1.6 β 2.0, or CPC β¬0.80 β 0.99 | SLIPPING | Refresh (Β§4.2) β the hooks / angles are tiring; feed new ones before it drops further. |
| ROAS < 1.6, or CPC β₯ β¬0.99 | NEEDS REFRESH | Refresh now (Β§4.2) β the creative is spent: weak hook (high CPC) and/or unprofitable (ROAS under the ~1.6 break-even at 62% margin). |
4.2 πΌοΈ Refresh β generate new ads in the tool
When Β§4.1 says a campaign is below target, refresh it with a fresh batch of creative β both videos and statics. Three steps, all in the tool. You are only adding new ads β not pausing, not changing budgets.
| # | Step | Exactly what to do |
|---|---|---|
| β | Open the refresh queue | Top of Live Ads. It already lists the adsets below target, worst first, and how much creative each one takes β the click path is Β§6.7 β. |
| β‘ | The video job | Start Β· generate + review β approve the angles β publish. Each becomes a π¬ β¦βOr#NN-VD editor task on the least-busy editor. Detail: Β§3.6 β. |
| β’ | The static job | Start Β· generate statics β generate the images, check every one, send to the media buyer. Full walk-through: Β§5 β. Statics launch into the Statics adset, never the Videos one. |
Statics β generate & check
The tool writes the briefs and generates the images. Your job is to check them. AI gets one thing wrong more than anything else: it invents details β a product that does not match the real one, or a product being used in a way that is not possible. Fix the reference, generate again. Only accurate images are approved.
5.1 Generate β three clicks
- Open Script Generator β select the product.
- Go to π· Step 3 β Static briefs. The briefs are already written for you.
- Press π Generate all and wait a couple of minutes.
That is the whole generation step β no prompts to write, no layouts to choose. The next step is the one that decides whether the ad is worth launching.
5.2 Check every image before you approve it
Open each image at full size and look at it carefully. You are checking for AI errors β details the model invented that do not exist in reality. Four things, and any one of them is enough to reject the image:
| What to check | β Reject the image if you seeβ¦ |
|---|---|
| The product is accurate | Wrong shape, wrong colour, invented parts, extra buttons, distorted or melted edges, a duplicate product that does not exist, or text and logos that are not on the real product. |
| The product is used realistically | Held the wrong way round, used on the wrong body part, at an impossible angle, or doing something the product cannot actually do. A customer who owns the product notices this immediately. |
| Anatomy is correct | Six fingers, fused or deformed hands, a twisted wrist, a paw with the wrong number of toes. This is the most common AI error β always look at hands and paws. |
| The scene is possible for OUR customer | A German hunter or sport shooter would never be in that situation with the product: a pistol in a supermarket or on the street, magazines lying on a car roof in a public car park, US-flag patches, police/military gear. In Germany the pistol lives at the range and travels unloaded and locked. If the scene is illegal or foreign, the ad is not believable β and Meta may reject it too. |
| The German text is correct | Distorted letters, invented words, missing umlauts, or text that runs off the edge. |
5.3 The reference photo β where the accuracy comes from
The generator does not know your product. It copies it from the πΈ product reference, and that single choice decides whether the product comes out right. The best reference is the product on its own, on a white background β nothing else in the frame, no text, no hands, no scene. Given that, the model has one clear thing to copy. Given a lifestyle photo, it has a scene to reinterpret, and that is where invented parts and wrong colours come from.
You do not have to hunt for it. Open the photo picker on a brief and the tool does two things by itself:
| Button | What it does |
|---|---|
| πΌοΈ Import ALL landing-page images | Pulls every product image from the landing page into the picker. Runs automatically the first time a product has no reference yet β you will see it filling. |
| β Pick the best automatically | Looks at every imported photo and selects the best reference: product alone, white background, first choice. Photos are then sorted best-first, each with a short reason. |
The picked photo is marked β best Β· product on white. If the landing page has no white-background shot, the tool says so and picks the closest thing β that is your cue to look extra carefully at the result.
5.4 If an image is wrong β change the reference, maximum 3 attempts
When an image fails the check, the problem is almost always the πΈ product reference, not the prompt. Give the model a better photo to copy from and generate again.
| Attempt | What to do |
|---|---|
| 1st | Open the photo picker and choose a different reference β the next photo down the ranked list (Β§5.3) β then generate again. |
| 2nd | Still wrong β pick a different angle: a shot where the product is larger, sharper, and on the plainest background available. Generate again. |
| 3rd | Still wrong β stop, deselect that image and continue with the rest. |
Once the batch is approved, press π― To media buyer β the tool uploads the approved images and opens the launch task. Launch them into the product's Statics adset in the test campaign.
5.5 Real cases β how the decision is made
Same three questions every time: is the product right, is the person using it the way our customer would, is the German clean? One "no" = reject. Then decide how to regenerate β the fix depends on what was wrong, not just that something was wrong.
| What was wrong | What to change before you press π Regenerate |
|---|---|
| Product looks wrong (shape, colour, invented parts) | Change the πΈ product reference (Β§5.3). Keep the prompt. |
| Product looks right, but the scene / idea is impossible, illegal or foreign for a German customer | Do not re-roll. Uncheck the brief β the idea is wrong, not the render. Only if the emotional engine is worth saving: rewrite the brief's copy + πΌοΈ Image prompt for where the customer really is (range, club car park, Revier, home workbench), then generate once. The tool blocks most of these at Step 1/3 since v3.763. |
| Anatomy or German text broken, everything else fine | Just press π Regenerate (keeps this one) β pure roll of the dice, no change needed. |
| Wrong after 3 attempts | Uncheck β Selected for media buyer on that image and move on (Β§5.4). |
Case 1 Β· Schutzmeister (024) β "Ganze Tasche vs. Ein Griff"
Product itself is roughly fine, the German headline is fine. The idea kills it β "no more emptying your bag at the checkout" is a public-carry story. Our buyer is a DACH sport shooter who wears this belt 4β8 h at the range β not a cop at the supermarket. This is not a bad render to re-roll; it is an angle that must never be generated. Why:
- 1Pistol at a supermarket checkout. In Germany a civilian cannot carry a pistol in a shop β not a sport shooter, not a hunter. The pistol goes range β home, unloaded, locked. Every customer knows this in one second; the ad becomes a joke.
- 2US-flag patch on both sleeves. Reads "American police / TV". Our audience is German club shooters who explicitly do not want the tactical-wannabe look β that is the product's whole promise.
- 3Hand on the pistol grip in a public place. Weapon-in-hand in a civilian scene = Meta firearms-policy risk on top of being wrong for us.
- 4Left side makes no sense either. Ear muffs on in a car park, loaded magazines + ID + keys spread on a car roof in public, a stranger staring. That is not "without system", that is a scene no shooter has ever lived.
- 5"Ohne System" already wears a holster. The before-side contradicts the message.
- 6Headline vs. use case. "Kein Auskippen mehr am Kassenband" sells a supermarket problem for a range belt. The message must live where the product lives.
- 7Small text garbage. "STOPERK", cut-off "STA", fake German shop signs β minor on its own, but it is one more tell that the image is AI.
Daily monitor β Kill / Scale / Launch
Every live ad, every day: the rules decide. Β§2.2 decision table Β§2.5 scale Β§1.5 launch.
Daily monitor β Kill / Scale / Launch (decision table)
Read the ad's numbers, find the first row that matches in the decision table, do what it says. CPC = is the ad working? Cost/ATC + ROAS = is the funnel working?
2.0 KPI color thresholds (copied from the tool)
The exact per-KPI colour coding the tool uses. Reference only β a quick read of good / ok / bad. The decision is the Β§2.2 table.
| Metric | π’ Green | π‘ Yellow | π΄ Red | Direction |
|---|---|---|---|---|
| CTR (link) | > 1.8% | 1.2 β 1.8% | < 1.2% | higher = better |
| CPC (link) | < β¬0.68 | β¬0.68 β 0.76 | > β¬0.76 | lower = better |
| Cost/ATC | < β¬15 | β¬15 β 24 | > β¬24 | lower = better |
| ROAS | β₯ 1.9 | 1.4 β 1.9 | < 1.4 | higher = better |
π The Creatives ledger β same colours, weekly view
The Ads Check β π Creatives ledger uses the KPI colours above, so a weekly review reads like the Live Ads table. Each creative is graded on the ROAS bands: π’ STRONG (β₯1.9) Β· π‘ THIN (1.4β1.9 β iterate the angle, do not kill) Β· π΄ LOSING (<1.4) Β· β³ TOO EARLY (under β¬50 spent). Β· off is appended when the ad is no longer delivering.
ROAS 1.33 real Β· 2.18 Meta. Meta over-attributes in this account, so the badge and the number beside it always come from the same source.Pick the batch with the range selector: Last 7 days Β· This week Β· Last week Β· This month Β· Last month Β· All time. Weeks start Monday.
2.1 Format β both scale, videos carry the story
- π A winner is duplicated into the CBO whatever the format β video or image. π¬ Video: > β¬50 Β· β₯1 sale Β· ROAS > 1.5. πΌοΈ Static: β₯ β¬100 Β· ROAS β₯ 2.0 (a static needs more spend to prove it).
- πΌοΈ STATIC / IMAGE = also the angle test lab. A static that works proves the angle β besides scaling it, that angle also graduates to a video (row 6). Managing statics = keep the winning variant, kill the weak siblings.
2.2 The decision table β top to bottom, STOP at the first match
The first row that matches is your action. If no row matches β no action, leave the ad running. "fewer than 2 ATC" = 0 or 1 cart; "not converting" = ROAS < 1.0.
| # | If the ad's numbers areβ¦ | β Action |
|---|---|---|
| 0 | CPC β₯ β¬2.00 Β· ROAS 0 | KILL dead hook |
| 1 | Spend β¬5+ (under β¬30) Β· CPC > β¬1.50 | KILL broken hook |
| 2 | Spend β¬15+ (under β¬30) Β· CPC β₯ β¬0.99 Β· < 2 ATC | KILL high CPC + no carts |
| 3 | Spend β₯ β¬30 Β· < 2 ATC | KILL dead creative |
| 4 | Spend β₯ β¬60 Β· CPC β₯ β¬0.99 Β· not converting (ROAS < 1.0) | KILL weak ad + broken conversion |
| 5 | π¬ VIDEO Β· ROAS > 1.5 (β₯1 sale, β₯ β¬50) | SCALE duplicate video β CBO |
| 5b | πΌοΈ STATIC Β· ROAS β₯ 2.0 (β₯ β¬100, in CT) | SCALE duplicate image β CBO |
| 6 | πΌοΈ STATIC Β· Cost/ATC β€ β¬15 (β₯2 ATC) | π¬ MAKE THE VIDEO the angle wins β also generate a video on it |
| 7 | Spend β₯ β¬70 Β· CPC < β¬0.80 Β· Cost/ATC > β¬25 | π FOR THE CALL cheap clicks, no cart β store side, nothing to execute |
2.3 β οΈ Before you KILL β the winner & dip guards
π‘ WATCH β proven, in a dip
Same idea, measured instead of recognised. β₯ β¬100 lifetime with both the 14-day and the all-time ROAS at β₯ 2.0, while the last 7 days are under 1.5 β this is a dip, not a verdict.
024βOr#1-VD-H3 β Copy β 3d 1.15 Β· 7d 0.50 Β· 14d 3.15 Β· all-time 2.46 on β¬944 lifetime. The headline ROAS said 0.50x and the tool called it a conversion stall. But an ad that ran 3.15 over 14 days and 2.46 over its whole life has already shown it converts β it has the option to recover.- Do not kill it and do not cut its budget.
- Re-check in 14 days β longer than the other guards on purpose: judging a dip on a window shorter than the one that proved the ad is how a proven ad gets killed on noise.
- Still weak at re-check β kill it. The guard buys one recovery window, not permanent immunity.
- Both windows must be healthy. One good stretch is not a track record.
2.4 π The funnel check β a call topic, not a task
Cheap clicks, no cart (CPC < β¬0.80 Β· Cost/ATC > β¬25 Β· β₯β¬70 spent): people click and then leave before add-to-cart. The ad is doing its job β the landing page or the offer is losing the sale.
Break B β cheap carts but no sale β was removed in August 2026: this account does not have that problem, and a rule that never fires only teaches you to ignore rules.
2.5 π The scale triggers β three confidence tiers
A video earns a scale the moment, at > β¬50 spend with β₯1 real sale, it has ROAS > 1.5. A static earns it at β₯ β¬100 spend with ROAS β₯ 2.0. Cost/ATC does not gate the scale β ROAS alone decides.
β Duplicate that exact ad β video or image β into <code> - <Product> - Acq - (DACH) #01 (the CBO). The original stays running in the Test campaign. (A winning static also graduates its angle to a video β row 6 β so the story can travel further.)
Three confidence tiers β who decides
The move is always the same duplicate. What changes is how much proof you have, and therefore who makes the call.
- π WINNER β β₯ β¬100 at ROAS β₯ 2.0. The tool recommends it. Duplicate it.
- π‘ EARLY β β₯ β¬30 at ROAS β₯ 2.0. The tool recommends it only when the CBO is starving. Otherwise your call.
- βͺ VERY EARLY β under β¬30 but already selling (1+ purchase at ROAS β₯ 2.0). You decide β the tool never recommends this one.
Read the tier as confidence, not as quality. Two sales on β¬8 is promising, not proven β at that spend one refund flips the ROAS. So:
- β Use it when the CBO is starving (under 3 live ads) or the product has no proven winner yet. A weak CBO loses more to having nothing to spend on than to a copy that later fades.
- β Don't use it when the CBO already has healthy winners running β no reason to take an β¬8 bet next to a β¬250 proven ad.
- π After you copy one, watch it. It has not earned profit immunity (Β§2.3): still under ROAS 2.0 at β¬100 in the CBO β it goes through the normal Β§2.2 table like any other ad.
Where you see it: dashboard β the campaign's NEXT ACTION β the popup lists candidates under "Not recommended by the rules yet", tagged EARLY or VERY EARLY with spend, sales and ROAS on each. Click an ad name to copy its ID for Ads Manager.
2.6 The kills β only when the CREATIVE failed
- KILL Broken hook β under β¬30 (β¬5+) Β· CPC > β¬1.50 (0 historical winners ran this high).
- KILL High CPC + no carts β under β¬30 (β¬15+) Β· CPC β₯ β¬0.99 Β· < 2 ATC. The β¬15 floor means 2 carts was a fair expectation.
- KILL Dead creative β β¬30+ Β· < 2 ATC. Nobody engages.
- KILL Weak ad + broken conversion β β¬60+ Β· CPC β₯ β¬0.99 Β· not converting (ROAS < 1.0).
ποΈ Removed β π FUND IT 2026-08-21
A starved-but-converting ad (ROAS β₯ 2 lifetime on under β¬25) used to carry a π FUND IT badge telling you to "duplicate it into the CBO, or give it its own adset budget". Neither is a move you make from this table: budgets are fixed and never touched, and duplication is decided at campaign level. Repeated down the β‘ column on 19 ads at once, it was noise.
2.7 The data behind the numbers
- Cost/ATC is the funnel separator β winners median β¬8, losers median β¬24 (3Γ gap). The β¬25 line is the loser median.
- CPC does not separate winners from losers β winners β¬0.76 vs losers β¬0.87. That's why CPC never kills alone below β¬1.50.
- CTR is not used β ~1% for winners and losers alike, so it separates nothing. Context only.
New tasks to build β support Β· supplier Β· email
Not built yet. Each becomes its own task linked into Task 2 / Task 3. Content follows once the tasks exist.
Support β loop
Same defect Γ3 on a product β pause its ads Β· open a product case. Repeated question β LP / FAQ fix. PENDING
Supplier β loop
Stock cover < 15 d + lead time β no scale / pause. Shipment delay β pause the product's ads. PENDING
Email β loop
Plan ready each week β you confirm β send. PENDING
Using the tool β which buttons, in what order
Sections 1β5 are the rules. This one is the click path: what to open, what to press, and in which order. Nothing here repeats a rule β where a decision is involved it points back to the section that owns it.
How much you make β the only limit
3 videos + 3 statics per product, per week. That is the whole rule. Pick the product, look at the strip above the generator β π¬ 1/3 videos Β· πΌοΈ 0/3 statics β and make what is left. It resets on Monday by itself.
The strip turns amber and says "3 videos already made this week" when a type is full, so you see it before you spend anything.
Nothing else blocks you. There is no batch to finish, no cycle to close and nobody to ask.
6.1 Your day, in order
The same four moves every day β about 15 minutes when nothing is on fire, longer when there is creative to produce.
| # | Do this | Where Β· why |
|---|---|---|
| β | Open the Dashboard | One card per product, red first. The buttons on a card are the only things that need you today (Β§6.4). |
| β‘ | Work β‘ Needs action β kills, scales and fixes | Click the button β Live Ads opens filtered to exactly those ads. Do the work in Ads Manager (or on the page / checkout for a π§ Fix), then press β Done (Β§6.6). Rules: Β§2.2 β. None of it needs the founder's approval. |
| β’ | Work the refresh queue | Top of Live Ads. The adsets running out of creative (Β§6.7). Trigger: Β§4.1 β. |
| β£ | Leave yesterday's launches alone | Under β¬25 an ad has not been tested, only shown. Nothing to judge for ~3 days. |
6.2 Say who you are β once
The first time you open the tool on your computer it asks one question:
Pick Nita. The browser remembers it β you are never asked again, and your name shows top right (click it to switch). Everything you generate, publish, kill or mark done is recorded under that name, and every ClickUp task the tool creates remembers who launched it. Reading a page is never recorded β only actions that change something.
6.3 The menu β the exact tab names
| Tab | What it is for | You use it |
|---|---|---|
| Dashboard | One card per product with today's buttons. | Every day β start here |
| Ads Check | One product in depth, campaign by campaign. | Digging into one product |
| Research | Market + competitor research per product. | Rarely |
| Script Generator | Angles β scripts β π· static briefs β images. | Every static batch (Β§5) |
| Publisher | Send a finished script to ClickUp. | Rarely β publishing happens inside the other screens |
| Learning Log | What has been tested and what won. | Before writing new angles |
| Live Ads the working screen | Every live ad, the refresh queue, π Today. | Every day β this is where the work is |
| LP Audit | Landing-page check for a product. | When the funnel, not the creative, looks wrong |
6.4 Reading a Dashboard card
KPI colours are the same everywhere β Β§2.0 β. The CT #01 line is the test campaign on its own, separate from the scale campaign.
| Button | Do what |
|---|---|
| π΄ Kill N ads | Opens Live Ads filtered to those ads. Pause each in Ads Manager, then β Done. Hover first to read why each is flagged. |
| π Scale N ads | They won in CT (Β§2.2 β). Duplicate into the CBO β never move. |
| π New creative Β· N adsets | Those adsets are below the refresh trigger (Β§4.1 β). Click β the refresh queue. |
| β³ Creative in progress | A batch is already being made. Finish that one first. |
6.5 Live Ads β one line per ad
Pick a product at the top; every row below is one real ad from the ad account over the last 7 days. Start with the chips:
| Chip | What is in it | Today? |
|---|---|---|
| β‘ Needs action | Kill + Scale + Fix β everything that needs you today. | Yes |
| π§ Fix | Real jobs that are neither a kill nor a scale: fund a starved winner, refresh a fatiguing ad, iterate one that cannot scale, check the page, check the checkout (Β§2.2 β). Each reason says exactly what to do. | Yes |
| π For the call | Store-side findings β the ad works, the page or offer does not (Β§2.4 β). Nothing to execute in the ad account. | Read out on the call |
| π‘ Watch | The only bucket that asks for nothing today β an ad on probation, or one that already recovered. | Read, do not act |
| π Recovered | The bad stretch is already behind it; the last 3 days are back up. | Leave it alone |
| Column | What it is |
|---|---|
| β‘ Action | What the rules say about this exact ad. Click the badge for the reason. |
| Task | The ClickUp task β 94βOr#01-IM. Click to copy. Several ads share one task. |
| Ad / ad set | The real Meta ad name (94βOr#01-IM-H3) over its adset. Click the ad name to copy its ad ID β paste into Ads Manager search. |
| ROAS 3/7/14/all | Four bars: 3 days, 7, 14, all time. Dashed line = break-even 1.61. |
6.6 β Done β and π Today
The work happens in Ads Manager and on the store, where the tool cannot see your click. So every π΄ KILL, π SCALE and π§ FIX row carries a β Done button. Press it once the work is done.
| What happens | When |
|---|---|
| The row goes and the counts drop | Immediately β the list matches what you just did |
| The tool checks the ad account: a kill must read paused, a scale must show a copy in the CBO | Next daily pull β or now, if you press πΆ Pull spend |
| Confirmed β closed for good | You never see it again |
| Not confirmed after 2 days β it comes back, flagged, with what it cost since | Nothing gets quietly lost |
| A π§ Fix has no proof in the ad account, so it is taken at your word β and it expires after 7 days | If the ad still trips the same rule a week later, it comes back: the fix did not hold |
Usually the pause did not save, the duplicate failed, or the copy is still called β¦ β Copy. Fix it in Meta and press β Done again. If it genuinely is fine, dismiss β that is recorded too.
A kill sweep is a dozen ads, not one. Every actionable row has a checkbox, and the one in the header selects everything currently listed β so filter to π΄ Kill first, pause them all in Ads Manager, then tick the header box and press β Mark 12 done. One press, one record.
The selection follows the chip you are on and resets whenever the list changes, so you can never mark something you are not looking at.
The π Today strip at the top of Live Ads is the honest answer to "am I finished?"
It empties as you work. When it reads nothing outstanding β the list is clear, you are done for the day.
6.7 The refresh queue β three kinds of row
Top of Live Ads, worst ROAS first. When an adset qualifies is Β§4.1 β; this is how you work it.
| Row | Meaning | You do |
|---|---|---|
| πΌοΈ 1 static | A Statics adset β it only runs images. | Generate 1 static β Β§5 β |
| π¬ 2 videos | A Video adset β it only runs videos. | Start Β· generate + review β approve the angles β publish to an editor (Β§3.6 β) |
| π needs a winner creative | The adset is in the scale campaign. | Generate nothing. Duplicate the listed winner into it β click the ad name to copy its ID. |
After you press Start, the tool opens the right screen with a yellow brief naming the adset, and the creative launches back into that same adset β the ClickUp task carries the destination, so you do not have to remember it. That adset is then locked until the batch is live and judged.
Every situation
The cases that actually come up. Find yours, do that.
"β 3 videos for this product are already made this week"
The weekly limit. Per product you make 3 videos + 3 statics per week β nothing more, nothing to unlock. The strip above the generator shows where you are (π¬ 2/3 Β· πΌοΈ 0/3) and turns amber with the words "3 videos already made this week" before you spend anything. When a type is full the other one usually still has room, and the message says so.
It resets by itself on Monday. There is no report to write, no call to wait for and nobody to ask β if it says the week is done for that product, move to another product.
Counted when the creative is sent to ClickUp, not when the ad goes live.
"N creatives marked launched in ClickUp, but there is no such ad in the ad account"
ClickUp is the record. When a task is set to launched, the ad is supposed to exist in Meta. This line appears when the tool looked for it by name and found nothing at all β checked against every ad the account has ever had, so a paused ad still counts.
Press Show me: each creative is listed with its ClickUp status and a link to the task. One of the two sides is wrong β either it was never actually launched, or the ad was named differently from the task. Fix whichever it is.
A task still in production is never listed here, however old it is.
"Pick your name first" / "your daily Claude budget is used up"
Pick your name once per browser β every generation is recorded under it. Re-opening something you already generated is free β it does not cost a new run.
The dashboard shows a red product but no "New creative" button
Read the line under the card β it will say every live test adset is above the trigger and the loss is in ads already paused. That is the correct answer. Do the kills and scales, generate nothing.
An ad says KILL but it has a great all-time ROAS
Check the four ROAS bars. If the older windows are strong the tool does not say KILL β it says π‘ WATCH β kill if still weak: leave it running, come back in 7 days, kill it then if the recent window is still dead (Β§2.3 β). If it genuinely reads π΄ KILL, kill it.
An ad has barely spent and shows STARVED
Do not kill it. Under β¬25 it has not been tested, only shown. π STARVED WINNER already converts β give it budget. π± STARVED β HAS CARTS pulls demand β fund it in a clean adset or retire it deliberately. The usual cause is a crowded adset: 15 ads maximum.
The test adset already holds 40 ads
Clear it before generating anything. Open π΄ Kill for that product and pause what is listed, starting with ads launched 30+ days ago that never spent. New creative into a crowded adset gets no delivery.
I generated statics β which adset do they go in?
The one written on the ClickUp task, which is the adset the refresh started from (e.g. 94- CT01 - Statics). Statics never go into a Videos adset. If the Statics adset does not exist yet, create it (β¬20/day) rather than parking the images somewhere "for now".
The images come out wrong β invented parts, wrong colour
The reference is the problem, not the prompt. Pick a different reference β ideally the product alone on white β and generate again. Three attempts, then deselect that image (Β§5.4 β).
A product has no reference images at all
Nothing to do β the tool imports the whole landing page itself the first time and picks the best product shot. If the page has no clean product-only photo it says so, and that is your cue to check the results extra carefully (Β§5.3 β).
An ad gets cheap clicks but nobody adds to cart
The creative is working β that is what a cheap CPC means. The page or the offer is not. It shows as π FOR THE CALL and it is not yours to fix: do not kill the ad, do not cut it, do not rewrite the page. Note it and raise it on the call (Β§2.4 β).
A whole campaign is weak but no single ad is flagged
That is what the refresh queue is for β it works at adset level, not ad level (Β§4.1 β). If the adset is not in the queue it is fine, and the loss is elsewhere: the scale campaign, or ads already paused.
An adset in the scale campaign is losing money
It appears as π needs a winner creative with the winners listed underneath. Duplicate one in. Do not generate new creative for it. If nothing is listed, no creative has passed the graduation gate yet β the fix is upstream: get a test winner first (Β§3 β).
I killed an ad but it is still on the list
Press β Done on the row β the tool cannot see your click in Ads Manager (Β§6.6 β). For confirmation right now, press πΆ Pull spend.
Something I marked done came back "not confirmed"
The ad account disagrees. A kill is still delivering β the pause did not save. A scale has no copy in the CBO β the duplicate failed, or the copy is still named β¦ β Copy so it cannot be matched. Fix it in Meta and press β Done again, or dismiss if it really is fine.
A scale row disappeared on its own
Correct: the tool found a copy of that creative already running in the CBO, so the job is done. It clears itself whether or not anyone pressed Done.
I closed the tab in the middle of generating
Everything is saved. The refresh row shows β³ in production Β· Continue β β it reopens the batch with your generated images restored.
The numbers do not match Ads Manager
Small differences are normal β Meta keeps re-attributing for a day or two. If a banner says the account total does not reconcile, treat kill and scale calls as unsafe until it is fixed and fix the naming that caused it (renamed ads stop reconciling β Β§6.5 β). Off ads are excluded here, so an adset total will be lower than an Ads Manager view that includes paused ads.
I am not sure whether to kill something
Read the reason, the four ROAS bars, and the spend. Under β¬25 β too early, always. Over β¬100 with a strong 14-day or all-time number β watch, do not kill. Otherwise follow the reason on the row β it is the decision, not a suggestion. When you genuinely cannot tell, leave it one more day: a wrong kill costs a winner, a day of waiting costs a few euros.
Nita's Week
One focus per day β the whole week on one board. This is a draft: check it, then give your suggestions on the call.
π The week at a glance
Mon β Analyze. One deep pass on the ad account: stop losing ads, scale the winners, classify every weak product into the CREATIVE list (ad is the problem) or the CONVERSION list (page is the problem).
Tue β Create & launch statics. Video scripts + statics for Monday's creative list; finished statics go live the same day; new versions of the winners.
Wed β Publish & pages. Publish the ready ads first, then walk the weak pages like a customer and note the problems for the call. Ads first, pages second β always.
Thu β Push the editors. This week's videos must be finished; launch what lands.
Fri β Verify & report. Is everything the week made actually live? Onboard the new product (research + first ads β live today). Write the week report: the week on one page.
Sat β Launch, call & plan. Anything missing goes live FIRST, then the call, review wasted spend, plan next week.
Sun β off.
π Open the full board β hover any task there for its full meaning Β· every rule is in its NOTES
Q&A β every answer from the calls
You don't have to remember what was said on a call, or wait for the next one to ask again. Every answer is kept here, by date.
π¬ What's in it
Every call, kept by date. Each call you ask questions and get answers β they all stay on one page, with a tab per date. Nothing gets lost when the call ends.
Search across all of them at once. One box at the top. Type a word β kill, CBO, editor, statics β and every answer that mentions it comes up, from any date.
Use it before you ask. If the question was answered on an earlier call, the answer is already there β that is faster than waiting for a reply. If it isn't there, then ask.
π¬ Open the Q&A β press q from anywhere in this SOP Β· search box: press /
β If your question isn't answered there
Ask it anyway β don't sit on it. A question you're holding is usually the reason a task didn't move. Put it in the ClickUp task, or bring it to the call.
Every new answer goes into this page under that call's date, so the same question never has to be asked twice.
Coming soon: an Ask box on that page β type a question in your own words and get the answer built from what has already been answered on the calls. It is being tested now and will appear there when it's ready.
Access & Confidentiality
Start here. You reach the tool privately over Tailscale β a secure connection, not the open internet. Access is personal, non-transferable, and confidential. Read Β§0.3 before you start.
0.1 Get access (Tailscale) β one-time setup
The tool lives on a private network. To reach it you install Tailscale and accept the invite we send you.
- Install Tailscale on your computer β
https://tailscale.com/download(Windows / macOS). - Sign in with your own account (Google / Microsoft / email) β the same address the invite was sent to.
- Open the invite link we send you and click Accept / Connect. This shares one machine with you β nothing else.
- Make sure Tailscale is running and connected (the icon is on/green) whenever you work.
- Open the links in Β§0.2.
0.2 Your links
| What | Link |
|---|---|
| ClickUp β work queue | 03 - Media Buyer - Product Testing β |
| Creative tool Β· Tailscale | http://100.91.34.1:8100/ β |
| This SOP Β· Tailscale | β¦/HEAD_OF_PERFORMANCE_SOP.html β |
ClickUp opens in your ClickUp login β your daily work queue, where products flagged NEED SCALLING start (Β§3.1). The tool, SOP & guide need Tailscale connected first (Β§0.1).
Everything is in this one document. Β§1βΒ§5 are the rules, Β§6 is the click path through the tool, and Β§7 answers the situations that come up. New here? Start with Β§6.1 β your day β.
0.3 Confidentiality β read before you start
- Never share the brand or company name, product names, domains, or account details with anyone.
- Never share, copy, screenshot, download or repost any creative, image, video, script, research, angle or data outside the agreed workflow.
- Don't reference this brand in your portfolio, case studies, socials, or to any other client β and don't disclose that you work on it.
- Your access is personal and non-transferable β never share your login, the invite, or the Tailscale link.
- When in doubt, ask first before sharing anything externally.
Access is granted on trust and can be revoked at any time. Treat every asset as the client's property.
0.4 If a link won't connect
- Check the Tailscale icon is on/connected (reconnect if it dropped).
- Confirm you're signed in with the invited account, and that you accepted the invite.
- Try the other address form in Β§0.2 (IP vs machine name).
- Still stuck β message the team β don't try other routes or ask outsiders.
Iteration β mine the winners
A winner already paid for its learning. Iteration re-uses it: the winning words never change β one thing changes per test. For now: statics only β they are the fastest and cheapest tests we have.
π§ Rule #1 β understand the winner BEFORE you generate
The feature works β we are now confirming the QUALITY of what it writes. So for this first phase: quality over speed.
Before you press Generate: read Step 1 slowly and make sure you can say, in one sentence, why this ad won β its main idea, its angle, and its structure. If you cannot say it, do not generate yet β re-read the WON BECAUSE and the words on the winning picture.
After it generates: check every brief against that one sentence. The iteration must keep the same core winning idea β same promise, same meaning. If a brief changed the meaning (a different promise, a weaker claim, a new idea that was not in the winner), do NOT publish it β regenerate, or flag it to Mustapha.
Once we see the iterations come out consistently accurate, we rely on the tool more and speed up. Until then, you are the quality gate.
βΆ The whole job β 5 clicks
1. Open β» Iterate in the tool. The yellow bar shows START HERE β the best winner. Press it.
2. Step 1 opens β 10 seconds of reading: which picture actually made the money, and the exact words on it. (The tool merged all "β Copy" ads and picked the proven image for you.)
3. Step 2 β pick ONE card with the πΌοΈ image icon. Skip the π¬ video cards for now.
Video winner β one image card: T1 β the video's message becomes 8 static images.
Static winner β three image cards:
S1 Β· same text β new layouts β the winning words on 8 frames they never wore. Tests: is the MESSAGE the asset?
S2 Β· winner layout β new text β the winning frame, 8 new lines. Tests: is the FRAME the asset?
S3 Β· same layout + text β new design β same everything, a sibling design skin. A twin Meta can place separately.
4. Press Generate β review the briefs β Send to the Publisher β publish. The tool makes the ClickUp task, the Drive folder, assigns the winner's editor, and puts the ad copies in the task.
5. When the images come back from the editor: launch them in the product's CT adset the same day. Name each ad exactly like its Drive file (without .png) β that is how the tool learns which layout sells.
π The rules (the tool enforces most of them)
Statics only for now. Video tiers (T2/T3) come later β do not pick π¬ cards yet.
One card per winner at a time. Generate it, launch it, let it spend β then come back for the next card.
Never repeat a tier marked βΆ testing / β done. The card tells you; a running test must finish first.
Ad copy: use Variant 1 first β it is the winner's own proven text, reused on purpose.
Winner bar: an image is iterable from β¬50 spend at ROAS 2. Below that the tool will not offer it β nothing for you to check.
π€ What the tool already did for you
β Held the winner's words word-for-word Β· β attached the winner's proven ad copy Β· β excluded the layout that already won (S1) Β· β rotated in layouts never tested on this product Β· β blocked the layouts that lose account-wide Β· β banned the lines that already failed. You never have to remember any of this β if a card is offered, it is safe to press.