What it is
The dashboard aggregates across all workspaces an account can see: missed posts, pending approvals, disconnected accounts, comments waiting for a reply, then performance KPIs with an impressions chart, Google Analytics, the content pipeline and top posts.
Widgets are role-scoped (a client-role member never sees owner widgets), can be shown, hidden and reordered per member, and the pipeline stages open the matching calendar view. A sample-data mode lets a new workspace explore the layout before its own data lands.
What I built
Movable, role-scoped widgets
A Customize panel to show, hide and reorder sections, persisted per member; widget visibility derived from the member's role on the server, not the client.
Cross-workspace aggregation
Needs Attention and Performance computed across every workspace the member can open, with a workspace chooser to narrow down.
Sample data mode
A toggle that swaps every widget's source for a static sample template without touching the demo workspace, with flags reset on account switch.
Scheduled report emails
Analytics and Social Listening reports delivered by email on a schedule, rendered by the Lambda report generator, with history and resend.
Limits that follow the plan
Per-plan schedule limits that pause automatically on downgrade and resume on upgrade; a failed plan read never permanently disables a schedule.
Theme and QA fixes
Themed customize panel icons, trial strip, date-range picker, pipeline-to-calendar deep links.

What changed
One screen for every client
Agencies start the day on one page instead of opening each workspace.
Nothing slips
Missed posts, approvals and disconnected accounts surface automatically.
Reports on a schedule
PDFs arrive by email; limits follow the plan.
Fail safe
A plan-service outage pauses, it never deletes.
Want the rest of the work?
Switch, analytics, sentiment, Brand Dashboard, MCP and n8n.
