Tableau Project · Advanced · 4 to 6 hours
Build a cohort retention dashboard in Tableau
Order-level data in, a signup-cohort retention triangle out. This is the LOD-and-table-calc project that separates a chart-maker from an analyst.
The brief
LutoBox, a meal-kit brand, keeps acquiring customers but cannot tell if they stay. You have 4,210 orders across 1,191 customers and one year of history. The founder wants a single view that answers: of the people who joined in a given month, how many are still ordering one, three, and six months later? That is a cohort retention analysis, and it lives or dies on getting the level-of-detail logic right: each customer's cohort is their first order month, computed with a FIXED LOD so it never shifts when the view is filtered.
Your role
You are the BI analyst. Deliverable: a published Tableau Public dashboard with a cohort retention heatmap and a short read of where retention is won or lost.
The dataset
4,210 meal-kit orders (Jul 2025 to Jun 2026) across 1,191 customers
tableau-box-orders.csv · 4,210 rows
Columns: order_id, customer_id, order_date, box_type, qty, revenue
Setup
- Install Tableau Public (free) and connect it to tableau-box-orders.csv.
- Confirm order_date reads as a date and revenue as a number.
- Plan the cohort calc on paper first: cohort month, then months-since, then retention.
Your tasks
Work through these in order, the way the engagement would actually run.
- 1Create a FIXED LOD for each customer's first order date: { FIXED [Customer Id] : MIN([Order Date]) }.
- 2Derive the cohort month (truncate the first-order date) and months-since = DATEDIFF('month', firstOrder, [Order Date]).
- 3Compute cohort size per cohort month as the distinct customers whose first order fell there.
- 4Build the retention measure: distinct active customers at each months-since, divided by that cohort's original size.
- 5Lay out the cohort heatmap: cohort month down the rows, months-since across, retention as color and label.
- 6Mark or exclude the right-censored cells where a recent cohort has not yet reached that month.
- 7Add a summary tile for average month-1 retention and read the shape of the decay curve.
- 8Publish to Tableau Public and write 4 sentences on where retention drops and what you would fix.
Work like an AI-powered analyst
The modern analyst uses AI as a thinking partner, not a shortcut that skips the learning. Try these on this project.
- Ask ChatGPT or Claude to explain, in plain terms, why FIXED (not INCLUDE or a plain DATETRUNC) is what keeps a customer's cohort stable under filters.
- Paste your retention calc and ask the AI whether your denominator is the original cohort size or the prior month, and why that matters.
- Have the AI stress-test your read of the curve: what would make the month-1 to month-3 drop misleading?
Expected output
- A published Tableau Public dashboard with a cohort retention heatmap.
- Correct cohort sizes and a retention measure denominated on the original cohort.
- Right-censored cells handled honestly, not shown as real zeros.
- A 4-sentence read of where retention is lost, with specific numbers.
Check your numbers
Your results should match these. If they do not, that is the real learning: find out why.
- The data holds 1,191 customers, 4,210 orders, and about 7.09 million pesos in revenue, spanning Jul 2025 to Jun 2026.
- The Jul 2025 cohort has 70 customers.
- That cohort retains 84.3 percent at month 1, 50.0 percent at month 3, and 30.0 percent at month 6, a steep early drop that then flattens.
- Average month-1 retention across cohorts is about 82.5 percent.
- Cohort sizes climb over the year (70, 78, 85, 92, 88, 96, 110, 104, 120, 130, 118, 100), so acquisition is growing even as retention decays.
Skills check
6 advanced questions on the judgement this project demands, not just its steps. Your score saves to your dashboard, and you can retry for a better one.
Finished it? Put it in your portfolio.
This is exactly the kind of output the bootcamp builds with you live, with mentor feedback and an AI badge and certificate of completion at the end.

