The Insights Platform enables Brent to identify, investigate, and explain Google Ads campaign impact with sufficient confidence and clarity that (a) it becomes his primary tool for optimisation decisions across active Shopify clients, and (b) every shared finding stands on its own as a structured story with a clear takeaway.
Each phase has its own task list. Quality scores show against completed tasks (composite from QUALITY_LOG.md).
Rover Pet Products — daily ingestion, modelling, dashboard
Prove the platform end-to-end with one client. Ingest Google Ads + Shopify daily into BigQuery, model the data layer in dbt, surface the operator dashboard. Phase 1 closes when 7 days of unattended refresh succeeds and the Phase Validator passes.
Second client + signal/anomaly surfacing
Onboard a second client (likely Sage x Clare) and refactor the data layer for per-client templating. Build the detection engine that turns search-term and product-mix signals into operator-facing flags.
CausalPy + Shopify gclid → campaign linking
Add the causal investigation layer (CausalPy on Cloud Run for marginal ROI / counterfactual analysis) and wire gclid-based campaign attribution from the Shopify storefront.
Productisation + onboarding playbook
No code work. Pricing, onboarding playbook, client success. Commercial readiness only — closure at Brent's discretion.
15 ingestion sources monitored. Updated every 5 minutes from `_meta.freshness_check` — refresh the page to re-query.
Each entry below is closed to debate. New evidence can re-open one, but a preference or aesthetic argument cannot.
All Phase 1 tasks build against Rover. Second-client onboarding is a Phase 2 milestone.
Single-client proof beats multi-client scaffolding before the platform itself is proven.
Brand is 'Marketing with Brent'. Subdomains insights.brentneale.au + insights-progress.brentneale.au.
References to 'Sharpe Media' or marketingwithbrent.com in original scoping are deprecated.
BigQuery (au-southeast1), dbt Core via GitHub Actions (not dbt Cloud), Next.js 16 / Tailwind v4 on Vercel, Cloud Run for custom jobs + causal engine, Airbyte Cloud for Shopify.
Cost-controlled, low-ops, and matches Brent's existing toolchain. Each choice rejects a heavier alternative (Snowflake, dbt Cloud, Airflow, Fivetran).
Inter for display, Manrope for body, JetBrains Mono for metadata / numbers.
Inter + Manrope cover the brand spec; JetBrains Mono added for tabular numerals where proportional digits would look amateurish.
No Slack notifications. Token-expiry alerts via plain-text email.
Slack adds infrastructure with no signal Brent isn't already getting via email.
No HTML email templates. Plain text only.
Internal-facing platform; HTML templates need render testing across mail clients for zero functional gain.
Anomaly flags surface in the dashboard. No external pings (email / Slack / push) for flag events.
External pings would create notification fatigue and bias Brent toward dismissing rather than engaging.
No interactive walkthrough or 'what's new' modal. Empty states + labels do the explaining.
Brent built it; clients are onboarded via kickoff call. Tour infrastructure costs days for a feature used once per user.
#ff3f00 used only for large text (24px+) or bold weights at smaller sizes. Never for body text or extended reading.
Contrast ratio against white is borderline (~4:1). WCAG AA requires 4.5:1 for normal text.
Custom GAQL no longer pulls search_term_view. Staging model + raw table dropped.
~2% of strategic insight relative to campaign / category / cohort marts. Platform's purpose is strategic decision support, not operational keyword management.
A bounded scope is what makes the in-scope work tractable. Each item below is a rejection — not a backlog candidate.
Bid changes, negative keyword management, and tactical campaign hygiene live in Google Ads (or Optmyzr / Adalysis). The platform surfaces strategic decisions; the operator executes in Google Ads.
Daily refresh cadence by design. Real-time adds infrastructure cost without changing the underlying decisions (which are weekly-to-monthly in scope).
Negative keyword discovery and n-gram analysis are tactical workflows that don't drive strategic decisions. Removed from the data layer 2026-04-29.
Operator-facing only. No public landing page describing the platform's capabilities to non-clients. robots noindex, nofollow.
Email + in-dashboard only. Notification proliferation creates fatigue without improving signal.
Plain text only. HTML email infrastructure costs days for zero functional value.
Empty states and labels do the explaining. Operator built the tool; clients are onboarded verbally.
Google Ads + Shopify only. Meta, TikTok, Klaviyo etc. evaluated for Phase 2+ when the platform's strategic value is proven on a single demand-source pair.
Marketing with Brent · Insights Platform · Internal build status
source: STATE.md / QUALITY_LOG.md