УКРEN
Daria · marketing strategist · movement XI

The economics of trust: launch

The creative is accepted (movement X), the budget is agreed. The eleventh movement is a campaign-launch runbook: six phases, a QA gate before the start, a UTM spec after movement VIII's incident, and kill / scale thresholds derived from the unit economics, not from a mood.

LUMÉ · fictional network6 phases · 1 gate7–14 day evaluation windowon movement VIII and the Bible
Four principles of this movement
This page8 minutes

Phases, gate, the UTM spec and the kill/scale grid with four breakdowns

With the files35 minutes

Runbook, gate checklist, naming spec, kill/scale rules, a filled campaign brief

Working files6

launch_runbook.md, qa_gate_checklist.md, naming_utm_spec.md, kill_scale_rules.md, campaign_brief_example.md, n8n_campaign_guardrails.json

Source of the thresholdsMovement VIII

CAC, CPL, funnel, utilisation — from movement VIII's report; LTV — from the LUMÉ Bible

Same model client: LUMÉ

A network of four aesthetic-cosmetology studios in Kyiv, a fifth opening. Campaign launches are run by the marketing lead; there's no media-buying department. The ad accounts are Meta, Google, plus micro-influencer integrations.

Budget
6% of revenue ≈ ₴677K/quarter of paid spend; Meta 60% / Google 22% / influencers 18%
Economics (Bible v0.6)
paid CAC ₴1,806, plan ₴1,500, CPL rate Meta ₴620 / Google ₴481, lead→booking 0.38, booking→show 0.84, LTV ₴17,742 (Bible), LTV/CAC 9.8×
Capacity constraint
network utilisation 76% — three of four studios at the ceiling. A "cheap-lead volume" campaign right now is harmful: new bookings crowd out repeats
Frame
Advertising Law art. 21, a "Sponsored" mark, category search for cosmetology falling 40–60% over 5 years — Google only on brand and procedures
Section I

Six phases, a gate in the middle

One runbook across all channels. Each phase has its owner, its exit, its check. Full version — launch_runbook.md.

0

Campaign brief

A numeric goal ("+110 SMAS visits at CAC ≤ ₴2,800"), why now, what's known from movement VIII, the offer, budget and split, kill/scale thresholds — fixed before the start.

exit: a filled campaign_brief · check: the goal is measurable, the offer doesn't contradict the utilisation logic
1

Assembly

Creative accepted (movement X), copy compliant with art. 21, UTMs from the generator, landing checked (movement XII), audiences and exclusions built, pixel on a test event.

check: a test enquiry from every landing reached the CRM via n8n with the right UTMs
2

QA gate

A second person goes through a 6-block checklist line by line. With one reviewer — the gate is the next day, on a fresh head.

exit: a signed checklist · a red point = stop
3

Start + the first 72 hours

Launch in the morning of a working day. Budget as planned, no ramp-up. Don't touch it for 72 hours / until 50 conversions — except stop signals (0 enquiries at spend, broken UTM, delivery out of range, CPL > 2×).

studio admins are warned — otherwise the 15-minute SLA from movement IX won't hold
4

Evaluation window and optimisation

A 7–14 day window. Intervention schedule: day 3–4 junk cleanup, day 7 evaluation against the kill/scale grid, day 10–14 budget for the next period. Between points we don't touch it.

5

Retro and passing on the conclusions

A one-page review in the worked_month.md format: actual vs goal, what won, the best creatives with IDs from the movement X board, kill/scale decisions. Conclusions → into the briefs, dict_utm_rules, the next campaign brief.

Analysis & growth points · how to launch

1 · baseline

Assemble the ads, set the budget, hit "Publish," then watch the ad account and "tweak."

2 · what's wrong

Without a brief there's no telling what counts as success — so it can't be stopped with justification. Without a gate a broken UTM goes live, a landing with no analytics goal, an ad with a doctor on camera (art. 21). Without an evaluation window decisions are made on three leads over two days. Without a retro the same mistakes repeat every campaign.

3 · senior level

