УКРEN
Daria · marketing strategist · movement XII

The economics of trust: maintenance

Eleven movements built the machine. The twelfth is the schedule that keeps it from breaking silently: a check cadence with an owner on every line, synthetic form monitoring, ad-account funding control, and document flow with tax-office deadlines.

LUMÉ · fictional networkday · week · month · quartereverything in ops_logcloses the operational block
Four principles of this movement
This page7 minutes

Cadence, synthetic monitoring, the advertising tax and document flow with four breakdowns

With the files25 minutes

The full cadence, QA protocols, the document-flow map

Working files5

ops_regulation.md, qa_protocols.md, document_flow.md, n8n_ops_watchdog.json, README.md

SourceMovements VIII–XI

All thresholds and volumes — from previous movements; the legal structure — from the LUMÉ Bible

Same model client: LUMÉ

A network of four aesthetic-cosmetology studios in Kyiv. An LLC + VAT payer + MoH licence (LUMÉ Bible). Marketing contractors (movement X) are group-3 sole traders. The ad accounts are Meta and Google (Irish entities). There's no dedicated ops manager — the background work is run by the marketing lead, part of it handed to automation.

What we maintain
forms and tracking (movements VIII, XI) · the creative board (X) · communications and the bot (IX) · campaigns (XI) · contractor and ad-account document flow
Where it's written
ops_log — a sheet in the same file as movement VIII's report
What's automated
synthetic form checks, ad-account balances, UTM audit, page statuses, a month-close reminder — n8n_ops_watchdog.json
Frame
the Tax Code (VAT on non-resident services, art. 208), the Personal Data Protection Law (medical form data), Meta policy
Section I

Cadence: day, week, month, quarter

Every line — what · owner · what counts as a failure · where it's written. Full version — ops_regulation.md.

Daily
  • a synthetic enquiry on every landing page auto
  • Meta / Google ad-account balance — enough for 5+ days auto
  • yesterday's first-response SLA, unanswered enquiries (movement IX) auto
  • CPL / CAC / pacing of active campaigns against thresholds (movement XI) auto
  • the marketing lead reads the overnight alerts — resolves or escalates · 5 min
Weekly
  • UTM audit — all of the week's tags against the regex (movement XI), re-attribute "(not set)"
  • link check — landings, profile bio, pinned posts, bot auto-replies, e-mails
  • 5 active ads against art. 21 (the movement X checklist)
  • creative freshness — what's been running > 3 weeks without a refresh
  • creative board queue — WIP limits, stuck tasks (movement X)
Monthly
  • tracking audit — GA4 / pixel on all pages, events, GA4 ↔ CRM volume reconciliation
  • spend reconciliation — ad accounts = raw_spend = acts / invoices = bank charges
  • contractor document flow — act + invoice + payment for each
  • Meta / Google invoices — received, reconciled, passed to the accountant
  • backups · access rights · data-processing consents
Quarterly
  • operational-block retro — what actually ran, where the failures were
  • recompute kill / scale thresholds from fresh Bible data (movement XI)
  • check Meta policy and legal changes — update the checklists
  • tax calendar with the accountant — LLC filings, VAT invoices on non-resident services
Analysis & growth points · when to do the background work

1 · baseline

Check when something breaks or when someone asks: noticed the ads stopped — topped them up; the accountant asked for an act — found it.

2 · what's wrong

A reactive model means every breakage first costs money, then gets fixed. A form that stops sending enquiries is discovered by a dip in the report a week later. An ad account at zero balance — by a delivery drop in the middle of a campaign. A missing act — at a tax audit. "When there's time" in practice means "never."

3 · senior level

A cadence: every check has a period, an owner-role (not "the team"), a failure definition and a place to record it. A failure is not a rating but an input to an action with an obvious next step. What a machine can check, n8n_ops_watchdog checks; a human reads the signals and fixes. The result of every check is a row in ops_log; an empty log for a week is visible at the retro and means the cadence isn't running.

4 · outcome

Breakages are caught before they cost money. The cadence isn't a document in a folder — it's a schedule in the calendar plus automation. Checkability: ops_log shows what was done and when.

Section II

Synthetic form monitoring

In movement VIII 6.7% of enquiries went unanswered — partly from a silently broken form or integration. Protocol — qa_protocols.md No. 1.

Every day at 09:05 n8n sends a test enquiry to every live landing page and quiz, waits 2 minutes and checks raw_leads: did a row appear, were the UTMs preserved, was the channel set. Test rows are marked is_test=true and don't reach the metrics.

Failure → an alert to the marketing lead and the developer (movement X), campaigns on that landing are paused until it's fixed.

Analysis & growth points · how to check forms are alive

1 · baseline

Once a month, manually send a test enquiry from every landing and see whether it arrived.

2 · what's wrong

