Product Concept · Duolingo

Duolingo City

A city that remembers you back.

A product concept exploring what happens when language practice stops resetting every time you close the app. I researched it, scoped it, and built a working prototype the way I'd actually bring it into a roadmap review.

Role
Product Strategist · Concept & UX
Timeline
Self-directed · 2026
Platform
Mobile · Feature Concept
"I'd pass every exercise in a unit and still freeze the one time I needed to order a coffee for real."
Where this concept started
2024
the year Adventures launched, for a small first set of course pairings, with Duolingo saying more languages were "coming soon"
Duolingo's official Adventures announcement
56.5M
daily active users as of Q1 2026, up 21% year over year, the base this concept is meant to deepen, not chase growth from
Duolingo Q1 2026 shareholder letter, SEC filing
3.6×
more likely to complete a course once a learner hits a 7-day streak, by Duolingo's own measurement. Streaks prove a habit mechanic works. This project asks whether a relationship can do the same job.
Duolingo blog, "How Streaks Keep Duolingo Learners Committed"

I went looking for a gap. Duolingo already knew about it.

I'm a longtime Duolingo user, and the thing that's never quite worked for me is the gap between finishing a lesson and actually being able to say something out loud in Spanish. I'd pass every exercise in a unit and still freeze the one time I needed to order a coffee for real.

So I went looking for whether Duolingo had already noticed this. They had. Adventures, shipped in 2024, drops you into a Duolingo character's shoes to complete one scenario per course unit. Speaking Adventures, rolling out through 2026, pushes the same idea into voice. Both are genuinely good. Both are also one-and-done: you finish the scenario, the app moves on, and nothing about that visit carries forward to the next time you open it.

That shows up in how people actually talk about the app, real quotes a few sections down. Picking the right answer out of a list is one skill; generating language on your own, under pressure, is a different one, and Duolingo trains the first far more than the second. The other recurring complaint is simpler: the same handful of scenarios, and nothing changes if you play one again.

65%
of college language learners report high anxiety specifically around speaking, the highest of any of the four language skills measured.
PMC, foreign language classroom anxiety study
FLSA
Foreign Language Speaking Anxiety is a documented, named phenomenon, distinct from general anxiety. The research points to a specific fix: repeated, contextualized practice that feels like spontaneous real use, not graded drills.

Two complaints. One narrower question.

Both point at the same thing: nothing about Adventures persists. So I stopped asking what a fun new scenario would look like, and asked a smaller question instead.

Recognition, not production
Picking the right answer out of a list is one skill. Generating language on your own, under pressure, is a completely different one, and it's the one Duolingo doesn't really train, even at the highest paid tier.
The same few scenarios, over and over
Adventures is one mini-game per unit, in a handful of course pairings, and nothing changes if you play it again. There's no sense of progression within a scenario, only across units.
"What if the place itself remembered you?"

There's a real psychological reason this matters, not just a UX one. Foreign Language Speaking Anxiety research points to a specific fix: repeated, contextualized practice that feels like spontaneous real use. That's what actually lowers the fear of speaking, not more vocabulary.

A city where the locations don't reset.

Duolingo City is a persistent world, living in its own tab, where the locations you've practiced in stay open, and the people in them remember you. Go to the café once. Come back next week, and the barista's first line isn't generic. It references how long it's been since you last came by, pitched to how you've actually been performing in conversation, not just which grammar unit you checked off.

It's not a new character system, a new economy, or a new social feature layered on top of Duolingo. It's the smallest version of "a city that remembers you" that doesn't require inventing any of those three things.

Design principle
Keep coming back, and the relationship visibly warms, not because you unlocked anything, but because that's what a recurring relationship with someone actually feels like.
Using the avatar Duolingo already built
Duolingo's custom avatar system, launched in 2023, replaced photo uploads outright. The feedback since has had two threads: people upset they lost their old photo, and people asking the avatar to actually do something beyond sit on a profile page. I didn't want to design a second character creator. I wanted to give the one that already exists a job. Your avatar walks into the café. That answers a request that's been sitting in Duolingo's own feedback for two years.