A runbook with phases: each has an owner and an exit that's checked before moving on. The gate between "Assembly" and "Start" is hard, like the Definition of Ready in movement X. The brief phase filters out harmful campaigns before spending money: "volume of cheap leads across all studios" at 76% utilisation doesn't pass the check.

4 · outcome

The launch stops being improvisation. Every campaign is comparable to the last (one brief and retro format), process mistakes are fixed in the runbook, not repeated.

Section II

QA gate: 6 blocks, each a yes / no with a signature

The campaign doesn't start until all points pass. A second person checks. Full checklist — qa_gate_checklist.md.

BlockWhat it catches
Creative compliancedoctor on camera, "most effective," before/after with a flaw, no "Sponsored" mark (5× the cost fine)
TrackingUTM not to spec, a test enquiry didn't reach the CRM, the conversion tied to page_view instead of lead
Budget and pacea "ramp-up" of the daily budget, a split against the utilisation logic, a Friday-evening start
Targetinggeo wider than the studio districts, current-client base not excluded, Google with no negatives and nationwide
Reception pointthe form sends to the wrong place, "thanks, we'll call you sometime" instead of the 15-min SLA, no consent for processing medical data
Thresholds and accesskill/scale thresholds not written out, checkpoints not in the calendar, no one to handle stop signals on the weekend
Analysis & growth points · how to check before the start

1 · baseline

Before launch, glance at the campaign yourself once more — looks fine.

2 · what's wrong

The person who built it looks at their own work with a tired eye and sees what they meant to do, not what they did. A space in a UTM, a test event that wasn't checked, a landing that "definitely works" — surface a week later, when ₴40K has been spent. In movement VIII exactly this way 50 leads over 24 days went into "(not set)."

3 · senior level

A formal gate: a second person (in a small team — the same person the next day) goes through the checklist line by line, each point yes/no, with a name and date. A mandatory practical point — a test enquiry from the live landing must reach the CRM, with a screenshot, not "the form looks working." A red point stops the launch with no discussion.

4 · outcome

The "launched with broken tracking / an art. 21 violation / a broken UTM" class of error is closed at the entrance. A signature on the checklist makes the check an event, not an intention.

Section III

Naming and UTM: a generator, not a keyboard

The reason the spec exists is movement VIII's incident: on a campaign relaunch a space got into the tag (kyiv smas), GA4 split it, 50 leads over 24 days fell into (not set), and at the stand-up the best channel by ROMI was nearly cut. Spec — naming_utm_spec.md.

The utm_campaign structure

only a–z, 0–9, underscore · lowercase · no spaces, Cyrillic or hyphens

lume_{scope}_{line}_{goal}_{period}

scope — net or a studio code (pech podil obol pozn centr) · line — inject hardware laser care consult smas course referral · goal — lead book promo awareness · period — 2026q4 or 2026m10

Example: lume_pech_smas_lead_2026q4

utm_content matches the creative ID from the movement X board — so the report shows which layout gave which CPL and hook rate.

Analysis & growth points · how to tag

1 · baseline

Put the UTM straight into the ad account when creating the campaign, from memory of how it was named last time.

2 · what's wrong

"From memory" means variance: smas / SMAS / smas-lift / смас. Analytics breaks into pieces, attribution lies, and worst of all — it's not noticed at once. One space or capital letter — and a channel looks dead in the report though it brings in clients.

3 · senior level

A UTM is never written by hand in the ad account. A generator (a spreadsheet with dropdowns) builds the string to spec and checks it with a regex (REGEXMATCH) — a red cell if it's off. The finished string is copied into the account. The campaign name in the account = utm_campaign verbatim, so movement VIII's report stitches spend and leads with no manual mapping. A validator in n8n duplicates the check at the lead layer — catching a broken tag in the first hours, not a day later.

4 · outcome

Movement VIII's incident is structurally impossible: a broken tag doesn't pass the generator, and if one somehow does — n8n pauses the campaign and alerts the same day.

Section IV

Kill / hold / iterate / scale — from the unit economics

The decision is made against thresholds derived from LUMÉ's economics, within a window of statistical significance. Thresholds — in the brief before the start and in the guardrails. Rules — kill_scale_rules.md.

