Fusion Tables, internal only

Client asset pack
acceptance report


What the six-deck pack contains, the five live measurement defects behind it, the ordered fix plan, and what still cannot be sourced. This deck also carries the self-QA and acceptance results for the whole pack.

Built 2026-09-02 Not for client review English, agency use

This run

Six decks plus one index

  • Index · fusion-asset-pack-index-2026-09. Client-facing landing page listing the five client decks.
  • riport-30-nap · 30 napos eredmények. The dated 30-day results deck: spend, clicks, CPC, enquiries, Meta platform and demographic breakdowns.
  • kreativ-teljesitmeny · Hirdetéskreatívok teljesítménye. Ranks the 39 Meta ad creatives against 20 rows of dated insight data.
  • versenytars-hirdetesek · Versenytársak hirdetései. Competitor ad screenshots and copy patterns to reuse or avoid.
  • hirdetesi-strategia · Hirdetési és célzási stratégia. Two targeting scenarios, audiences and a copy bank, built without a confirmed budget baseline.
  • persona · Persona elemzés. Buyer personas and the messages mapped to each.
  • belso-anyagok · Belső anyagok és QA (this deck). Internal only. Defects, fix plan, provenance, gaps and acceptance status for the whole pack.
Forrás_shell/decks.json, the pack's own deck manifest, 2026-09-02.

Why this deck exists

Five live measurement defects

IDSeverityDefect
F-21CriticalA cached page has served one visitor's UTM and Google click ID inside live form action URLs to the next visitor since a clean HIT was graded on 2026-07-30. Never fixed.
F-02CriticalThe armed "Submit lead form" Google Ads conversion action fires on a URL that returns HTTP 404. A separate "Purchase" action sits on a URL that returns 200 and has not fired yet.
F-04CriticalThe CRM source column is null for every enquiry row, so no submitted enquiry can be joined back to the ad that produced it.
F-03CriticalGoogle Ads conversion_value carries the conversion count under unit "huf", producing a ROAS of 0.0005 with no real revenue behind it.
WindowsHighThe five data sources behind the internal reporting pipeline cover three different date ranges, so a single report can mix incompatible windows under one "current" label.
Forrás/Users/agency/.claude/cf-review/fusion-ppc-system-audit-2026-08-31-v1/index.html, consolidated findings table, observed 2026-08-30. Windows severity assessed against /Users/agency/Documents/Agty/Fusion/outputs/loop-runs/2026-08-28-fusiontables-report/report_data.json, "windows" and "source_health".

Fix plan, step 1 of 5

F-21: cached page leaks click IDs between visitors

1

Symptom. A clean cache HIT on the billiard-table landing page serves one visitor's UTM parameters and gclid inside the three rendered CF7 form action URLs to the next visitor who hits the same cache entry.

2

Root cause. The production cache layer, owner not yet identified, caches query-derived personalization fields as part of the static HTML instead of stripping them before the page is cached.

3

Fix. Exclude query-derived click IDs and UTM values from cached HTML. Generate attribution fields per request after the cache layer. Never cache a personalized form action.

4

Who. Site or cache owner, currently unassigned.

Proof it is fixed

An automated clean HIT/MISS matrix using two distinct synthetic visitor IDs shows neither visitor receives the other's values, the page stays at HTTP 200, and every CF7 form action contains only current-request values. No live form submit required.

Forrásedit-manifest.md, EDIT-01, T2 evidence T1-F-audit-005:T-004. Order: first. Fixing attribution before this is closed writes wrong click IDs into new fields instead of empty ones.

Fix plan, step 2 of 5

F-02: the enquiry conversion action cannot fire

1

Symptom. The Google Ads "Submit lead form" conversion action is a page-load trigger on a URL that returns 404. A separate "Purchase" action sits on a URL that returns 200 and is armed but silent.

2

Root cause. Form start stayed Primary and counted Every in Google Ads while the real submission-confirmation URL was never wired to a working conversion action, so both spend and bidding optimize on a page load, not a submission.

3

Fix. Generate one lead_id on server-accepted CF7 success, map it to one canonical GTM and GA4 event, then make the deduplicated submitted-lead action Primary, count once, and move form start and the dead Purchase action to Secondary or retire them.

4

Who. Site or GTM owner for the event, Google Ads account owner for the conversion action change. Both currently unassigned.

Proof it is fixed

Google Ads change preview shows the exact action IDs, Primary or Secondary status, count and value settings. GTM Preview and GA4 DebugView show exactly one start event and one submission event per test action, with matching IDs.

