The "Duolingo Model" for Retention (and Why You Need One)
How product and tech teams can use a Duolingo-inspired model to understand, predict, and improve retention
You don’t have to be a Data Scientist to know how to measure retention.
Any stakeholder with some domain knowledge and a bit of Excel know-how can calculate DAU or churn rates — and happily present them at their next management meeting.
But reporting the number is the easy part, figuring out what’s actually moving it is the true value we bring as data scientists
For example, if you work with a product, you’ll inevitably want to know how specific feature changes impact business metrics like churn rate.
And sure, if you’ve been around long enough, you know experiments are the gold standard for measuring causality. But with metrics like churn, which happen much later in the user journey, that can mean waiting months for a clear answer.
And what about product changes that weren’t tested? Or knowing where in the user journey behavior shifted, not just that churn went up or down?
This is where a growth model comes in. It gives you:
Early signals on whether user behavior is moving in the right direction.
Historical coverage for changes that weren’t A/B tested.
Granularity to see exactly which user states are improving or declining.
Scenario planning to simulate “what if” cases before investing in a full test.
In other words, it’s a way to quantify behavior changes and connect them to churn early enough to act on them.
What exactly is the “Duolingo Model”?
At its core, the Duolingo Growth Model is a Markov model applied to user retention.
Instead of just looking at top-line DAU or churn, it breaks the user base into mutually exclusive states and then tracks how people move between them day by day.
The states are very specific:
New users (first day ever)
Current users (active today and in the past week)
Reactivated (active today, after being active within the past month but not the past week)
Resurrected (active today, after being inactive for 30+ days)
At-risk WAU (active in the past week, but not today)
At-risk MAU (active in the past month, but not the past week)
Dormant (inactive for at least 30 days)
Every day, Duolingo calculates the probabilities of transitioning between these states. For example, the percentage of new users who come back on day two is their NURR (New User Retention Rate).
All of this comes together in a transition matrix, which doesn’t just describe what happened, it lets you simulate “what-if” scenarios. That’s how Duolingo could test: What happens to DAU if we improve the Current User Retention Rate by 2% month over month?
Duolingo’s original write-up is a great read, I highly recommend you check it out. Here, I’ll break down where it works great and where it doesn’t so much; And share my experience building one from scratch, so you can see how to adapt it to your own product.
Where the Model falls short
The Duolingo model is honestly brilliant, but it isn’t a silver bullet.
It works so well for Duolingo because usage is highly individual and user-level: one person, one account, one set of engagement states.
But not every product works like this.
Think about Netflix or Hulu. An “account” might have four profiles: a parent, a partner, and two kids.
Each of those profiles has different engagement patterns — one is binging K-dramas, another only watches on weekends, and the kid dips in and out of cartoons. All of those behaviors roll up to a single account, but churn happens at the account level, not the profile level.
So which “state” should you assign? How do you model retention when multiple behaviors contribute to the same subscription decision?
This is the same kind of challenge I’ve been facing at Nextory.
Nextory is an app that lets users read ebooks, listen to audiobooks, and browse magazines.
But reading and listening behaviors don’t always fit into neat daily or weekly cycles, and many accounts have multiple profiles. To make the model meaningful, I’ve had to essentially rebuild it from scratch and extend it:
Defining engagement in ways that work for different types of readers.
Capturing both user-level states and how they combine at the account level.
Accounting for the different ways products are consumed (e.g., how ebooks are read vs. audiobooks listened to)
So while Duolingo’s framework is a great starting point, adapting it to multi-profile or multi-behavior products often requires rethinking what “state” even means, and how you connect it back to the actual churn event.
Handling multiple profiles per account
So how do you actually bridge profile-level behavior with account-level churn?
I’ve been experimenting with a few different approaches. Each has its trade-offs:
Right now, I don’t think there’s a “perfect” solution. Each method has strengths depending on the product and data available.
But thinking through these trade-offs is key to making the model useful outside of single-user products like Duolingo.
Conclusion
Retention isn’t just about tracking churn or DAU, it’s about understanding what actually drives those outcomes.
Models like Duolingo’s show how powerful it can be to frame retention as a series of state transitions, not just a final number. And even if your product isn’t a perfect fit, thinking in these terms forces you to ask better questions: Where exactly are users dropping off? Which small improvements would compound into meaningful retention gains?
Get this right, and you unlock a much clearer view of your user base, one that lets product and tech teams move faster, experiment smarter, and ultimately keep more customers around.
A couple of great resources:
💼 Job searching? Applio helps your resume stand out and land more interviews.
🤖 Struggling to keep up with AI/ML? Neural Pulse is a 5-minute, human-curated newsletter delivering the best in AI, ML, and data science.
🤝 Want to connect? Let’s connect on LinkedIn, I share lots of career bite-size advice every week.
Thank you for reading! I hope this guide helps you improve retention at your company.
See you next week!
- Andres
Before you go, please hit the like ❤️ button at the bottom of this email to help support me. It truly makes a difference!
I noticed that your link to Duolingo’s original write-up is broken.