Multi-Organization Performance Reporting Platform
I turned a manually assembled marketing scorecard into a private, multi-organization KPI reporting platform. Teams can review source-backed metrics, goals, and trends in their own company workspace, with hourly refreshes and a trusted view across four regions.
From scattered reports to a working view.
This simplified screen shows how the team can move from a metric to its goal, comparison, and trend. Display data is illustrative.
Illustrative interface study. Values and trend shapes shown here are not actual client results.
The problem
The marketing team was manually collecting numbers from commerce, advertising, email, analytics, search, customer support, and site performance platforms. Updating the scorecard took roughly 2–4 hours per person each week, before the extra work of pulling comparisons or making charts. Importing data competed with the time needed to interpret it.
The team also needed to understand performance by market and at different time scales. A single monthly total could not answer a question about a daily shift, quarterly trend, or regional goal.
Beyond saving time, the platform provides trusted metrics and history that help the team connect decisions with outcomes.
What I owned
I designed and built the React and Next.js reporting interface, server-side refresh routes, and custom MCP connections. I maintained the connections in GitHub and deployed them on Vercel through a connected workflow. The hourly schedule and member-initiated refresh use the same validation flow, so the team sees one consistent definition of a trusted update. I also built the organization and user-management experience around the reporting workspace.
I carried the original scorecard into a system for goals, period comparisons, historical trends, and regional analysis. Google sign-in and membership-based access protect each company workspace; Supabase and PostgreSQL store versioned metric snapshots behind authenticated access.
How the refresh works
Server-side MCP connections retrieve canonical commerce and analytics metrics.
Scheduled and on demand requests run the same regional checks and reconciliation.
A complete four-region run becomes the latest readable version; incomplete attempts cannot displace it.
The current-week trusted refresh uses protected Shopify Admin, GA4, and Triple Whale routes. The collection layer runs server-side on Vercel; the Next.js API and Supabase database serve authenticated KPI dashboard views.
Custom MCP connections I built
Shopify Admin · Triple Whale · Amazon Selling Partner API · Inventory Planner
Meta Ads · Google Ads · Amazon Ads · TikTok Ads
GA4 · Google Search Console · Ahrefs · PageSpeed Insights · CrUX · Microsoft Clarity · Mobile Audit
Klaviyo · Reamaze
Reliability built in
A weekly market snapshot follows a fixed 34-metric contract. Daily values sit alongside the canonical weekly values, with explicit partial and final status so an in-progress day is not presented as complete.
For additive metrics, the refresh checks that the daily breakdown reconciles with the weekly source value within bounded, source-aware allowances. An invalid or incomplete four-region run is retained for review but never replaces the latest trusted snapshot. This protects the team's working view when a source fails or a metric does not reconcile.
Designed for teams
Authorized users sign in with Google and enter a company-specific reporting workspace. The application supports adding organizations and managing who can access their reporting views, including approved outside collaborators. Membership checks protect the underlying data as well as the interface.
Goals can be managed alongside the metrics, with status colors that make results needing attention visible. A trends view follows the same region and reporting-period controls as the main dashboard.
Designed for analysis
US, CA, AU, and UK views, plus a worldwide view for the overall picture.
Daily, weekly, monthly, quarterly, and yearly breakdowns, with authenticated weekly history and clear partial versus final status.
The team can set targets per metric and immediately see whether a goal is met.
Period comparisons and visual charts make movement easier to examine.
The result
The original scorecard took roughly 2–4 hours of manual collection per person each week. Hourly updates remove that recurring work. Pulling ad hoc comparisons or building charts by hand would have taken additional time; the platform makes those views available within the reporting workflow. Member-initiated refreshes provide current data without replacing a trusted snapshot with a failed run.
This project shows my range across frontend development, server-side integration, data contracts, organization and user management, access control, validation, and the operational details that make an internal tool trustworthy.