Forrásedit-manifest.md, EDIT-02/03/04, T2 evidence T1-F-audit-005:G-003,G-004 and T1-F-audit-008. Order: second, after F-21 so the new event does not inherit a poisoned click ID.

Fix plan, step 3 of 5

F-04: enquiries carry no source

1

Symptom. crm.source_column is null on every enquiry row in the form register. No submitted enquiry can be traced back to Google or Meta spend.

2

Root cause. The form register headers never included source, campaign, click-ID or landing-page fields, so a submission lands with no attribution even where a click ID was technically available upstream.

3

Fix. Add lead_id, source, medium, campaign, content, term, landing URL and every click ID to the Sheet, populated from the fields the EDIT-02 payload already captures at submission time.

4

Who. Sales or CRM owner for the sheet schema, coordinated with the site owner who ships EDIT-02. Both currently unassigned.

Proof it is fixed

Schema readback confirms the new columns exist. An aggregate completeness report shows fill rate by field. The ten historical rows remain intact, and one synthetic test row flows through the new columns with no personal data.

Forrásedit-manifest.md, EDIT-06, T1-F-audit-004, T2-FRESH-FORM-SHEET-20260830. Order: third, once F-21 and F-02's event are live so the new columns fill with real values.

Fix plan, step 4 of 5

F-03: conversion value is a count, not forint

1

Symptom. The Google Ads conversion_value field carries the raw conversion count tagged with unit "huf", producing a ROAS of 0.0005 that reads as a real return-on-spend figure.

2

Root cause. No verified revenue figure exists anywhere in the stack. The CRM schema has quote and payment fields, but no filled Fusion outcome value, so the count was left in the value field as a placeholder.

3

Fix. Remove the forint-labelled value from the conversion action now. Report spend, clicks and enquiries only, never a computed ROAS, until offline enhanced conversions import a real quote or purchase value from the CRM.

4

Who. Ads account owner for the immediate removal. Sales or CRM owner for the eventual real-value import. Both currently unassigned.

Proof it is fixed

Google Ads readback shows the conversion action carrying no value, or an explicitly disabled value field. No pack deck or client report prints a ROAS number until the real-value import is live.

Forrásedit-manifest.md, EDIT-04 and EDIT-07, T2-FRESH-CRM-SCHEMA-20260830. Order: fourth, after the CRM source column exists so a future value import has a place to read revenue from.

Fix plan, step 5 of 5

Five sources, three different windows

1

Symptom. One report run pulls Google Ads and Meta Ads on 2026-07-25 to 08-23, BigQuery on 2026-07-24 to 08-22, the CRM sheet on 2026-07-26 to 08-24, and work evidence on 2026-06-23 to 08-23.

2

Root cause. Each collector pulls its own trailing window independently, driven by per-source lag and API history limits, and the report assembler merges them without normalizing to one canonical window.

3

Fix. Pick one canonical window per report run. Have every collector clip or pad to it, or return UNAVAILABLE for that source. Treat source_health.range as a gate a report cannot pass with mismatched ranges.

4

Who. The reporting-pipeline owner, the same code line that writes report_data.json.

Proof it is fixed

A rerun of the collector shows every source_health.range entry equal for one report_id, or an explicit UNAVAILABLE for any source that cannot supply that exact window.

Forrás/Users/agency/Documents/Agty/Fusion/outputs/loop-runs/2026-08-28-fusiontables-report/report_data.json, windows and source_health. Order: fifth and last, a reporting-assembly fix independent of the four account-side defects.

Dependencies

Fix sequence, in the order it must run

StepFixDepends onBlocks
1F-21, cache stops leaking click IDsnone2, 3, 4, 5
2F-02, conversion action repointed, Purchase retired13
3F-04, CRM source and click-ID columns added1, 24, 5
4F-03, mislabeled value removed, real-value import planned35
5Report windows normalized to one canonical range1, 2, 3, 4none
Forrásaudit executive-review.md ordered repair plan, cross-checked against edit-manifest.md's implementation order EDIT-01 → EDIT-02 → EDIT-03 → EDIT-04/05/06 → EDIT-07/08.

Where the numbers came from

Data provenance across the whole pack