Three moments, not a flow. The whole concept lives in the second.

First visit
A true first meeting
From the City tab, the map shows one open location, the café, everything else previewed but locked. A short intro, a vocabulary warm-up, a conversation. The barista's greeting is written as a true first meeting.
"I don't think I've seen you here before."
Settling into a routine
From checklist to relationships
Once two or three locations are active, the city stops being a checklist and starts being a short list of people you have some history with. The pull to return stops depending on new content and starts depending on the relationships themselves.
What I cut here
A "Friend tier" that unlocks content or cosmetics as the relationship deepens. The moment warmth is tied to a reward, it becomes a second streak counter, and Duolingo's existing streak-loss notifications are already criticized by users as guilt-driven. I wanted City to feel like being recognized, not like managing one more meter. The relationship is observable, never transactional. The barista being friendlier isn't a reward. It's just flavor.

Open a location. Talk to someone who remembers you.

A working build of the loop this whole concept is built around, in the same visual language as today's Duolingo. Click through it, the notes on the right update with what each screen is actually doing.

Skip ahead to the live prototype →
For reference, how Adventures works today
A single scenario per course unit. You play as a Duolingo character (Lily, Junior, Eddy) moving around a 3D "board," talking to other characters placed in the scene to complete a task like ordering a coffee or asking for directions. A wrong answer doesn't get corrected, it gets "immersive feedback," a character looking confused and asking "did you mean…?" instead. Schematic here, not a screenshot, see Duolingo's own writeup for the real interface. Adventures launched in 2024 for a handful of course pairings and has since expanded to most of Duolingo's most-used languages.
Storyboard
9:41
Current city
Mexico City
Café
Metro
Market
City Map — locations stay open once visited
9:41
Lucía
Barista
Confidence
¿El café con leche de siempre?
Sí, gracias.
¿Algo más hoy?
Conversation — Lucía remembers your last visit
9:41
Confidence up 8 points
Without a hint3 / 4
Visits to café4
Since last visit6 days
Results — production and visit history, not accuracy

The storyboard above is a walkthrough of the idea. What's below is the same three screens, live, not staged, starting from the city map rather than mid-conversation.

Live prototype
The map persists
Café is unlocked and shows four past visits. Metro and Market stay visible but locked, previewing what's next without blocking the screen.
The opening line is earned
Lucía's greeting reflects how long it's been since your last visit and your usual order, not a generic hello. Confidence is tracked separately from XP, and a hint is one tap away if you're stuck.
Accuracy isn't the headline
Results lead with responses produced without a hint, and a visit-by-visit history. That history is what the next greeting is built from.

Tap a location, then talk through a few turns, the notes above track which screen you're on.

A constraint, not a feature list.

This ended up being the most important design decision in the whole concept.

It remembers
  • How many times you've visited
  • How long since your last visit
  • Your usual order
  • A rolling sense of how well you've performed in past conversations there
It doesn't remember
  • Anything personal you shared in dialogue, your job, your relationships, anything biographical
  • Anything that carries between locations
  • Anything stored as a fact about you, only facts about your visits
Why I cut personal memory
Duolingo's user base includes a lot of minors, and a system that stores and recalls biographical details a kid shared is a fundamentally different product than one that tracks visit timing and a coffee order. Capping memory at functional facts sidesteps that question entirely. There's nothing sensitive being kept in the first place, so there's no separate, more careful version of this to design for younger users.
The second problem it removes
A system that remembers "you said you were a student" eventually has to handle you contradicting yourself, and that needs careful, non-accusatory tone work to avoid feeling like a gotcha. A system that only remembers your usual order never runs into that problem at all. It's the difference between an NPC with a personality and an NPC with a notebook, and a notebook is what v1 actually needs.

A profile and a rulebook, not a model improvising.

On purpose: it's a structured profile per person, per location, that selects from a small bank of pre-written dialogue variants. Nothing is generating a fresh conversation from scratch.

