Progress — 2026-06-19: Google Ads auth fully set up & verified end-to-end. Developer token (Explorer access — Basic access is not needed for our read-only reporting), OAuth client ID/secret + refresh token, MCC login-customer-id (8090836637) + per-school customer IDs, and the Google Ads API enabled in the GCP project are all in Vercel. A one-off smoke test confirmed the full chain (refresh token → access token → developer-token read of 18 accounts). Remaining for Google Ads = the integration code only. GA4 (update 2026-06-21): partially set up — NOT yet working. Service account ga4-reader@… created in GCP project 773704825353 + key downloaded; added as Viewer on Lauralton's property only (Janet isn't admin on the other 3 schools' GA4 properties). Blocked on a Vercel paste mishap (the GA4_SERVICE_ACCOUNT_KEY value got set to the key filename instead of its base64) and the Analytics Data API enablement was never confirmed. Meta: still just needs a 2-min confirm it's a non-expiring System User token. → Full checklist under Open auth tasks at the bottom.

🧭 What this is. The plan for the next phase of dashboard work, written so it can be handed to the PM/EA and worked through with Claude Code one piece at a time. Three workstreams: (1) fix the cadence/usability flow, (2) move off Coefficient sheets onto direct ad-platform APIs, (3) clear the bug backlog. Last mapped 2026-06-19.

The three workstreams at a glance

# Workstream Goal Blocker risk Owner of the hard part
1 Cadence & usability Home view shows a real weekly schedule; problems surface loudly Low — no external access needed PM/EA + Claude Code
2 Off Coefficient → direct APIs Reliable auto-pull from Meta, Google Ads, GA4; retire the sheets Medium–High — gated on credential/approval setup Janet (auth)
3 Bug backlog Catalog and clear known defects Low PM/EA + Claude Code

Recommended sequence: Start Workstream 1 (high daily impact, nothing blocks it) and the Workstream 3 triage immediately. Kick off the Workstream 2 auth provisioning in parallel. Update: Google Ads auth is already done & verified — Explorer access covers our read-only reporting, so no Basic-access application was needed and the feared long pole never applied. GA4 is partway there; Meta just needs a token check. Migrate channels as their code is wired: Meta first (almost free), GA4 second, Google Ads last.


Workstream 1 — Cadence & usability redesign

The problem today

The home view has a This Week / Next Week toggle that buckets every school into one of two groups. It's lossy: anything not due this week is dumped into "Next Week" even if it's actually weeks out, and there's no place for a school that isn't ready to be worked. Bugs and stale data can hide.

The locked model — three zones, problems-first

The new home view has three stacked zones:

  1. 🔴 Needs attention (top, red). The loud zone. Two kinds of cards land here:
  2. 📅 Dated week columns (middle). Rolling, real calendar weeks: This week (Jun 23–29), Next week (Jun 30–Jul 6), Week of Jul 7, … A school lands in the column its due date falls in. Every Monday the columns shift left automatically — no manual moving. When a report is marked sent, it jumps forward to the column for its next bi-weekly cycle (due + 14 days) instead of lingering.
  3. 📥 Holding — not scheduled yet (bottom, neutral). Quiet parking for schools that can't legitimately claim a week: onboarding (no first period set) or paused (contract on hold). A school leaves holding automatically once it has a period set, isn't paused, and its data is fresh.

Behavior rules (for whoever builds it)