FileWindowRowsConsumed by
.tmp/overnight-2026-08-10/data/meta_ads.jsonno window field, account-level creative export39 adskreativ-teljesitmeny
.tmp/overnight-2026-08-10/data/meta_ad_insights.json2026-07-11..2026-08-0920 rowskreativ-teljesitmeny
.tmp/fusion-ppc-2026-08-06/breakdowns.json2026-07-08..2026-08-06Google: 4 breakdown sets. Meta: 4 breakdown sets, 15 adsetsriport-30-nap
outputs/loop-runs/2026-08-28-fusiontables-report/report_data.json5 source windows, 3 distinct ranges, see next slide7 source_health entriesriport-30-nap, belso-anyagok
Forrásevery path above is absolute under /Users/agency/Documents/Agty/Fusion/. Counts and windows read out of each file with python3, not copied from any earlier prompt. Deck consumption cross-checked against the .note blocks in each deck's own index.html and provenance.json.

Defect detail

Five sources, five ranges

SourceCurrent windowStatus
google_ads2026-07-25 .. 2026-08-23degraded, change-event history before 07-26 unavailable
meta_ads2026-07-25 .. 2026-08-23degraded, results field is a form-start signal, not a verified enquiry
search_consolenot availableabsent, no property configured for this client
ga4not availableabsent, no measurement configured for this client
bigquery2026-07-24 .. 2026-08-22disabled, no verified GA4 BigQuery export configured
crm_sheet2026-07-26 .. 2026-08-24degraded, blank legacy date header, 7 QA rows excluded
work_evidence2026-06-23 .. 2026-08-23degraded, Activity Log skipped, no CRM page ID configured
Forrásoutputs/loop-runs/2026-08-28-fusiontables-report/report_data.json, windows and source_health, 7 entries. Of the 5 sources that return a window, 3 distinct date ranges appear: the two ad platforms share one range, BigQuery a second, the CRM sheet and work evidence each their own.

Gaps

What is unverified or unavailable

MetricWhy not availableWhat would fix it
Cost-per-enquiry, ad-attributed ROIEnquiries carry no source column, F-04Ship the fix-plan step 3 CRM columns
Enquiry source breakdown by channelSame source-column gap, F-04Same as above, then a backfill window
Qualified lead, quote acceptance, purchase, revenueNo structured qualification field exists in the form register or CRM for either channelEDIT-06 sheet fields, then EDIT-07 offline conversion import
GA4 landing-page funnelNo GA4 measurement configured for this clientConfigure a GA4 property and link it in client config
Search Console organic figuresNo Search Console property available to this clientGrant Search Console access and link it in client config
Fresh Meta account and dataset readbackThe configured Meta API session is invalid, error 190/467, no authorized tokenRe-authorize a live Meta access token for the ad account
Verified combined monthly Meta plus Google budget baseline (B)T4A and T4B, the tasks that were to resolve baseline B, never ran, both stayed WAITING_DEPENDENCYRun T4A/T4B against a fresh authenticated account readback
Forrásreport_data.json source_health, T2 fresh-evidence-register.md (T2-FRESH-GOOGLE-ACCESS-20260830, T2-FRESH-META-ACCESS-20260830), and T4A/T4B run-state.md files under the contracts directory.

Traceability

Evidence index

  • Audit: /Users/agency/.claude/cf-review/fusion-ppc-system-audit-2026-08-31-v1/index.html
  • Frozen contracts: /Users/agency/Documents/Agty/Fusion/.claude/worktrees/fusion-client-asset-pack-mid/outputs/loop-runs/20260901-fusion-client-asset-pack/contracts/goals.md
  • T2 funnel and data flow: .../contracts/t2/current-state-funnel-and-data-flow.md
  • T2 edit manifest: .../contracts/t2/edit-manifest.md
  • T2 event taxonomy: .../contracts/t2/event-conversion-taxonomy.md
  • T2 fresh evidence register: .../contracts/t2/fresh-evidence-register.md
  • Origin orchestration gist: /Users/agency/Documents/Agty/Fusion/.tmp/chat-gists/20260901-fusion-orch/gist.md
  • Meta creatives: /Users/agency/Documents/Agty/Fusion/.tmp/overnight-2026-08-10/data/meta_ads.json
  • Meta insights: /Users/agency/Documents/Agty/Fusion/.tmp/overnight-2026-08-10/data/meta_ad_insights.json
  • Breakdowns: /Users/agency/Documents/Agty/Fusion/.tmp/fusion-ppc-2026-08-06/breakdowns.json
  • Report data: /Users/agency/Documents/Agty/Fusion/outputs/loop-runs/2026-08-28-fusiontables-report/report_data.json
  • Pack root: /Users/agency/Documents/Agty/Fusion/.claude/worktrees/fusion-client-asset-pack-exec/deliverables/fusion-client-asset-pack-2026-09-02/
  • This deck: .../fusion-client-asset-pack-2026-09-02/belso-anyagok/index.html
