Fusion Tables PPC system — architecture review

2026-08-30 · branch round-13-takeover · review and planning only, no fixes implemented · 5 lanes · 30 findings · USD 0 spent · no account, campaign, budget or live page was changed

The system you commissioned does not exist yet, and the part that does exist measures the wrong thing. Of eight build tasks, one finished and seven did not: the run died in silence on 2026-08-30 at 12:33 and nothing was watching. The dashboard, both PPC strategies, the client report, the owner action review and the targeting pack were never produced.

Separately and more importantly, the measurement underneath them would not have answered your question even if the build had finished. Both platforms optimise on a form start rather than a submitted enquiry; the conversion action for a real enquiry points at a 404; enquiries carry no source column so they cannot be traced to any ad; the dimensions you asked to compare are not collected at all; and a cached page has been serving one visitor's Google click ID to the next visitor since July.

Recommendation: do not resume the stalled build. Fix five measurement defects in a specific order, then build a much smaller dashboard directly.

46 / 49Google conversions that are a form start, not an enquiry
404HTTP status of the URL the enquiry conversion fires on
0 of 16of Matt's substantive requirements delivered by this system
2.5 / 14funnel steps both measured and attributable
p = 0.263significance of the report's headline "+85.7% enquiries"
~28 moto detect a +30% Meta creative difference at this volume

Your five questions

QuestionAnswerThe decisive fact
Logically correct?No crm.source_column is null. Everything upstream of the enquiry is measured; the enquiry itself lands in a spreadsheet with no way back to the spend that produced it. The revenue axis is the conversion count relabelled as forint. Five sources cover five different date windows.
Measurable end to end?No, ~18% 46 of 49 Google conversions and all 14 Meta results are vhk_form_start. The Submit lead form action is a page-load trigger on a URL returning 404, so it cannot fire. A separate action named Purchase sits on a URL returning 200 and has not fired yet.
Efficient?No 4,010 lines across 59 files, of which 716 are evidence. Five files disagree about whether one task is running. Seven idle worktrees hold 10.5 GB for zero commits of work.
Understandable?Report yes, screens no report.md refuses to overclaim and is the best thing here. The Meta dashboard turns "failed to load" into "no creatives match these filters" after one click on a column header.
Useful for budget?Not yet No ad-group, creative, placement, device, audience or demographic dimension exists anywhere in the data. One active Google campaign, one Meta campaign. At 14 form starts a month, a creative ranking ranks noise.

The ten findings that drive the recommendation

Thirty findings in total. Every Critical and High row carries decisive evidence and a decisive retest in consolidated-findings.md.

IDSeverityFinding
F-21CriticalA cached page serves a previous visitor's UTM and Google click ID inside three live form actions. Found and graded P0 on 2026-07-30, never fixed. This poisons the one repair (offline conversions) that would unlock revenue measurement, which is why it must be fixed first.
F-01CriticalBoth platforms optimise on a form start, not an enquiry. 100% of Google spend runs through one PMax campaign on smart bidding trained on that proxy, at a signal ~3.8x inflated against the 13 recorded enquiries.
F-02CriticalThe Submit lead form conversion action points at a 404 and is structurally incapable of firing. A second action named Purchase points at a live 200 and is an armed trap.
F-04CriticalEnquiries cannot be attributed to any traffic source. This is the single break that makes "where should the budget go" unanswerable, and it is a spreadsheet change, not a software project.
F-05CriticalThe dimensions Matt asked to compare — copies, creatives, placements, targeting, demographics — are never collected. A dashboard built on today's data renders one-row tables.
F-22CriticalThree surfaces convert an honest failure into confident-looking emptiness. One click on a sort header replaces "Meta insights failed to load" with "No creatives match these filters — 0 of 0 rows".
F-03CriticalA forint-labelled revenue axis exists with no revenue behind it: conversion_value carries the conversion count under unit: "huf", feeding a ROAS of 0.0005. Nothing prints it yet; the requested dashboard is exactly the surface that would.
F-07HighThe comparison cannot reach significance at this volume. The report's own headline "+85.7% enquiries" is p = 0.263 and carries no caveat.
F-08HighChildren were launched from a branch missing all their inputs. 41 files, including everything the dashboard and report tasks needed, existed only on a different branch. The launcher validates eleven things and none of them is whether the inputs are present.
F-10HighA stalled run reports itself ACTIVE and nothing was watching. Every task is stamped "supervised": true while the supervisor is switched off by a flag file and no scheduled job runs it.