The decision ruler on a bundle's CAC

LTV on gross profit ₴17,742 (Bible). The campaign's life boundary — LTV/CAC = 4, i.e. CAC ₴4,443

Bundle CACLTV/CACDecision
< ₴1,800> 10×SCALE — if there's capacity; otherwise HOLD + pour into referrals
₴1,800–3,2005.5–10×HOLD — don't touch until the next point
₴3,200–4,4004–5.5×ITERATE — fix one thing per iteration
> ₴4,400< 4×KILL — switch off, record the reason

Independent KILL triggers: lead→booking < 0.20 · share of off-target·budget (the doctor's tag, movement IX) > 40% · hook rate < 15% at CTR < 0.6% on 15,000+ impressions.

The significance window — we don't judge earlier. 7 days (Meta's learning phase) and ≥ 50 leads for a CPL decision, ≥ 30 bookings or ≥ 10 visits for a CAC decision. Earlier — only stop signals. Judging a bundle on 5 leads over 2 days is guessing.

SCALE is banned with no free capacity, even at an excellent CAC. Utilisation 76%: there's nowhere to put the extra visits. Instead of raising the budget — move to the referral programme (CAC ₴300) or to a campaign with a higher ticket (the same chair slot, more revenue). This is a direct consequence of movement VIII.

Analysis & growth points · when to stop

1 · baseline

Watch CPL in the ad account; when it's "expensive" or the budget's out — switch it off.

2 · what's wrong

"Expensive" relative to what? CPL ₴900 is bad for Meta and excellent if those leads reach an expensive procedure. A CPL decision ignores whether the lead reaches the chair and how much it pays there. And "switch off when you're tired" isn't a decision, it's a capitulation: a bundle you should have fixed with one offer tweak gets killed whole.

3 · senior level

The threshold is on CAC (those carried to a visit), cross-checked against the Bible's LTV: the KILL boundary is LTV/CAC = 4 (CAC ₴4,400), not the plan of ₴1,500 (that's the target, approached via ITERATE). Four outcomes, not two: KILL / HOLD / ITERATE / SCALE. ITERATE changes one thing at a time (offer → landing → creative → audience → bid, in exactly that order), to know what worked. All within the significance window, accounting for lead quality from the doctor.

4 · outcome

The decision is reproducible and explainable to the founder in one line: "CAC ₴3,100, LTV/CAC 5.0 — we iterate the offer, we don't kill." The automation (guardrails) computes and signals, a human decides with the season and the studio schedule in mind.

Section V

Optimisation: a schedule, not a reflex

WhenWhat we doWhat we don't
First 72 hoursstop signals only (0 enquiries, broken UTM, delivery out of range)don't change budget, audience, bids — it resets the learning phase
Day 3–4clean obvious junk: junk placements in Meta, negatives in Googledon't touch structure and budgets
Day 7evaluate every bundle against the kill/scale griddon't "tune" bundles in the green zone
Day 10–14budget for the next period, retire the leading and the weak creatives, the next iterationdon't scale with no free capacity
Between pointsnothing, if there's no stop signalevery manual edit zeroes the accumulated statistics
Analysis & growth points · how to run a campaign that's live

1 · baseline

Go into the ad account every day and tweak: raise a bid here, change an audience there, add budget somewhere.

2 · what's wrong

Meta's and Google's algorithms learn on accumulated data. Every manual budget/audience/bid change restarts the learning — and the campaign is back in an expensive, unstable phase. Daily "tweaking" keeps it in an eternal learning phase, CAC never stabilises, and the marketer makes decisions on noise, not signal.

3 · senior level

An intervention schedule with explicit dates and an explicit "between points we don't touch it." The first 72 hours — hands off, except stop signals. Then — three planned points over two weeks. Changes — as a batch at a point, one factor at a time, with a new significance window. Utilisation 76% also changes the optimisation goal: not "lower CAC further" but "hold CAC and shift the mix toward expensive lines."

4 · outcome

The campaign exits the learning phase and gives a stable CAC you can decide on. The marketer's time goes to the brief and the retro, not to nervously refreshing a dashboard.