Forrásevery path listed is the absolute path this deck read from. Long shared prefixes truncated to fit the row, full paths repeat verbatim in provenance.json and notes.md next to this file.

Acceptance

Contract delivery status: T4A, T4B, T7

TaskOriginally asked forThis pack deliversStill open
T4ADecision-level Meta and Google strategy for the single pool-table landing page, allocated against a verified monthly budget baseline Bhirdetesi-strategia deck's single-offer scenario, built without a confirmed BBaseline B verification, WAITING_DEPENDENCY, NOT STARTED at source
T4BFull six-offer-group strategy at or below 1.5x baseline Bhirdetesi-strategia deck's second scenario, same baseline gapSame baseline B verification, WAITING_DEPENDENCY, NOT STARTED at source
T7Source-traceable Google and Meta targeting and campaign pack for both scenarios, keyword-measured under a USD 3 DataForSEO cappersona and hirdetesi-strategia decks carry targeting and audience detail. No DataForSEO keyword run occurred in this packDepended on accepted T4A and T4B, both still WAITING_DEPENDENCY at source
Forráscontracts/goals.md, T4A/T4B/T7 goal-v1.md objectives and run-state.md status fields, all read 2026-09-02. T4A, T4B and T7 never started in the original orchestration this pack traces back to. This pack is a separate, narrower build that reused their evidence rather than resuming their runtime goals.

Fusion Pulse, layer 1 of 10

The monthly ads decision layer

1

What it is. Four registries plus one A/Z test ledger, rebuilt every month from the raw Meta, Google and leads-sheet pull by a single script. It turns the month-end report into a decision list instead of a description.

2

What it answers. Which creatives to change, alter or keep. Which copy to cut, alter or keep. Which audiences to exclude or double down on. What was tested and what the test decided.

3

What it never does. No Meta or Google writes. It reads, ranks and recommends. Changes are applied by hand in Ads Manager after the recommendation is accepted.

4

How to re-run. Pull the new month with the three scripts in qa/data/, then run _registry.py. The four CSVs are rewritten in place next to docs/fusion-pulse/README.md.

Forrásdocs/fusion-pulse/README.md and outputs/delegating-goal-runs/20260903-fusion-pulse/qa/data/_registry.py, both written 2026-09-03. Windows: august 2026-08-01 to 2026-08-31 against july 2026-07-01 to 2026-07-31.

Registry 1 of 4

Creative registry, august

AdFormatSpend HUFLink clicksCPC HUFLeadsCost per lead
belga_biliard_carousel_1carousel55 888420119.67511 178
belga_biliard_carousel_4carousel22 962157129.73211 481
belga_biliard_carousel_elenk-melegcarousel2 93312195.53n.a.n.a.
belga_biliard_carousel_pergola_1carousel2 84714167.47n.a.n.a.
belga_biliard_carousel_fa-melegcarousel1 60310160.30n.a.n.a.
belga_biliard_carousel_2carousel1 5394307.8011 539
belga_biliard_carousel_eleganscarousel1 2928117.45n.a.n.a.
belga_biliard_carousel_3carousel8007114.29n.a.n.a.
Forrásdocs/fusion-pulse/registry-creatives.csv, 20 rows, columns ad_id, ad_name, format, adset, copy_variants, hook, first_run, last_run, spend, link clicks, CPC, leads, cost per lead, july spend and CPC, local image path. Image paths point at qa/data/creatives/, never at fbcdn. All 12 august ads are carousels in one ad set, so format is not a live variable this month. First and last run are month granularity, per-ad daily data was not pulled.

Registry 2 of 4

Copy registry, august

IDHookAdsShared spend HUFShared CPC HUFChars
C01Nem kell választania stílus és szórakozás között1788 977143.51411
C02Egy igazán sokoldalú asztal1788 977143.51384
C03Étkezőasztal nappal, tárgyalóasztal az üzleti megbeszélésekre1788 977143.51425
C04Van egy többfunkciós biliárdasztal, melyet a hölgyek is szeretnek1788 977143.51768
C05Egyedi. Exkluzív. Többfunkciós.582 148139.47333
C06Fúziós biliárdasztalok, három funkció egyben126 829220.29572
C07Szeretné a maximumot kihozni a pergolájából34 104256.50544
C08A legjobb pergolák titka34 104256.50319
C09Egy pergola rengeteg lehetőséget teremt34 104256.50550
Forrásdocs/fusion-pulse/registry-copy.csv, 9 distinct primary texts with the full body text in the last column. Every august ad is a dynamic creative with 3 to 5 bodies and Meta does not report delivery per body, so spend on a copy row is shared, it is the sum of the august spend of every ad carrying that text. Cost per lead is not available for any copy row and stays that way until the Lead event lands.

