Why I Built my own Language App

Ok, so I recently got married to a Mexican-American, who speaks both English and Spanish. Naturally, since we started dating, I’ve been wanting/trying to learn Spanish. I say both wanting and trying, because just like everybody else these days - I am busy.
Over the years, I’ve picked up some basics - “quiero”, “me gusta”, “donde están los baños”. And as proud as I am of being able to ask to use the bathroom when I visit Mexico, I find my Spanish pretty lacking.
I’ve tried Duolingo, on and off, like most people have at this point. However, the last time I tried using it, I was put off by all the weird optimization they have in trying to upsell you, and the over the top gamification - I’m not a child, and I don’t need a toy.
I’ve tried Babbel, and paid for a subscription that I only used a couple times. Most recently, I’ve used Youtube videos (Dreaming Spanish, for example) - which has actually been pretty good. However, it’s hard to pick the right video, and to keep track of what I know and what I don’t know.
So I did what any other AI Engineer would do - I built my own app!
I started by doing research, to figure out what exactly is the optimal way of learning. A few things came out of this:
You need to read, to listen, and to speak - these are all different “muscles” so to speak.
Speaking and listening is easier if you have the vocabulary
Learning is easiest and most efficient with ‘Comprehensible input’. This means that you learn via immersion, but immersion tailored to what you already know. Not too hard, but not too easy.
FSFR is good for learning vocabulary. Anki works well - but a lot of time has to be spent finding the right card decks, etc.
Given the state of AI, I figured I should be able to make something optimal. I wanted to make an app that actually works - not a game, and not just a cool demo.
I settled on first building a system to track what you know. I built a grammar graph, following CEFR standards. Then, I built a vocabulary list, and a system which can track how often you’ve encountered a word, and how familiar you are with it. Finally, I created a profile page, where a user can specify what exactly they’re interested in. These three components formed the core of my backend.
Then I built 4 main features.
Short, personalized stories, generated on demand. These are short stories that are generated, with both text and audio, personalized for you.
I create these stories on demand, with an LLM. And I add some logic to make sure that the vocabulary and the grammar used in the story aligns with what the user already knows. I also instruct it to add a few new words. The goal is comprehensible input.
A short lesson bite is also created, and the story includes whatever it is that you encounter in the lesson. For example, if you are learning “Estoy” vs “Estar”, the story will include these. Words can be tapped to see their in-context definition
Personalized podcasts - similar to the short stories, but a little longer, and with higher quality audio. I use Gemini’s TTS here, which I find to lead to great results. This is useful for pure listening sessions, and I generated ‘podcast’ style audio around 8 minutes long.
Live tutor. Here, I’m using Gemini live again, which allows me to have a session with an AI. This is similar to using gemini, Grok, ChatGPT, etc in voice mode - but with the added benefit that it knows what I’m currently learning, and tracks it for me. (Queue the hackernews comments saying “ i dont understand why anyone needs this. You can simply setup a local LLM with a postgres db and do all of this, etc…”)
Vocab Review. These are just anki style flashcards, but fed by the above features. Any words you lookup during a story gets added to the review. no more time spent creating word decks - they’re automatically created for me as I use the app.
These also all use the core personalization and tracking backend, which makes it easy to increase difficulty as I learn more.
This experience has also highlighted how good the gemini suite of models has become. I’ve used a mix of gemini flash lite (for simple lookups - cheap), gemini flash 3.8 (for longer stories), gemini live (for the tutor), as well as gemini 3.1 TTS (for podcasts).
So far, I’ve been using the app for a few weeks, and my wife has been impressed with my progress.
For anyone interested - www.fabling.app.
Get more like this
I write about production AI, agentic systems, and the integration work behind shipped products. About twice a month.
Occasional email. Unsubscribe anytime.