Why Duolingo’s ML Ads Engine is brilliant and what on-device context could unlock next

Introduction
When Duolingo shared how machine learning supercharged their ad revenue, we were nodding along the whole time. The shift from spaghetti heuristics to a streamlined, ML-powered system is a brilliant move - and their use of BigQuery ML and dbt_ml shows how smart infrastructure choices can deliver real, fast results.
We love this strong incremental approach to ML-led monetization. It’s clean, impactful, and clearly built by people who deeply understand how product and revenue can coexist without compromising the user experience. So let’s be clear: we’re fans. Big ones.
But we also see one crucial opportunity Duolingo hasn’t yet unlocked - and it’s one that could turn their already high-performing ad engine into something even more powerful.
The Next Frontier: Not Just Who and What - But When
Duolingo’s model is built to choose the right type of ad (network vs. in-house), and soon, the right creative. That’s great. But even the perfect ad - for the perfect user - can fall flat if it’s shown at the wrong moment.
Here’s an unspoken truth: ML pipelines trained in the cloud are only half the battle. You can have the smartest model in the world, but if you catch the user at the wrong moment - distracted on the subway, low battery, just got a Slack ping - your perfectly picked in-house ad becomes white noise.
Timing: the silent killer of conversion.
We’ve all ignored prompts not because they were irrelevant - but because they interrupted us when we weren’t ready.
ContextDecision: The Timing Layer Your ML Model Deserves
This is where ContextSDK - and specifically, our product ContextDecision - can take Duolingo’s ads infrastructure to the next level.
ContextDecision adds a device-side intelligence layer that evaluates over 200 signals to assess whether now is the right time to show an ad. These include:
- Foreground vs. background state
- Battery level and charging status
- Device movement and orientation
- Session depth and engagement momentum
- Sensor activity (motion, light, screen taps)
- Notification context and Do Not Disturb states
We’re standing on the shoulders of giants and that is why we always have a complementary approach - we wrap around it, making every model output more effective by ensuring it’s delivered when the user is most likely to engage.
From “Decision Models” to “Decision Moments”
Instead of:
"Show this ad after every lesson."
You get:
"Show this ad after the lesson if the timing is right."
Same model. Better results.
No Rocket Science. Designed by Developers for Developers
Integrating ContextDecision doesn’t require re-architecting your stack. It’s a lightweight SDK (adds <700kb, uses <0.2% CPU, and just 0.6MB memory) that runs entirely on-device, evaluating real-world context before your ML-driven ad decision is shown. Imagine wrapping that whole ML inference pipeline with edge-aware gating via ContextDecision. We’re talking edge-triggered execution.
Not to forget: No personal data is processed, no app permissions are required, and there’s zero reliance on ATT. Think of it as a real-world signal layer - one fast check before delivery - to make sure that perfectly picked in-house ad hits at just the right moment. Clean, modular, and built to plug into systems like Duolingo’s.
Let’s Talk ROI
Duolingo’s ML-driven uplift already added millions in revenue. But when it comes to ad effectiveness, timing can boost conversion rates by double digits - without changing your model, creative, or user base. That’s pure margin, unlocked just by delivering smarter.
The best part? No new model training, no major infra overhaul, and no latency added. ContextDecision runs on-device and plays nicely with existing ML stacks.
This Isn’t Just for Ads
Duolingo also teased upcoming work on nudging users back into the app. We’re excited for that - because timing is just as crucial when you’re prompting re-engagement. Push notifications sent in the car, when a user is half-focused, are far less effective than those triggered during idle evening scrolls.
With ContextPush, our product leveraging real-world context for push notifications, Duolingo could ensure nudges land not just on the home screen - but in moments that matter.
Final Thoughts: ML Is Powerful - But Context Makes It Human
Duolingo has already shown how a single model can simplify systems, reduce bugs, and increase revenue. We believe the next leap comes from making those decisions moment-aware - sensitive not just to user attributes, but to real-world context.
And we’re ready to explore it together.
Until then, keep crushing it. And maybe - just maybe - don’t show that subscription ad while someone’s dancing at the club 😉