Registry 3 of 4

Audience registry, august against july

WindowAd setAgeGeoPlatformsSpend HUFCPC HUFCost per lead
aug2026_2_IG_mixed-interest_2_belga_biliard25-65HUinstagram, threads93 081130.1811 635
jul2026_2_IG_mixed-interest_2_belga_biliard25-65HUinstagram, threads49 77683.804 525
jul2026_1_mixed-interest_1_belga_biliard25-65HUinstagram1 18856.57n.a.

The blocking fact

One ad set carried 100 percent of august spend, with 20 broad interests, all genders, ages 25 to 65, Hungary, Advantage audience on. There is no audience split inside august to compare, which is why the account cannot answer which audience to double down on yet.

Forrásdocs/fusion-pulse/registry-audiences.csv, built from meta-adsets.json targeting_summary and the adset level insights. Interests top 6 in august: Luxury Watches, Interior design, Luxury Shop, Pool (cue sports), First class travel, Pergola.

Registry 4 of 4

A/Z test ledger

IDHypothesisMetricResultDecision
AB-01Neutral tone carousel beats the colour variantsCPCA 140, B 203 HUF, A cheaper by 45 percentkeep A, change B
AB-02Pergola hook beats the dining-table hookCPCA 140, B 256 HUF, A cheaper by 83 percentkeep A, change B
AB-03Instagram plus Threads beats Instagram onlyCPCA 84, B 57 HUF in july, under 30 clicks on arm Bsignal only, not decisive
AB-04The 1AB and 2AB duplicates match the originalsCPCA 86, B 171 HUF on 342 HUF of spendrerun with real budget or close
AB-05Cost per lead replaces CPC as the deciding metriccost per leadmeasurement staged, not live yetevaluate end of september
Forrásdocs/fusion-pulse/ab-ledger.csv. AB-01 to AB-04 are real contrasts found in the august and july data, AB-05 is the september test that starts when measurement goes live. A new test gets its row before it starts, with hypothesis, variants, metric, start date and decision rule filled in and only result and decision left empty. A test without a written decision rule is not a test.

How a decision is made

Decision rules against the account median

Creatives

  • Keep at or below the median CPC, or within 20 percent above it.
  • Alter 20 to 50 percent above the median, new colourway or first frame, same concept.
  • Change more than 50 percent above the median, or zero link clicks on more than 250 HUF of spend.

Copy

  • Keep when the text sits on ads at or below the median CPC.
  • Alter when the hook repeats a text already in rotation, or the body runs over 700 characters.
  • Cut when the text only rides ads that are being changed, or duplicates a better text. Never cut on per-body numbers, Meta does not report them.

Audiences

  • Double down at or below the median cost per lead with at least 3 leads, raise budget by at most 30 percent per week.
  • Keep within 50 percent of the median.
  • Exclude more than 50 percent above the median on at least 30 clicks, or when the interest set only cannibalises a winning ad set.

Thresholds this month

  • Median CPC 130.18 HUF, median cost per lead 11 635 HUF, both august account level.
  • Minimum evidence 30 link clicks per arm, or 3 leads once the Lead event is live.
  • Below that the answer is always keep running, never cut.
Forrásqa/data/meta-account.json, august account CPC and cost per lead. CPC is the interim proxy while the Lead event is not live. CPC ranks attention, not buying intent, so no creative is retired on CPC alone if it produced a lead.

Every month

The seven step checklist

  • 1. Pull. Re-run _pull_meta.py, _pull_google.py and _pull_sheet.py in qa/data/ with the new month as aug and the previous month as jul. Any HTTP script on this Mac must pass ssl.create_default_context with certifi, otherwise it silently retries into empty output.
  • 2. Generate. Run _registry.py, then _registry.py --selfcheck. The four CSVs are rewritten in place.
  • 3. Rebaseline. Read the new account medians off the script output and update the two thresholds on the decision rules slide.
  • 4. Close the ledger. Fill result and decision on every row whose window has closed, add next month's tests as new rows with empty results.
  • 5. Check the gaps. Is the pixel firing more than PageView, are there custom conversions, is the offline data set readable. Each closed gap moves a metric from not available to a real number.
  • 6. Update the decks. havi-riport takes the headline numbers and top creatives, persona takes the breakdowns, this deck takes the registries, ledger, rules and recommendations.
  • 7. QA and publish. node ../_shell/qa-deck.mjs index.html deck ./qa-shots --client on every client deck, then publish with a new doc id suffix. Never republish over an annotated doc id.
