Product ManagementData EngineeringSQLBI DashboardsFinancial Analysis

FinSight

A self-service analytics product that gives a subscription company's finance and product leaders one trusted view of revenue, cost and product performance.

▶ Try the live MVPRead the PRDFinancial model (Excel)

Built on synthetic data for a fictional company, StreamCo. No employer data used.

ProblemFinance and product teams reported different revenue numbers, and monthly variance reporting took ~5 days of manual work.
My roleProduct Manager, data engineer and BI analyst: discovery, PRD, prioritization, data model, SQL pipeline with quality checks, interactive dashboards, financial model.
ToolsSQL (CTEs, window functions) · Python · JavaScript (MVP) · Excel · Jira-style backlog
ImpactWorking MVP with 3 dashboards + glossary that surfaced a $1.28M (5.1%) FY2025 budget miss, traced mainly to International (−9.6%). Target: reporting cut from 5 days to 2.
▶ 2-minute Loom walkthrough
Paste your Loom embed code here
01 · THE PROBLEM

Three teams, three versions of the truth

StreamCo is a mid-size subscription business with ~50K customers, 3 product tiers and 4 regions. As it grew, reporting broke down:

  • Finance and product calculated revenue differently, so leadership meetings started with "whose number is right?"
  • Budget vs. actual variance reporting took ~5 days of spreadsheet work every month.
  • Nobody could say which tiers or regions actually drove margin.
Problem statement: How might we give finance and product leaders a single, trusted view of performance so they can make decisions in days, not weeks?
02 · USERS & DISCOVERY

Who I designed for

PersonaCore needPain today
FP&A ManagerBudget vs. actual, forecast accuracyRebuilds the same Excel model every month
Product ManagerRevenue, churn and adoption by tierWaits on finance for numbers
Regional Ops LeadRegional performance & cost driversSees data only after the month closes

Key insights from (simulated) interviews

  • The real problem wasn't missing dashboards; it was no shared metric definitions.
  • Users wanted fewer metrics, not more: "Just tell me what changed and why."
  • Trust mattered more than speed. One wrong number would kill adoption.
03 · MY THOUGHT PROCESS

Options I considered

OptionProsConsDecision
A. Clean up existing spreadsheetsFast, cheapDoesn't fix definitions or scale✗
B. Buy an enterprise BI suiteFeature-richCostly, slow rollout, low adoption risk✗
C. Governed data model + focused dashboardsFixes root cause, quick MVPNeeds stakeholder alignment✓ MVP

How I prioritized (RICE)

FeatureReachImpactConfidenceEffortScore
Metric glossary + single revenue modelAll users390%2High → MVP
Budget vs. actual dashboardFP&A, execs380%3High → MVP
Tier/region margin viewProduct, ops280%3Medium → V1
AI anomaly alertsAll users250%5Low → V2

Update scores once the full RICE sheet is final.

04 · PRODUCT REQUIREMENTS

PRD summary

  • Goal: one trusted source for revenue, cost and margin; cut monthly reporting time by 60%.
  • User story: As an FP&A manager, I want budget vs. actual by tier and region so I can explain variance before the leadership review.
  • User story: As a PM, I want MRR, churn and ARPU by tier so I can prioritize the roadmap without waiting on finance.
  • Success metrics: reporting time, weekly active users, forecast accuracy (MAPE), number of metric disputes.
  • Out of scope (MVP): real-time data, AI features, write-back to budgets.
Read the full PRD (PDF) Download Word version
05 · ROADMAP
PhaseScopeExit criteria
MVPData model, metric glossary, Executive + Budget vs. Actual dashboardsFP&A signs off on revenue numbers
V1Product performance dashboard, tier/region margin, forecast modelWeekly use by 3 personas
V2AI anomaly alerts, natural-language questions (→ AskData)Alert precision target met
06 · DATA ENGINEERING & SQL

From raw data to a trusted metric layer

Before any dashboard, I built the data foundation. Every number in FinSight comes from one governed fact table that passes automated quality checks.

Raw sourceMonthly subscription, revenue, cost and budget extracts (CSV)
→
StagingType casting, surrogate keys, derived metrics
→
Quality gate4 automated checks; any failure blocks refresh
→
Fact tablefct_revenue_monthly (month × tier × region)
→
Metric layerMRR, churn, ARPU, GM, variance, defined once
→
BIDashboards & financial model

The SQL behind every view

All 7 queries run on the real FinSight dataset. Results below are actual outputs. Skills shown: DDL, CTEs, window functions (LAG, RANK, SUM OVER), conditional aggregation, data validation.

Staging layer: cast types, add derived metrics and a surrogate key so every dashboard reads from one governed table.

CREATE TABLE fct_revenue_monthly AS
SELECT
    month || '-' || tier || '-' || region         AS row_key,
    DATE(month || '-01')                          AS month_start,
    tier,
    region,
    CAST(start_subs   AS INTEGER)                 AS start_subs,
    CAST(new_subs     AS INTEGER)                 AS new_subs,
    CAST(churned_subs AS INTEGER)                 AS churned_subs,
    CAST(end_subs     AS INTEGER)                 AS end_subs,
    CAST(revenue      AS REAL)                    AS revenue,
    CAST(cogs         AS REAL)                    AS cogs,
    CAST(revenue AS REAL) - cogs                  AS gross_profit,
    CAST(budget_revenue AS REAL)                  AS budget_revenue,
    revenue - budget_revenue                      AS variance
FROM raw_subscription_monthly;
▸ Result (1 rows, run on the FinSight dataset)
rows_loadedunique_keysfirst_monthlast_month
1441442025-01-012025-12-01

Download all SQL (.sql) Download dataset (CSV)

07 · DASHBOARDS & FINANCIAL MODEL

Dashboards

The interactive MVP: four tabs (Executive, Product Performance, Budget vs. Actual, Metric Glossary) with region, tier and month filters. Try it below or open it full screen →

Financial model

FY2026 monthly forecast by tier with Base, Upside and Downside scenarios, a full P&L to EBITDA, and FY2025 budget vs. actual. Change the blue inputs and everything recalculates. Base case: $27.9M revenue (+17.6%) and $5.9M EBITDA; range $25.6M–$29.9M. Download Excel →

08 · CHALLENGES & HOW I SOLVED THEM
ChallengeHow I solved it
Finance and product defined "revenue" differentlyRan an alignment session, wrote a metric glossary, and made finance the owner of each definition.
Messy data: duplicate customers, missing datesAdded validation rules and a data-quality check before every refresh.
Stakeholders asked for 40+ KPIsAgreed on a "North Star + 5" set; everything else moved to a drill-down page.
Scope creep toward AI features in the MVPMoved AI to V2 using RICE scores, so we shipped trust first.
09 · RESULTS
$1.28MFY2025 budget gap surfaced and explained (−5.1%)
−9.6%International vs. plan: the biggest driver
4.2%Basic tier churn, 3× Enterprise: the upgrade opportunity
$27.9MFY2026 base-case revenue forecast

Results come from the synthetic StreamCo dataset. Reporting-time savings (5 → 2 days) are a design target.

10 · WHAT I'D DO NEXT
  • AI anomaly alerts that flag unusual variance before month-end.
  • Natural-language questions on top of the governed model, which became my next project, AskData →