You're building a Metabase dashboard for a fitness studio chain in Costa Rica — four locations, investor-ready reports, and a retention metric that requires a precise definition before it means anything.
The discipline skills: information hierarchy (what the stakeholder sees first matters most), accessibility (two investors are colorblind, so color-only encoding fails), automated metric validation (tests that enforce whether the retention rate definition still matches reality), and designing dashboards that survive a fifth location opening without breaking.
The AI-direction lesson: AI generates what you ask for, not what you mean. Ask for a dashboard and AI distributes panels in equal-sized grids — no hierarchy, no priority. Ask for metric tests and AI checks the obvious (non-null, positive values) while missing the constraints that matter (month-over-month changes within expected ranges, relationship invariants between related metrics). The skill is specifying intent — information hierarchy, accessibility requirements, business-rule constraints — before AI starts generating.
Your Role
You're building the dashboard. Same platform as last time: Metabase via Docker, SQL mode for everything. The difference is what the dashboard demands — a CEO who needs answers in three seconds and investors who read the same screen. What goes first matters. Who can read it matters. Whether it survives a fifth location opening matters.
You're also writing automated tests for your metric definitions. The retention rate, the revenue per member, the class attendance — each gets a definition and a test that enforces it. When the test fails, you investigate whether the definition is wrong, the data is wrong, or the business changed.
What's New
Last time, you reconciled conflicting metric definitions across three data sources and built your first Metabase dashboard. You learned what it means for three systems to define "revenue" differently and chose one governed definition.
This time, the data comes from a single source. The challenge shifts from data wrangling to design and governance. You're working on information hierarchy — which number goes above the fold, which chart type serves each question, how the dashboard reads for someone who has thirty seconds. Investor-facing reports cannot assume the audience can read colour-only signals -- about 8% of men cannot distinguish red from green.
The hard part is the retention rate. Diego says "how many members stick around." Does a member who downgrades from unlimited to a four-class pack count as retained? The answer changes the number by eleven percentage points. Both definitions are defensible. You choose one and live with the consequences.
Tools
- Python 3.11+ (via Miniconda, "analytics" environment)
- DuckDB
- Jupyter Notebook
- pandas
- Metabase (via Docker — continuing from P3)
- Docker
- Claude Code
- Git / GitHub
Materials
- FitPro data export — a single CSV covering all four locations, 12 months of member sign-ups, cancellations, class bookings, and revenue transactions.
- Membership type reference — definitions and pricing for the four membership tiers.
- Data quality assessment template — sections for overview, issue classification, business impact, and recommendations. You classify every finding as fixable, flaggable, or blocking.
- Dashboard design checklist — five areas to check: information hierarchy, chart type selection, accessibility, durability, readability.
- CLAUDE.md — project governance file with client context, work breakdown, and verification targets.