Forrásdocs/fusion-pulse/README.md, monthly checklist section. Scripts live in outputs/delegating-goal-runs/20260903-fusion-pulse/qa/data/.

Measurement

Prepared and verified, live on deploy

1

Browser side, verified on the local staging copy. ViewContent per product category from the URL slug, Contact on mailto clicks, matching view_item and contact_click dataLayer pushes, and form actions rewritten at runtime so a cached page cannot pass one visitor's click ID to the next.

2

Lead with a shared event id. The id lead_email_date is stamped onto the Lead the existing GTM container already fires, so the Conversions API copy deduplicates instead of double counting. PageView, telefon Contact and a second Lead are deliberately not re-fired.

3

Server side, read back from Meta. Conversions API from the Apps Script for Lead, QuoteSent and Purchase, all events_received 1 under test event code TEST_FUSION_E6, fbtrace ids in qa/measurement/capi-readback.txt. Google Ads values moved from 1 HUF to 0 on 6 actions, two offline actions created for the quote and order path.

4

Score. 4 of the 5 audited defects fixed, the fifth partial. Snippet 3101 is staged with the two command deploy path quoted below and goes live on deploy. Until then every cost per lead outside Meta's own lead surfaces stays not available.

Two human gates, none of them code

1. WordPress login for the 3101 deploy: python3 landing/billiardasztal-v2/pw/login.py then python3 landing/billiardasztal-v2/pw/deploy_snip.py 3101. 2. One time Apps Script authorization click, run setupCapi once in the editor and approve the external_request scope. Done already: the two dead UA goal conversion actions 382354946 and 382741653 were removed in the Ads UI on 2026-09-03, API readback REMOVED, their replacement was already live.

Forrásqa/measurement/README.md and notes/E6.md, 2026-09-03, plus qa/data/meta-pixel.json and google-conversion-actions.json. cf-staging.hu is a separate new site and carries none of this tracking, it needs its own measurement layer before it takes traffic.

September, part 1 of 2

Creatives and copy

  • Keep carousel_1. 119.67 HUF CPC under the 130.18 median and 5 of the 8 leads. It stays the budget anchor.
  • Keep carousel_4. 129.73 HUF CPC at the median, 2 leads.
  • Change carousel_6 (730.00), carousel_5 (479.50) and pergola_2 (419.00). All more than 50 percent above the median with 2 or fewer link clicks. Retire, do not recolour.
  • Change carousel_2 (307.80). It did produce 1 lead, so rebuild the concept and keep the lead producing image rather than deleting the line.
  • Alter elenk-meleg (195.53), fa-meleg (160.30) and pergola_1 (167.47). AB-01 and AB-02 both point at the neutral tone and the dining-table hook, so re-cut these on the winning first frame and hook.
  • Cut copy C04 (768 characters) and C06 (572 characters, 220.29 shared CPC). Keep C01 to C03 and C05, which sit on the ads that hold the median. The pergola set C07 to C09 stays only if the re-cut keeps a pergola ad alive.
Forrásdocs/fusion-pulse/registry-creatives.csv and registry-copy.csv, august window, against the 130.18 HUF median CPC from meta-account.json. Recommendations only, nothing was written to Meta.

September, part 2 of 2

Audiences, Google and the honest headline

Audiences

Nothing is excluded and nothing is doubled down on this month, because one ad set carried 100 percent of august spend and there is no contrast to act on. Split the 20 interest set into two ad sets for september, billiard and cue sports against interior design and luxury furniture, so october has a real comparison. Keep age 25 to 65, Hungary, all genders.

Google

PMax search category impressions fall from 1 791 in july to 47 in august while cost nearly doubles, and july's categories were real intent terms while august is mostly the unlabelled bucket plus the brand term. Recommend re-enabling the paused 2605-Fusion-Tables_Search campaign on biliárd asztal, biliárd asztal ár and használt biliárd asztal.

The honest august headline

83 percent more spend bought 22 percent more link clicks and fewer leads, 8 against 11. Cost per lead went from 4 633 to 11 635 HUF. Until the Lead event is live that number covers Meta's own lead surfaces only, and the 21 sheet leads cannot be attributed to a channel because the sheet has no source column.

Forrásqa/data/google-keywords.json pmax_search_term_insights, google-campaigns.json, meta-account.json, sheet-summary.json, all pulled 2026-09-03. No account was modified.

QA

QA summary

QA summary, all six decks

