Tags: Data Engineering, ETL/ELT, SQL, Data Modeling, Data Warehousing, Data Transformation, Data Reporting
Domain: SaaS, Fitness
PostgreSQL
Python
Design and implement a PostgreSQL-based reporting data model that transforms raw subscription and workout data into clean, reusable tables and business-ready metrics for dashboards.
Momentum Fitness is a national gym chain (4 branches, ~4,000 active members, founded 2021) with tiered plans (Basic, Standard, Pro) and workout check-ins.
The company wants better retention and engagement insights via monthly dashboards.
This project includes:
Data Architecture
ETL Pipelines
Data Modeling
Analytics and Reporting
Documentation
Layered data warehouse model (raw → staging → core → reporting) to transform raw subscription and workout data into reusable datasets and business-ready metrics for dashboards.
Designed data architecture for cohort, retention, and engagement analysis.
Implemented ETL logic: raw CSV → staging → reusable core models → reporting views.
Defined business metrics: churn %, MAU, avg workouts, cohort retention & LTV.
Churn % (monthly)
MAU (Monthly Active Users)
Avg Workouts per Active User
Cohort (month)
Cohort Period (months since cohort)
Cohort LTV
Data Modeling: Designed a layered data warehouse model (raw → staging → core → reporting) with reusable entities and final metrics.
ETL/ELT: Built a multi-stage SQL pipeline to cleanse, transform, and aggregate data from synthetic sources.
SQL Mastery: Applied advanced SQL techniques including joins, aggregations, and window functions for churn, retention, and LTV analysis.
Performance Optimization: Leveraged Materialized Views for reusable, pre-aggregated tables to speed up analytics.
Business Acumen: Translated business needs (member lifecycle, engagement, retention) into measurable, scalable metrics.
The project simulates how a fitness SaaS company could structure its analytics pipeline, ensuring traceability in raw data, reusability in core models, and clear reporting outputs for BI dashboards.
To see the code, please visit my GitHub.