What to do, in this order

Order matters more than usual here: done out of sequence, these make the account worse rather than better.

  1. Fix the page cache so it stops serving a previous visitor's Google click ID. Adding a source column while the cache is poisoned writes wrong IDs instead of no IDs, turning a known gap into a confident error.
  2. Repoint the enquiry conversion at a URL that exists, make it primary, demote the form start, retire the Purchase action.
  3. Add source, gclid_or_fbclid, landing_page columns to the enquiry sheet.
  4. Collect the dimensions actually asked for: Meta creative, placement, age and gender (all reported today); Google asset-group, search theme, device.
  5. Then build the dashboard — directly, not through an eight-task chain — with a minimum-volume rule that refuses to show a rate for any segment below threshold.

A four-step Meta funnel with last-30 versus preceding-30 is constructible today with zero new collection: impressions 63,461 → clicks 825 → link clicks 727 → landing-page views 626 → form starts 14, each with its prior-period twin already in the data. The rendering is missing, not the measurement.

Three decisions only Matt can make

What is already good and must not be lost

report.md refuses to overclaim
Labels the 49 conversions a platform signal, not verified enquiries and not revenue. Excludes 7 QA test rows. Reports unavailable sources as unavailable, never as zero.
The T1 evidence corpus is intact
716 lines, verified byte-identical to its accepted form. Every failure in this review is in the machinery around it, not in it.
The KPC evidence ledger
1,524 fields, each with a state, a query hash and a reconciliation status. A working implementation of the discipline the main pipeline lacks.
The launcher verifies its model pins
Reads them back out of the runtime and fails on mismatch. The gap is inputs, not rigour.

The review corpus

executive-review.md
Start here. The five questions answered in full, what happened to the build, and the ordered repair plan.
consolidated-findings.md
All 30 findings, deduplicated across lanes, each with severity, evidence, smallest safe fix and decisive retest.
enhance-simplify-align-plan.md
The prioritised plan. Six groups plus the P0 addendum that re-sequenced the repair order after lanes 1 and 2 landed.
acceptance-ledger.md
REV-01..REV-15 reconciled by the orchestrator against the artifacts, not against the lanes' claims about them.
requirements-traceability.md
Lane 1. 51 rows tracing every requirement from Matt's verbatim words to the artifact that does or does not satisfy it.
user-flow-matrix.md
Lane 1. All 16 flows, 66 steps, expected versus actual with evidence and a decisive retest per step.
browser-test-ledger.md
Lane 2. 10 targets exercised live at 1280×900 DSF1, 71 graded interactions, 38 pass / 33 fail.
measurement-and-trigger-ledger.md
Lane 3. 38 measurement contracts and 7 orchestration triggers, with the stall root cause established from timestamps.
matt-pocock-code-review.md
Lane 4. Standards and Spec passes, kept separate, with fixed-point receipts.
ponytail-audit.md
Lane 4. Complexity audit. −2,457 lines, −34 of 49 control files, −10.5 GB, and 0 of 12 evidence files removed.
outside-the-box-review.md
Lane 5. 25 business and operating-model challenges, including the volume maths that changed the recommendation.
source-and-state-register.md
What exists, what is UNAVAILABLE and why, with reproduction commands and the two corrections the orchestrator made to its own ground truth.
access-ledger.md
12 access probes, all read-only. No credentials read, none used, none required.
run-receipt.json
Machine-readable receipt: goal checksum, lane models, commits, validators, limitations, remaining human actions.
evidence/lane2/
36 screenshots and 17 JSON receipts from the live browser pass.