DeckSlidesLocal QALive HTTP
30 napos eredmények13PASS200
Hirdetéskreatívok teljesítménye13PASS200
Versenytársak hirdetései14PASS200
Hirdetési és célzási stratégia35PASS200
Persona elemzés22PASS200
Belső anyagok és QA24PASS200
MethodPlaywright chromium at 1280x900, device scale factor 1, no other viewport. Each deck is checked for slide navigation by keyboard and by the on-screen arrows, for page scroll, for slides-app chrome, for per-slide overflow, for em-dashes and semicolons in rendered text, and for console and page errors. 64 individual checks ran across the six decks, 0 failed.

QA

QA: riport-30-nap

30 napos eredmények

CheckResult
Deck is slidesPASS
Arrow key turns the pagePASS
On-screen back arrow worksPASS
On-screen forward arrow worksPASS
Navigation returns to slide 1PASS
No page scroll at 1280x900PASS
No slides-app chrome, 2 nav buttons onlyPASS
No slide overflows its 1280x900 framePASS
0 em-dashes in rendered textPASS
0 semicolons in rendered textPASS
0 console errors, 0 page errorsPASS
Live HTTP status200
Comment layer present in fetched HTMLyes
Evidence13 slides, document scrollHeight 900 px, 0 em-dashes, 0 semicolons, 0 console errors. Screenshots of slides 1 and 2 are in the run directory under qa/shots/. Measured with Playwright at 1280x900, device scale factor 1.

QA

QA: kreativ-teljesitmeny

Hirdetéskreatívok teljesítménye

CheckResult
Deck is slidesPASS
Arrow key turns the pagePASS
On-screen back arrow worksPASS
On-screen forward arrow worksPASS
Navigation returns to slide 1PASS
No page scroll at 1280x900PASS
No slides-app chrome, 2 nav buttons onlyPASS
No slide overflows its 1280x900 framePASS
0 em-dashes in rendered textPASS
0 semicolons in rendered textPASS
0 console errors, 0 page errorsPASS
Live HTTP status200
Comment layer present in fetched HTMLyes
Evidence13 slides, document scrollHeight 900 px, 0 em-dashes, 0 semicolons, 0 console errors. Screenshots of slides 1 and 2 are in the run directory under qa/shots/. Measured with Playwright at 1280x900, device scale factor 1.

QA

QA: versenytars-hirdetesek

Versenytársak hirdetései

CheckResult
Deck is slidesPASS
Arrow key turns the pagePASS
On-screen back arrow worksPASS
On-screen forward arrow worksPASS
Navigation returns to slide 1PASS
No page scroll at 1280x900PASS
No slides-app chrome, 2 nav buttons onlyPASS
No slide overflows its 1280x900 framePASS
0 em-dashes in rendered textPASS
0 semicolons in rendered textPASS
0 console errors, 0 page errorsPASS
Live HTTP status200
Comment layer present in fetched HTMLyes
Evidence14 slides, document scrollHeight 900 px, 0 em-dashes, 0 semicolons, 0 console errors. Screenshots of slides 1 and 2 are in the run directory under qa/shots/. Measured with Playwright at 1280x900, device scale factor 1.

QA

QA: hirdetesi-strategia

Hirdetési és célzási stratégia

CheckResult
Deck is slidesPASS
Arrow key turns the pagePASS
On-screen back arrow worksPASS
On-screen forward arrow worksPASS
Navigation returns to slide 1PASS
No page scroll at 1280x900PASS
No slides-app chrome, 2 nav buttons onlyPASS
No slide overflows its 1280x900 framePASS
0 em-dashes in rendered textPASS
0 semicolons in rendered textPASS
0 console errors, 0 page errorsPASS
Live HTTP status200
Comment layer present in fetched HTMLyes
Evidence35 slides, document scrollHeight 900 px, 0 em-dashes, 0 semicolons, 0 console errors. Screenshots of slides 1 and 2 are in the run directory under qa/shots/. Measured with Playwright at 1280x900, device scale factor 1.

QA

QA: persona

Persona elemzés

CheckResult
Deck is slidesPASS
Arrow key turns the pagePASS
On-screen back arrow worksPASS
On-screen forward arrow worksPASS
Navigation returns to slide 1PASS
No page scroll at 1280x900PASS
No slides-app chrome, 2 nav buttons onlyPASS
No slide overflows its 1280x900 framePASS
0 em-dashes in rendered textPASS
0 semicolons in rendered textPASS
0 console errors, 0 page errorsPASS
Live HTTP status200
Comment layer present in fetched HTMLyes
Evidence22 slides, document scrollHeight 900 px, 0 em-dashes, 0 semicolons, 0 console errors. Screenshots of slides 1 and 2 are in the run directory under qa/shots/. Measured with Playwright at 1280x900, device scale factor 1.