Each location's dialogue is written as a handful of variants, chosen by simple rules: first visit or returning, short gap or long gap, strong or shaky recent performance. It's the same authoring model Duolingo already uses for branching exercises, it scales with writing time, not inference cost, and every line gets reviewed before it ships.

Where I drew the line
A freely generated, LLM-voiced conversation, grounded in someone's full history, is a real and exciting next step. It's just not what I'd build first. Rule-based memory is the version that proves whether being remembered actually changes behavior, before spending the much bigger engineering and trust budget it would take to do that live.
// Location memory profile
// per user, per location

visit_count
time_since_last_visit
usual_order // set after first visit
rolling_first_try_success_rate

Three locations. Not six.

A real city needs more than a café. My first pass at this had six locations active on day one, café, metro, market, hotel, pharmacy, park, because that's what "explorable city" sounds like it should mean. The actual v1 is smaller: Duolingo City as its own tab, with the avatar walking into each scene, a location memory profile per user, per location, and dialogue variants for first-visit, returning-soon, and returning-after-a-gap, adjusted for recent performance. A results screen shows a confidence score alongside something more honest than accuracy: how many responses someone actually produced themselves, without a hint.

Why three locations, not six: Each location needs roughly three visit-recency variants crossed with two performance bands, around six authored dialogue branches before vocabulary or skill differences are even layered in. Three is enough to find out whether persistent memory changes behavior, without committing to a content cost that scales linearly every time a new location gets added.
In scope
  • Duolingo City as its own tab
  • Three locations: café, metro, market
  • Existing avatar system, given a job
  • Location memory profile per user, per location
  • Dialogue variants for first-visit, returning-soon, returning-after-a-gap
  • Results screen showing confidence score and unaided response rate
Explicitly out of scope
  • Relationship tiers that unlock content or cosmetics
  • Personal or biographical memory of any kind
  • Generated, model-voiced dialogue
  • More than three locations
  • Anything that carries between locations
What changes once these are revisited, including what happens after the tenth visit to the same café, is the roadmap below.

The honest version of "what's next."

Every roadmap slide says "more locations." The harder question is what happens at the café specifically, once a learner has been there enough times that the v1 variant bank runs out of new things to say.

Visits 1 through ~6
What v1 actually covers
First-visit, returning-soon, and returning-after-a-gap variants, each adjusted for recent performance. This is enough to test the core bet, but a learner who comes back every few days for two months will start hearing the same handful of lines recur. That's a real ceiling, not a hidden one.
Once authoring cost per location is proven sustainable
Generated dialogue, and more of the city
This is where the "honest box" from earlier actually gets opened: an NPC's line generated live, grounded in the same structured memory profile, with the same review and grading bar a written line would have to clear. More locations follow the same authoring-cost math used to justify three at launch, not before it.
What doesn't change, even at maturity
The memory boundary holds. A café with ten visits of history still doesn't know a user's job, their relationships, or anything biographical, only their patterns at that location. More content is not an excuse to widen what's remembered. The city gets deeper. It does not get more personal.

One return visit tells you almost nothing.

North star metric
Whether people return to a location that has nothing left to unlock.
Measured by comparing return visits to maxed-out locations against a stateless control, where the same location resets to a generic first-visit script every time. If memory doesn't outperform the stateless version here, the relationship isn't doing what the streak does, the core idea didn't hold, and no amount of polish elsewhere should save it.
Activation
How many people finish a first mission once they open the City tab at all.
Return behavior
Weekly return visits to a location someone's already completed.
Skill curve health
Whether first-try success holds steady on return visits instead of getting harder. A worse adaptive curve on returns would be a real failure, not a feature.
Habit compatibility
Whether City users keep up with the regular lesson path at the same rate as everyone else. This needs to add to the habit, not compete with it.
Conditions that would make me kill it
  • Maxed-location return rate doesn't meaningfully beat the stateless control after a real test window
  • Dialogue-authoring time per location comes in too high to ever scale past three
  • First-try success drops on return visits instead of holding or improving