2
0 Comments

After a year of building a vocabulary app, I finally found its core concept

figured it out

For almost a year I've been building VibeLing, an app for learning foreign words and phrases.

Its idea seemed pretty clear to me from the start. A person runs into an unfamiliar expression in a movie, a book or an article, adds it to the app, and then AI prepares the translation, examples and pronunciation on its own. After that, training sessions are built from the words you've added.

I liked that there's no fixed course in this model. You can add anything: a rare word, slang, a work term or an entire phrase you want to remember. The user builds their own dictionary out of what actually shows up in their life.

That's exactly how I learned languages myself. And for a long time I believed this was the finished concept of the product.

But every now and then I'd get roughly the same comment:

A Google Play review

A Google Play review

At first I took it as a minor first-launch problem. But after a while it turned out that this question hid the main hole in the whole product.

The first crutch: put something in the empty dictionary

When a new user opened VibeLing for the first time, they really didn't have a single word yet. Which meant no training sessions either. What they got was an empty screen in an app that had just promised to help them learn a language.

The first solution seemed obvious: pre-add a few demo words. The person immediately sees a filled dictionary, can start a session and understands how everything works. The unneeded words can be deleted later.

I'd seen this in expense-tracking apps. When you install them, there are a couple of demo expenses for coffee and some groceries. So I figured I'd do the same.

In the end I added a small starter set for new users, something like hello, house and other basic words.

The empty screen disappeared. A new problem appeared in its place.

People with B1–B2 English opened the app and saw words they'd known for many years.

But then someone handed me an obvious idea that's hard to argue with. And there were a lot of comments like this:

A Google Play review

A Google Play review

I added a feature I never used myself

Honestly, I didn't want to add ready-made collections at all.

I'd never used them in language apps myself. It always seemed far more useful to run into an unfamiliar phrase while consuming content and then just add it yourself. It's already tied to a specific context and is needed by you personally, not by some abstract learner at the same level.

That's precisely what I originally built VibeLing around. Not a ready-made course and not yet another "100 essential verbs" list, but a tool where you can add absolutely anything from your own life.

So when users started asking for collections, I didn't like the idea. It looked like a step back toward the very language apps I wanted to be different from.

I decided the users know better what they're missing. And I started putting together themed collections: words and phrases for travel, work, socializing and other situations. A person could open the right topic and add what they needed to their dictionary.

This turned out to be far more useful than demo words. People really did start using the collections. Now there was a clear source to take your first words from, while the choice still stayed with the user.

The collections screen in VibeLing

The collections screen in VibeLing

Formally, the problem was solved.

But something still bothered me. I'd added a popular feature I didn't believe in myself and still didn't want to use.

Now I understand that I made a fairly typical product mistake back then: I heard the solution the user proposed, not the user's problem.

People were sensing their pain perfectly correctly. They opened the app and didn't understand what to learn next. But it didn't follow from this that collections specifically were needed.

Gradually a practical problem surfaced too. Users added everything interesting from the available collections and asked again what to do next. I could keep releasing new lists forever, but there was no end to it.

An App Store review

An App Store review

At some point I even started thinking about user-generated collections. Let people build sets themselves, publish them and share them with each other. But behind that idea a whole separate huge product appeared right away: an editor, search, moderation, ratings, duplicates, localization, quality control.

And even if I built all of that, the result would still be one more big library of static lists. It would give more content, but it wouldn't answer the specific person's main question: what's useful for me, specifically, to learn right now?

I shelved the topic and kept improving what was already there. That might have gone on for a long time if I hadn't run into the same problem myself.

English hid the problem, Serbian exposed it

I use VibeLing to learn English and Serbian myself. I also added a few Turkish words when I was in Turkey.

With English the original mechanic worked well. I'm constantly exposed to the language: I watch movies, I read articles. Unfamiliar expressions show up on their own. All I have to do is add them to the app.

With Serbian it turned out differently. I live in Serbia and use the language in everyday situations, but I don't consume content in it.

As a result, my dictionary had about thirty words and phrases added several months ago. I kept reviewing them but added almost nothing new.

And that's when I finally understood what had been wrong with the product all along.

VibeLing handled a word beautifully after the user brought it in. But the hardest part of the process the app left to the person: first find a suitable word somewhere and decide what's actually worth learning.

So the whole path looked like this:

  1. Find a useful new word outside the app.
  2. Add it to VibeLing.
  3. Get the translation, examples and pronunciation.
  4. Learn it and review it on a schedule.

I'd built steps two through four well and for almost a year mistook them for the entire product.

The app started in the middle.

What if the app itself should know what to learn next

Instead of waiting for the person to bring in the next word, VibeLing can offer them a new list of words and phrases every day. Not the same one for everybody, but one built around their language, level, goal, interests and existing dictionary.

My list came out like this because I'd added too many words from Better Call Saul

My list came out like this because I'd added too many words from Better Call Saul

If someone is learning Serbian from scratch to live in the country, they can be offered expressions for the store, the doctor or a chat with the neighbors. If they have B2 English and add vocabulary about software development, the set should be completely different.

At the same time, the user still makes the decision themselves. Anything useful can be added to the dictionary with one tap. And if some words weren't added, it means they're not interesting or the user already knows them. The next day the app builds a new list, taking the previous choice into account.

A few years ago a feature like this would have required manually building a huge word database, linking it to levels and topics, and then separately maintaining all of it for every language.

Now much of this task can be handed to LLMs. As input, the model gets the language being learned, the user's level, goals and interests, their current dictionary and the list of options already rejected. As output, I get a small structured set of new words and phrases.

This isn't yet a sophisticated recommendation system with years of behavioral history. But it's no longer a static collection that's the same for everyone either. The main thing is that the app can now continue the journey from the place where a specific person currently is.

A tool started turning into a system

Before, I described VibeLing roughly like this: "A convenient app where you can add any words and phrases and then learn them."

The description was accurate, but it had no answer to an important question: why should the user come back tomorrow if today they have nothing to add and nothing to review?

Now the concept sounds different: VibeLing itself knows what you should learn next.

For me, that's the main shift. Before, I was building a good tool for a person who already understands what they want to learn. Now I'm trying to build a system that fully solves the problem of growing your vocabulary.

I've already shipped the feature and started reworking the screens, copy and promo materials around it. But it's too early to say the hypothesis has worked. I still need to see how many people open the recommendations, how many items from the list they add, whether they come back for a new list the next day, and whether they start doing training sessions more often.

It's quite possible the first recommendations will turn out not accurate enough, or people will need more control. Usage will show.


If you'd like to see the mechanic live, the app is called VibeLing. It's available on iOS and Android.

The free version recommends 3 new words or phrases a day. Pro gives you the full daily list of ten. Pro has a 3-day free trial. Training sessions and adding your own words have no limits in the free version.

I'd especially appreciate feedback on the quality of the recommendations. Right now that's the main question for me.

on September 18, 2026