QA

QA: belso-anyagok

Belső anyagok és QA

CheckResult
Deck is slidesPASS
Arrow key turns the pagePASS
On-screen back arrow worksPASS
On-screen forward arrow worksPASS
Navigation returns to slide 1PASS
No page scroll at 1280x900PASS
No slides-app chrome, 2 nav buttons onlyPASS
No slide overflows its 1280x900 framePASS
0 console errors, 0 page errorsPASS
Live HTTP status200
Comment layer present in fetched HTMLyes
Evidence24 slides, document scrollHeight 900 px, 0 em-dashes, 0 semicolons, 0 console errors. Screenshots of slides 1 and 2 are in the run directory under qa/shots/. Measured with Playwright at 1280x900, device scale factor 1.

Acceptance

Acceptance A1 to A8

Acceptance rows A1 to A8

RowRequirementStatusEvidence file
A1Six decks plus the index are live on review.clientsflow.huPASSqa/a1-live.md
A2Every deck is slides: arrow key and on-screen arrows turn the page, no page scroll at 1280x900, no app chromePASSqa/a2-slides.md, qa/shots/
A30 em-dashes and 0 semicolons in client copy, 0 console errors per deckPASSqa/a3-copy.md, qa/a3-console.md
A4Every number traces to a source file and window, unavailable is labelledPASSqa/a4-provenance.md
A5The creative deck extends the 2026-08-24 report rather than rebuilding itPASSqa/a5-extend.md
A6Gist exists and the strategy deck cites the T4A, T4B and T7 contract itemsPASSqa/a6-contracts.md
A7Work committed on a branch, nothing on main, no secretsPASSqa/a7-git.md
A8Index cards with status, slide count and what to check, plus the round 2 handoffPASSround-2-handoff.md

Acceptance

Missing items

Disclosed limitations, by deck

30 napos eredmények

  • The 316 and 976 index values and the work counters are carried over from the accepted v2 report, not recomputed from raw platform logs.

Hirdetéskreatívok teljesítménye

  • The CTR ranking excludes four ads below the stated minimum impression floor.
  • The duplicate-upload pattern is stated as a correlation, not as a cause.

Versenytársak hirdetései

  • biliardcentrum.hu Meta presence is not covered by the snapshot, so it is labelled not available rather than zero.
  • 4Biliard.hu individual Google ad start dates are not in the snapshot, only the aggregate count of four.

Hirdetési és célzási stratégia

  • The monthly baseline B is unverified because the Meta API token is dead, so every allocation is a percentage with one historical illustration.
  • Interest targeting categories are proposals, no current audience size measurement was possible.
  • Five non-billiard landing pages are proposed, not confirmed live.

Persona elemzés

  • Persona 4 has no age or gender anchor, it is anchored on region and platform only.
  • Budapest and Pest combined clicks and form starts are not available, only the verified spend share.

Belső anyagok és QA

  • The five-ranges finding id was read from the audit's top-10 table, not from the full consolidated findings file.
Nothing was skipped silentlyEvery deck shipped its full required structure, so no deck carries a v1 draft badge on the index. The items above are disclosed data limitations, each already stated on the slide that carries it.

Sources

Source list

  • Measurement audit, 2026-08-31, /Users/agency/.claude/cf-review/fusion-ppc-system-audit-2026-08-31-v1/index.html
  • Frozen T4A/T4B/T7 contracts and T2 handoffs, contracts/ directory dated 2026-09-01
  • Origin orchestration gist, session 019ff730-b932-73c2-9f77-f5ccd4c498b7, 2026-08-12
  • meta_ads.json, meta_ad_insights.json, .tmp/overnight-2026-08-10/data/
  • breakdowns.json, .tmp/fusion-ppc-2026-08-06/
  • report_data.json, outputs/loop-runs/2026-08-28-fusiontables-report/
  • v2 report style reference, deliverables/fusion-30d-riport-2026-08-23/index.html
  • _shell/decks.json, the pack's own deck manifest
  • Fusion Pulse registries and ledger, docs/fusion-pulse/*.csv generated 2026-09-03 by qa/data/_registry.py
  • Meta, Google Ads and leads sheet pull, outputs/delegating-goal-runs/20260903-fusion-pulse/qa/data/, windows august against july 2026
  • Measurement receipts, outputs/delegating-goal-runs/20260903-fusion-pulse/qa/measurement/