You shipped it. Now learn what your users actually do.
Runnable recipes, plain-language theory, and case studies from real apps — product analytics for indie builders and vibe coders who suddenly have users and no analytics background.
Building an app got easy. Understanding your users is the new bottleneck. Everything here follows one rule: it must work on your data within an hour of cloning.
Written by BuildnWrite — notes on running this playbook on real funnels are on the blog.
Short, practical guides. Each concept comes with "when you'd actually use this."
| # | Guide | What you'll learn |
|---|---|---|
| 1 | Product Metrics | North Star, AARRR, engagement — and why vanity metrics lie |
| 2 | Cohort & Retention | Why snapshots mislead and cohorts don't; reading retention curves |
| 3 | Funnel Analysis | Finding where users drop off, and what to do about it |
| 4 | A/B Testing & Causality | Running experiments that don't fool you |
| 5 | Statistics for PA | Just enough stats: skewed data, significance, chi-square |
| 6 | ML for PA | Churn prediction, LTV, segmentation — and why you probably don't need ML yet |
| 7 | Metric Definitions | Why the same log yields two different numbers, and how to reproduce a baseline before comparing to it |
Clone, run, swap in your data.
| Recipe | Stack | What it does |
|---|---|---|
| Cohort Retention | pandas · SQL | Build a retention matrix + heatmap two ways, with a hidden-pattern exercise |
| Threads Engagement | pandas · matplotlib | Read a content account like a product — why engagement rate misranks your best post. Runs on synthetic data, or connect your own Threads/Meta account |
| Weekly Funnel | raw JSONL · matplotlib | Did the thing you shipped work? Rebuild a funnel from a raw event log four times — the blended weekly number says no, both device segments say yes |
| A/B Test Evaluation | scipy · matplotlib | The four checks before believing a result — sample size, validity, effect size with a CI, and what daily peeking costs (measured: 4.3% → 20.9%) |
Coming soon: Instrumentation starter kit
Not toy datasets. These are analyses of actually-deployed services, with the mistakes left in.
| Case | Service | Headline finding |
|---|---|---|
| Board Game Web App | A complex board game ported to the web | Two distinct churn types hid inside one "drop-off" number — and easy mode was bankrupting beginners |
| Challenge Community | A 12-week creator challenge (19 participants) | Naive weekly counting overstates churn (week 1 read 52.6% active, corrected: 84.2%); top 5 participants produced 54.6% of all submissions |
Bonus: Analytics without Google Analytics — full funnel analysis with a UUID, a JSONL file, and zero external SDKs.
- Data Sources — practice datasets and public APIs, plus why your own app is the best dataset you'll ever get
- Theory guides 01–07
- Cohort retention recipe (pandas + SQL, cross-validated)
- Threads engagement recipe (social API connector + the engagement-rate trap)
- Weekly cohort funnel recipe (internal-actor exclusion, conversion windows, a mix-shift reversal)
- Two real-service case studies
- A/B test evaluation recipe (sample-size calculator, SRM + covariate balance, measured peeking cost)
- Instrumentation starter kit (drop-in, no-SDK event logging)
- Claude Code plugin packaging — each recipe as an installable skill
One merge bar: it must run right after cloning.
your-recipe/
├── README.md # overview → data → how to run → steps → results → interpretation
├── analysis.py # running it saves charts to assets/
├── requirements.txt # pinned versions
├── data/ # <1MB sample (larger data via fetch script)
└── assets/ # output charts
Case-study PRs are welcome too — real numbers from your own app, aggregates only, anonymized.
BuildnWrite — a data analyst who mentors builders. Sharing perspective, not doctrine.
- Threads: @buildnwrite
- LinkedIn: jayjunglim
- Blog (Korean): snowgot.tistory.com
MIT — use anything, a one-line credit is plenty.
Looking for the earlier Korean-language general data-analysis content (Seoul apartment case study, sensor anomaly detection, analysis gallery)? It lives on the legacy-korean branch.