Learn by Directing AI
Chat with your clientAsk questions, get feedback, discuss the project

The Brief

Diego Vargas founded Movimiento Fitness, a chain of four boutique fitness studios across Costa Rica's Central Valley. Thirty-five employees, about 2,400 active members, and a fifth location planned for next year.

Diego has one data source: a gym management system called FitPro that covers all four locations. The data is there. The problem is what he does with it. Every Monday, four location managers send him spreadsheets. He spends two hours stitching them together in Google Sheets. His investors want monthly reports and he is building those by hand.

He wants a real dashboard. All four locations at a glance. Memberships, revenue, retention, class attendance. Fair comparisons across locations. And something professional enough to screenshot for investor reports. Retention is the number that keeps him up at night -- members sign up and disappear after three months.

Your Role

You're building Diego's dashboard. Same platform as last time: Metabase via Docker, SQL mode for everything.

The difference is what the dashboard demands. Last time you built a dashboard that worked. This time you're designing one that serves a specific audience -- 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. Two of Diego's investors are colourblind. Red/green encoding will not work.

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.