Data & Analytics · Analyze & Recommend
Retention curves that build themselves.
Doe queries your database, segments users by signup cohort, and models retention in a code sandbox. You get results broken down by segment with cohort-over-cohort trends. Change the retention definition and rerun in minutes. All SQL and sandbox code is visible.
Works acrossPlanetScale
What you get.
Doe automates cohort retention analysis by querying your Postgres or MySQL database, segmenting users by signup cohort, and modeling retention curves in a code sandbox. Results show which cohorts are improving, which segments retain best, and what changed. Connects to Neon, Supabase, and PlanetScale. Change the retention definition and rerun in minutes. All SQL and code inspectable.
Someone asks "what's our retention?" and nobody has the same answer.
Product says 82% from Amplitude (anyone who opened the app). Finance says 74% from Stripe churn (paying users who cancelled). The analyst's cohort query says 69%, but it references a table that was renamed in January and silently returns zero rows for anything after December. Three different numbers from three different definitions.
The deeper problem is the iteration cycle. Building a proper cohort analysis takes a full day. Then someone asks "can you re-cut by plan tier?" Another two hours. "By acquisition channel?" Another two. "What if retained means completing a core action, not just logging in?" Start over.
What changes.
- 01Analysis frequencyBefore · Quarterly, when someone asksWith Doe · Monthly, delivered automatically
- 02Definition changesBefore · "Can you rerun with a different retention event?" adds two daysWith Doe · Change the definition, rerun in minutes
- 03SegmentationBefore · Each cut adds another half-day of SQL and formattingWith Doe · Every segment computed in the same run
- 04TraceabilityBefore · A number in a slide with no source query attachedWith Doe · Every retention figure links to the SQL and code that produced it
How Doe runs cohort retention analysis
- 01Pulls signup, activation, and product eventsPlanetScaleUsers grouped into weekly or monthly cohorts based on the event you define as first touch. SQL logged with row counts and execution time.
- 02Models retention curves in a code sandboxDoeDoe calculates retention at every interval for each cohort. Logic is editable — adjust how reactivations or plan changes are handled and rerun without starting over.
- 03Segments by plan tier, channel, and custom dimensionsDoeDoe reruns the model across every dimension in your data and compares recent cohorts against older ones to surface whether retention is trending up or down.
- 04Delivers findings to your channelSlackDoe posts which cohorts improved, which segments retain best, and where the biggest shifts are — with the full cohort matrix and source queries attached.
- 05RecurringMonthly, 2nd business day at 7:00 AMOn the second business day of each month, Doe reruns the full cohort model against current data and posts the findings. Source queries and sandbox code are saved for each run. Findings posted to #product-data in Slack.
Up and running in under ten minutes.
- 01Connect your toolsOne-click OAuth for each integration. No API keys, no engineering.
- 02Describe what you need“Build monthly retention cohorts based on signup week. A user counts as retained if they log in at least once in the period. Break it down by plan tier and acquisition channel.”
- 03It runs on scheduleUpdated findings land in your team channel on the second business day of each month.
Before you delegate.
- 01How does Doe define "retained"?You choose the retention event: a login, a product action, a transaction, or any event in your database. Doe applies that definition consistently across every cohort. You can define multiple retention metrics and Doe tracks both in the same analysis.
- 02Can I see and edit the code?Yes. The cohort model runs as Python code in an isolated sandbox. Every SQL query and every line of modeling code is visible. You can adjust how edge cases are handled (reactivations, trial conversions, plan changes) and rerun. Execution logs include query timing and row counts.
- 03Can Doe handle users who churn and come back?Yes. Doe can track both strict retention (active in consecutive periods) and any-period retention (active regardless of gaps). You define the logic that makes sense for your business, and the sandbox code makes it explicit.
- 04Does this work with MySQL and Postgres databases?Yes. Doe connects to PlanetScale (MySQL), Neon (Postgres), and Supabase (Postgres). The cohort logic adapts to each SQL dialect automatically.