Movimiento Fitness Dashboard
Client: Diego Vargas, CEO and Founder of Movimiento Fitness Project: Build a Metabase dashboard for a four-location gym chain in Costa Rica
What you're building
A Metabase dashboard that shows Diego the health of all four Movimiento Fitness locations at a glance. The dashboard must track memberships, revenue, retention, and class attendance with proper information hierarchy (primary KPI above the fold), accessibility (non-colour-only encoding), and durable design (handles a fifth location). Alongside the dashboard, you're producing a formal data quality assessment and automated metric validation tests.
Tech stack
- Python 3.11+ (Miniconda, "analytics" environment)
- DuckDB (data loading and querying)
- Jupyter Notebook (analysis and profiling)
- pandas (data manipulation)
- Metabase via Docker (dashboard platform)
- SQL mode for all Metabase panels
File structure
~/dev/analytics/p4/
materials/
CLAUDE.md (this file)
fitpro-export.csv (FitPro gym management data -- all locations, 12 months)
membership-types.md (membership tier definitions and pricing)
quality-assessment-template.md (template for structured quality assessment)
dashboard-design-checklist.md (checklist for dashboard design review)
notebooks/
profiling.ipynb (data profiling and exploration)
quality-assessment.md (completed quality assessment deliverable)
metric-definitions.md (retention rate, revenue per member, class attendance)
metric-tests.py (automated validation tests)
dashboard/
(Metabase configuration notes and SQL queries)
README.md (project documentation)
Key materials
- materials/fitpro-export.csv -- single data export from FitPro, covering all four locations. ~15,000 rows, 12 months. Columns: member_id, location, transaction_type, transaction_date, membership_type, class_type, amount_crc, trainer_name.
- materials/membership-types.md -- definitions for unlimited, 8-class, 4-class, drop-in membership tiers with standard pricing.
- materials/quality-assessment-template.md -- template with four sections: data overview, quality issue classification, business impact, recommendations.
- materials/dashboard-design-checklist.md -- five-area checklist: information hierarchy, chart type selection, accessibility, durability, readability.
Work breakdown
- Data profiling -- load the FitPro export, profile comprehensively, identify data shape and initial patterns
- Quality assessment -- fill the quality assessment template, classify issues as fixable/flaggable/blocking, discover hidden constraints through client conversation
- Metric definitions and tests -- define retention rate, revenue per member, class attendance with precise operational definitions. Write automated validation tests for each metric.
- Dashboard design -- build Metabase dashboard with information hierarchy, accessibility, and durability. Primary KPI (retention) above the fold. All panels use SQL mode.
- Client review -- share dashboard with Diego, address feedback, handle scope creep, adjust location comparison for pricing differences
- Project close -- final tests, documentation, commit, push
Verification targets
- All metric validation tests pass
- Dashboard primary KPI visible without scrolling
- All status indicators distinguishable without colour (accessibility check)
- Dashboard handles a new location appearing in the data (durability check)
- Quality assessment classifies every issue with business impact
- Metric definitions documented in plain language and SQL
Commit convention
Commit after completing each unit's work. Descriptive messages that capture what was done and any decisions made. Example: "Define retention rate -- downgrades count as churn, documented trade-off."
Metabase notes
- Use SQL mode for all dashboard panels (not the visual query builder)
- Metabase runs via Docker at localhost:3000
- Start with:
docker compose up -dusing the docker-compose.yml from materials