Section VI

Guardrails: the automation signals, a human decides

The same approach as in movements VIII–X. n8n_campaign_guardrails.json — 13 nodes, import-ready.

NodeWhat it does
Daily compute (weekdays 09:30)for each active campaign from raw_spend + raw_leads: real spend = delivery (the +20% non-resident advertising tax was repealed in 2022, Law No. 1525-IX), leads, bookings, visits, CPL, forecast CAC, LTV/CAC, delivery pace
Decision gridstop signals (0 leads at spend, pace ≥ 1.5 or < 0.4, CPL > 2× plan) → the KILL/ITERATE/SCALE grid from the campaign's thresholds; the output is only campaigns that need a decision
Alert dedupthe same decision on a campaign isn't repeated day after day (alert_state) — the signal comes once, until the situation changes
UTM validatora separate webhook lume-campaign-lead: a tag not to spec → "pause the campaign, fix it" within the hour
Remindersday 3 / 7 / 14 — checkpoints per the runbook

What needs access: a daily spend export from the Meta / Google ad accounts into raw_spend (the same access movement VIII needs), a Telegram chat token. The logic is written and imports.

Section VII

Reference numbers for a campaign

Each one is a boundary a decision is made on. Not a "dashboard metric" but an input to an action.

₴4,400CAC → above: KILL (LTV/CAC = 4)
₴1,500target CAC → a reference for ITERATE, not a stop threshold
7–14 devaluation window → no decision earlier, only stop signals
72 hrsafter the start → hands off, except stop signals
+20–30%budget scaling step → not a doubling (learning-phase reset)
1factor per iteration → to know what exactly worked

The campaign retro puts into the shared report: actual vs goal, the winning "channel × offer × creative" bundles, the best creatives with IDs from the movement X board, kill/scale decisions with reasoning. This closes the loop: movement X produces → movement XI launches and measures → conclusions come back into movement X's briefs.

Honestly

What this work does not do

The thresholds are tuned to the model's unit economics. KILL at CAC ₴4,400 is right while LTV ₴17,742 (Bible) is right. Meta CPL ₴620 is grade C: the one UA anchor is Rabbit Marketing "beauty/health 200–600 ₴/lead" (09.2026), the exact ad-account number is unconfirmed. The "non-resident advertising tax" (+20% on Meta/Google) kept in v0.5 was repealed back in 2022 (Law No. 1525-IX) and removed in v0.6: CAC ₴2,106 → ₴1,806, LTV/CAC 8.4× → 9.8×. At a conservative CPL of $18–22, LTV/CAC ~6–7×, still above the KILL boundary.

The runbook hasn't been tested on a live campaign. The phase sequence, the window length, the intervention schedule — from media-buying practice, not from the LUMÉ team's runs. On a real stream it's calibrated over 2–3 campaigns.

The gate's compliance points are from open sources. Art. 21 and Meta policy are read, not checked by a lawyer. For a real business gate block 1 is agreed with a lawyer.

The guardrails automation depends on movement VIII. Without a daily spend export from the ad accounts a real-time CAC computation is impossible — manual entry remains, which lowers the control frequency.

Sources

Where the thresholds come from

CAC, CPL, funnelpaid CAC ₴1,806, CPL rate Meta ₴620 / Google ₴481, lead→booking 0.38, booking→show 0.84 · Bible v0.6, figures.json
LTV and LTV/CACLTV on gross profit ₴17,742, target LTV/CAC ≥ 4 · LUMÉ Bible, two-segment cohort
Network utilisation76%, three of four studios at the capacity ceiling · movement VIII, Section X
UTM incident50 leads into "(not set)" over 24 days from a space in a tag · movement VIII, worked_month.md
Learning phase≈ 50 conversions / 7 days to stabilise; sharp budget edits reset learning · Meta Business Help
Medical-service advertisingAdvertising Law art. 21, a "Sponsored" mark, 5× fine · research/source_register.md block H
Search demandcategory search for cosmetology −40–60% over 5 years; "botox kyiv" +10% · Google Trends, Bible Section I