SGA Gen4 Social MCP — Product Roadmap

From integration to per-practice operating surface across the organic channel stack.

Owner: Dakota Milner Stack: sga-intranet (BE Fastify + Drizzle + Postgres; FE React + Vite) Status: Phase 1 + 2 shipped Date: 2026-05-18

TL;DR. We just unlocked 30 Gen4 (PromoRepublic) tools from the original 6 by re-OAuthing with the right scopes. The warehouse already lands 83 practice locations and the network-wide rollups every night. This roadmap turns that into a per-practice and per-region operating surface across five phases over about seven weeks.

Per-practice data is the rate-limiting step. Every downstream phase depends on Phase 3 closing the practice ↔ Gen4 location bridge.

Current state — what's already live

30
Gen4 tools available
83
Locations in warehouse
260
SGA practices total
32%
Gen4 coverage

Phase 1 + 2 · Foundation

ELT warehouse, persistent OAuth, network rollup
Shipped

Phase 3 — Practice ↔ Gen4 bridge Now

1 week · the unblock

Every Gen4 datapoint maps to an SGA practice
Critical path

Goal. Close the location bridge so every single-location tool call lands keyed to a known SGA practice. This is the foundation for every downstream phase.

Work

Exit criteria

Phase 4 — Practice-level surface Next

1.5 weeks · the headline outcome

Per-practice Organic Channels view
Champions + HQ ops

Goal. Click any practice → see its organic performance at a glance. Audience, posts, GBP, reviews, reputation. Plain answers to "how are we doing?"

Page

/marketing/practices/:practiceId — add an "Organic Channels" section between existing KPI tiles and the campaign breakdown.

Cards

CardTool sourceWhat you see
Social Performanceget_social_performance_single_locationAudience by network with sparkline + delta. Engagement total + breakdown.
Content Performanceget_social_content_performance_single_locationPosts published + top performing post with thumbnail + publishing rhythm.
Google Business Profileget_gbp_performance_single_locationViews, calls, direction requests, photo views.
Local Visibilityget_local_visibility_single_locationAverage ranking, ranked keywords count, search engines visible on.
Review Performanceget_review_performance_single_locationAverage rating, review velocity, recent reviews list.
Reputationget_reputation_insights_single_locationSentiment trend, top topics, alerts.

Empty state

Practice without Gen4 mapping shows a "This practice doesn't have Gen4 coverage. Request setup →" CTA that links to the admin map page.

Exit criteria

Phase 5 — Network intelligence Next

1 week · pattern spotting

Cross-network rollups + outlier detection
HQ marketing leadership

Goal. Marketing leadership can answer "which practices need a call this week" in under 2 minutes.

Page

Upgrade existing /marketing/gen4 from "stats wall" to "decision surface."

Sections

Phase 6 — Operations tools Later

1.5 weeks · Korrine's command center

Central inbox + triage queues
Korrine + social ops team

Goal. Korrine stops opening individual Gen4 dashboards per practice.

Page

New /tasks-app/social-ops — lives next to standup + sprints in the tasks shell.

Sections

SectionTool sourceAction
Centralized inboxget_inbox_conversationsAll DMs across all locations, sort by unread
Failed posts triageget_failed_posts_all_locationsQueue per practice with error + retry/dismiss
Low publishing alertsget_low_publishing_locationsList of practices below threshold posts/week
Scheduled posts calendarget_scheduled_posts_all_locationsCross-practice month view, filter by network

Phase 7 — AI insights + automation Later

2 weeks · data becomes decisions

Alerts, recommendations, weekly digests
Network-wide quality of life

Sequencing + timing

PhaseLengthCumulativeDepends on
3 · Practice bridge1 weekWeek 1Phase 1+2 shipped
4 · Practice surface1.5 weeksWeek 2.5Phase 3
5 · Network intelligence1 weekWeek 3.5Phase 4 (uses per-practice data)
6 · Ops tools1.5 weeksWeek 5Phase 3 (location mapping)
7 · AI insights2 weeksWeek 7Phases 3 + 4 + 5

Phases 5 and 6 can run in parallel once Phase 4 is shipped, shaving ~1 week if needed.

Open questions + risks

Coverage gap. 177 of 260 practices have no Gen4 footprint. Either backfill mappings via Gen4 onboarding ops (Korrine), or accept "we only know about the 83." Need a call before Phase 4 ships, since the empty-state UX depends on the answer.
Rate limits. Nightly per-practice sync = ~500 calls. Gen4 docs don't publish a limit. Phase 3 should include a small canary run (~10 practices) before unleashing all 83.
Token rotation guard. Phase 2 fixed the rotation-loss bug, but if Gen4 ever revokes a client_id, the system is dead until a human re-OAuths. Long-term we should add a healthcheck endpoint that alerts on invalid_grant.
Reputation/review tools. Returned Access Denied at Phase 1 scopes. The new scope set should fix this; Phase 3 will confirm. If still blocked, escalate to Gen4 support or fall back to direct Google Business Profile API for reviews.
Warehouse migration. If we eventually move Coupler.io off the bench and use it as the analytics warehouse, this whole snapshot table strategy changes. Decide before Phase 7 (where insights logic gets heavy).

Out of scope

Recommended starting point

Begin Phase 3 immediately. It's the rate-limiting step for every downstream phase, and the work is mechanical (matcher + admin page + cron). Ship a canary sync before committing the full nightly cron.