A "once a month" manual check catches a breakage on average two weeks after it happened. If a form stopped sending enquiries on the 3rd and the check is on the 28th — that's 25 days of lost paid leads. This is exactly how the 6.7% unanswered in movement VIII accumulate: not a lazy manager, a silently severed channel.

3 · senior level

Synthetic monitoring: a robot walks the whole enquiry path every day — from the POST on the webhook to a row appearing in the CRM with the right tags. The whole chain is checked (form → n8n → UTM normalisation → write), not "does the page open." A 2-minute window — if the enquiry didn't arrive or arrived with no UTM, campaigns on that point pause automatically, before a human steps in.

4 · outcome

A broken form lives for up to a day, not a week. Lead loss from a technical breakage stops being a hidden line item in the report.

Section III

Tracking audit: volume reconciliation, not "the box is ticked"

StepWhat we check
Inventorya list of all URLs the ads and organic lead to
TagsGA4 and Meta Pixel on every page, no duplicates
Eventswalk the funnel with a debugger: page_view, quiz_start, quiz_step, lead fire with the right parameters
Conversionstied to lead, not to page_view and not to a button click with no submit
Volume reconciliationthe number of lead events in GA4 ≈ the number of enquiries in raw_leads (a > 10% gap — something isn't counted or is double-counted)
Consentthe banner doesn't block the tag after consent; for medical data — a separate checkbox (movement IX)
Analysis & growth points · how to audit tracking

1 · baseline

Open the page, check in the extension that the GA4 tag loaded — it's there, so it works.

2 · what's wrong

"The tag loaded" doesn't mean "events are written correctly." A conversion can be tied to the "thank you" page load — and then anyone who just opens it by a direct link counts as a lead. Or the lead event is duplicated by two tags — and CPL in the report is half the real one. A visual check doesn't see this.

3 · senior level

The audit ends with a volume reconciliation: over a month the number of lead events in GA4 should match the number of rows in raw_leads (movement VIII) within 10%. A gap is a signal: the event's on the wrong trigger, a duplicate tag, or enquiries go around the tracking. Plus a check of every funnel event with a debugger, not just the fact the tag loaded.

4 · outcome

The numbers movements VIII and XI make budget decisions on are checked to be counting exactly what they should. A gap is caught in a month, not surfacing during a post-mortem of a failed campaign.

Section IV

Ad-account funding and VAT on non-resident advertising

Meta and Google invoice from Irish entities. For a Ukrainian LLC that's two obligations you can't find out about at quarter-end. Details — document_flow.md §3.

The model kept a repealed tax — this was caught in review

art. 141.4.6 of the Tax Code (20% on Meta/Google payments "from own funds") was removed by Law No. 1525-IX effective 01.01.2022; Bible v0.5 kept it active — its status was frozen at the "bill passed a first reading" stage

What actually applies: only 20% VAT on non-resident services (art. 208) — reverse-charge: the VAT-paying recipient accrues 20% of tax liability with a right to a tax credit. Cash-neutral (for taxable activity), but it requires a separate tax invoice registered on time for each bill — otherwise a late-invoice penalty. Branch: if part of the studio's services are VAT-exempt medical (art. 197.1.5), the input VAT on that share won't be credited.

Consequence for movements VIII and XI: in v0.6 the "+20%" is removed. Meta ₴1,942 (not ₴2,331), Google ₴1,504 (not ₴1,805), paid CAC ₴2,106 → ₴1,806, LTV/CAC 8.4× → 9.8×, a mature studio 9.2% → 9.5%. Kill/scale thresholds recomputed. The lesson for the background block: the status of a tax rule is data too, and it goes stale; "a repeal bill is in progress" needed a check on whether it had already become law.

Analysis & growth points · controlling ad payments

1 · baseline

Attach a card to the ad account, it pays itself. Deal with it when the ads stop.

2 · what's wrong

The ads stop at the worst moment — mid autumn-peak campaign (movement XI) — because the card ran out of money or the bank declined the non-resident payment. It's noticed by a delivery drop, days are lost recovering. And the VAT invoices on non-resident services are remembered when the accountant does the quarter — and it turns out the invoices weren't handed over on time (a late-invoice penalty).

3 · senior level

Three layers of control: daily — automation watches the balance and the "days left" forecast, an alert at < 5 days; a reserve ≥ the monthly budget on the account, so a declined payment doesn't stop campaigns; monthly — invoices downloaded, reconciled with raw_spend and bank charges, passed to the accountant for the advertising tax and the tax invoices. Unit economics is computed off CAC with the tax.

4 · outcome

Campaigns don't stop over payments. VAT invoices on non-resident services are registered on time. And the status of tax rules in the model is checked every quarter — "a repeal bill is in progress" turned out, once, to be four years out of date.

Section V

Contractor document flow

Not accounting — the part that marketing runs, because only marketing knows what the service was and whether the work is closed. Map — document_flow.md.

DocumentWho prepares itWhen
Contract / offer (framework)lawyer / founderonce at the start
Monthly invoicecontractorby the 5th of the next month
Act of services renderedcontractor + both signaturesby the 5th
Payment confirmationthe marketing lead records iton the day of payment
Influencers — placement screenshot + "Sponsored"SMMon the day it runs
Analysis & growth points · marketing's document flow

1 · baseline

Collect acts and invoices when the accountant reminds you before the filing.

2 · what's wrong

By quarter-end it turns out three contractors have no acts for months there was work, one has left and isn't answering, and the influencer integrations have no closing documents at all. Reconstructing after the fact is slow and not always possible; without an act the spend isn't accepted as a cost (extra profit tax), and for sole-trader contractors without correct contracts and activity codes there's a risk of reclassification as employment.

3 · senior level

A calendar with a by-the-5th deadline for the next month: for every active contractor — act + invoice + payment fact in the /docs/contractors/{name}/{month}/ folder. The monthly cadence line checks completeness; no act for a worked month — escalation to close it. The "paid = received and accepted" reconciliation is done by whoever set the brief, not the accountant who sees only the sum.

4 · outcome

By filing time everything is collected. Costs are accepted, the reclassification risk is closed by contracts, payments with no closing documents don't pile up.

Section VI

Ops watchdog

n8n_ops_watchdog.json — 26 nodes, import-ready. The automation catches and signals only on a deviation; a human decides and fixes.

TriggerWhat it does
Daily 09:05a synthetic enquiry on every landing from ops_endpoints → check raw_leads for 2 min → log; alert only on a failure
Daily 09:00ad-account balance from ad_accounts → "days left" forecast → alert at < 5 days
Monday 10:00UTM audit for the week against the regex → a message only if the not-to-standard share > 1%
Monday 10:00HTTP status of the live pages → a message only on non-200
1st of the month 10:00a month-close checklist in Telegram: acts, invoices, backups, access, consents

Needs: the sheets ops_endpoints (list of forms and pages), ad_accounts (balance, average spend — filled manually or from the ad-account API), ops_log. Variables: LUME_SHEET_ID, LUME_TG_MKT.

Section VII

Reference thresholds for this movement

Not "dashboard metrics" but boundaries past which the cadence requires an action.

ops_loga log of all checks → empty for a period = the cadence isn't running
1/daysynthetic form run per landing → a failure pauses campaigns
< 1%UTM not to standard → above: review the naming (was — a 2.0% incident)
< 10%GA4 ↔ CRM lead gap → above: fix tracking
≥ 5 daysad-account runway → below: top up before campaigns stop
by the 5thlast month's document flow closed → otherwise escalation
Honestly

What this work does not do

The tax part is a map, not advice. VAT on non-resident services (art. 208), the sole-trader reclassification risk — described from the Tax Code and tax-office clarifications, but application depends on the deal structure and must be agreed with an accountant and a tax lawyer.

The "non-resident advertising tax" was removed from the model (Run 12, grade A). Primary text of Law No. 1525-IX (zakon.rada): art. 141.4.6 of the Tax Code removed effective 01.01.2022. Meta CPL ₴620 stays grade C (the one UA anchor: Rabbit Marketing 200–600 ₴/lead).

The watchdog hasn't run on live n8n. The node and expression syntax is written from platform knowledge. The HTTP nodes for ad-account balances assume data is put into ad_accounts manually or by a separate integration — there's no direct connector to Meta/Google billing in the workflow.

The cadence hasn't been broken in. Frequencies and owners are from practice, not the LUMÉ team's runs. On a real stream some checks will prove redundant, some insufficient; that's fixed at the quarterly retro.

Sources

Where the frames come from

Non-resident advertising tax — NOT IN FORCEart. 141.4.6 of the Tax Code removed by Law No. 1525-IX of 03.06.2021, effective 01.01.2022 · zakon.rada.gov.ua/laws/show/1525-20
VAT on non-resident servicesart. 208 of the Tax Code — place of supply of advertising is Ukraine, a VAT-paying recipient accrues 20% liability with a right to a credit · research/source_register.md block R
Business splitting / sole-trader reclassificationthe tax office actively checks for signs of employment with sole traders in 2025–26 · movement VIII legal part, LUMÉ Bible §IV
Medical form datathe Personal Data Protection Law — a special category, a separate consent is needed · movement IX
Thresholds and volumes6.7% of enquiries unanswered, a 2.0% UTM incident, CAC Meta ₴1,942 / Google ₴1,504, KILL threshold ₴4,400 · movements VIII, XI, Bible v0.6
Creative fatiguerefresh every 2–3 weeks · LUMÉ Bible, Section V