HUVA academy
Free guides
AI System · Guide

I Built My Own Duolingo. You Can Too.

AM Ani Mkrtchyan 12 min read Updated October 2026

You can build almost anything with AI now. Not someday. Today, with no coding background.

So stop waiting for the perfect app. Build your own.

I did it for Portuguese. Language apps give everyone the same lessons. I wanted a tutor that practises the conversations I actually have, corrects me once, and brings my own mistakes back the next day. So I built it with Claude Code and called it milo.

This guide shows you how to build the same tool for any language. It is a perfect first Claude Code project: small, useful from day one, and fully yours.

Part 1

What milo does

Three tabs: Talk, My mistakes, Real messages. And five simple moments. Here is what each screen looks like.

milo. Your personal language tutor
TalkMy mistakesReal messages

1 · Onboarding

First, tell me about you.

A2B1 IntermediateB2

Why: To feel confident living abroad

PharmacyMy landlordClient calls
Let's practise your real life

2 · Talk

Let's talk about yesterday.

Portuguese · Your landlord

«Como correu a conversa com o teu senhorio?»

I'm listening. Take your time. No corrections while you speak.

3 · After you finish

One small correction.

Your meaning was clear. Let's make it smoother.

YOU SAIDOntem falo com o meu senhorio.
TRY THISOntem falei com o meu senhorio.

Use falei because it happened yesterday. Saved to your mistakes.

Say it once more

4 · The next day

A little practice. Just for you.

Yesterday's mistake. Today's progress.

Ontem ___ com o meu senhorio.

falofaleifalar

5 · Before you press send

Your message. In your voice.

«Olá, o aquecimento continua sem funcionar. Pode enviar alguém para o reparar?»

Before you send it, say it out loud once.

Practise my message

Why it works: four design decisions

  1. No corrections while you speak. When someone interrupts you, you start fearing mistakes more than you speak. Milo listens until the end.
  2. Only one correction after. Ten red marks teach you nothing, they just tire you. One correction actually stays in your head.
  3. Mistakes come back the next day. This is the secret. You do not repeat random sentences, you repeat your own mistakes from your own life.
  4. Real messages, rehearsed out loud. Before you send a message, you say it once. The next time, the same words come out of your mouth much easier.
Part 2

What you need before you start

A paid Claude planPro, Max, Team or Enterprise. Claude Code is already inside the Claude desktop app. Your tutor runs on it.
A computerMac or Windows. No coding needed.
ChromeFor voice. Speech in the browser works best there.
Part 3

Build it step by step

Step 1

Open Claude Code in the Claude desktop app

The Claude desktop app has Claude Code built in.

  1. Download the Claude desktop app for Mac or Windows and sign in.
  2. Click the Code tab at the top of the sidebar.
  3. Under the message box, choose Local, then click the folder button and choose Open folder. Create a new empty folder called my_tutor and select it.

That is it. Everything you type in that box now goes to Claude Code, and it works inside your my_tutor folder.

Step 2

Write CLAUDE.md, your tutor's memory

CLAUDE.md is a file Claude Code reads every time it works in this folder. Everything about you lives here: language and variety, level, why you learn, your 5 real situations, your tone and the correction rules.

Be exact about the variety. European and Brazilian Portuguese differ in sound, words and grammar. The same goes for many languages.

Tutor memory interviewPaste into Claude Code
I want to build my own language tutor app in this folder. Before we write any code, interview me and write a file called CLAUDE.md that will be the tutor's memory about me.

Ask me one question at a time, wait for my answer, then ask the next one. Cover:
1. The language I am learning and the exact variety: [your language, for example European Portuguese, not Brazilian].
2. My level: [your level, for example A2, B1 or B2].
3. Why I am learning it, in my own words.
4. My 5 real situations where I need the language: [your situations, for example pharmacy, my landlord, client calls]. For each one, ask who I talk to and what usually goes wrong.
5. The tone I want from the tutor (for example warm, short, a little humour, never childish).
6. The language I want explanations in: [your explanation language].

Then write CLAUDE.md with these sections: About me, Language and variety, Level, Why I learn, My situations, Tone, Correction rules.

Use these correction rules exactly:
1. Never correct me while I am speaking or typing an answer.
2. After I finish, give only ONE correction: the mistake that matters most for being understood.
3. First say what was clear, then show "You said" and "Try this", then one short rule in plain words.
4. Save every correction as a mistake to practise later.
5. Use only words and grammar that match my level and my variety.

When you finish, show me the file and explain in plain words what each section is for.
Claude asks you questions one by one, then writes the file itself. You only answer.
Step 3

Build the first version

Start small: the onboarding and the Talk screen. Text first, voice later.

First versionPaste into Claude Code
Read CLAUDE.md. Build the first version of my tutor app, called [app name]. Keep it small and simple.

What to build:
1. A small local web app I open in Chrome on my computer.
2. An onboarding screen titled "First, tell me about you." with three questions: my level (chips: A2, B1, B2), why I am learning (one line of text), and where I need it most (chips made from my situations in CLAUDE.md). A button: "Let's practise your real life".
3. A Talk screen. The tutor opens with one question in [your language] about my real day, linked to one of my situations, for example "How did the conversation with your landlord go?". For now I answer by typing. Voice comes later.
4. Three tabs at the top: Talk, My mistakes, Real messages. Only Talk works for now. The other two can say "Coming soon".

The brain: the tutor's replies must come from Claude on my Claude plan, not from a separate paid API key. Choose the simplest way to do this on my computer. If anything needs to be installed, ask me first, then install it for me and explain in plain words what it is.

Design: clean and calm. White background, one blue accent for buttons, a yellow highlight for selected chips, big readable text.

When you finish, start the app for me, tell me how to open it again next time without typing any commands, and explain in plain words what you built and which file does what.
The "brain" part matters: it keeps the tutor on your Claude plan instead of a separate paid API.
Step 4

Add one small correction and My mistakes

This is the heart of milo. Silence while you speak. One correction at the end. Every correction is saved to a file so you can repeat it tomorrow.

Correction logicPaste into Claude Code
Now add the correction logic, following the Correction rules in CLAUDE.md.

1. While I answer on the Talk screen, show no corrections at all. Show the line "I'm listening. Take your time. No corrections while you speak."
2. When I press Done, the tutor replies with a card titled "One small correction." It shows one sentence about what was clear, then YOU SAID with my sentence and the wrong word crossed out, then TRY THIS with the fixed sentence and the fixed word highlighted, then one short rule in plain words.
3. If my answer has no real mistake, say so and give a small compliment instead. Never invent a mistake.
4. Save each correction to a file called mistakes.json in this folder, with: date, situation, what I said, the fix, the rule, and how many times I practised it.
5. Under the card add a button "Say it once more" so I can type the fixed sentence again, and tell me if I got it right.
6. Make the My mistakes tab work: a simple list of saved mistakes, newest first.

Test it with 3 example answers that each have one mistake, and 1 answer with no mistake. Then explain in plain words what you changed.
Rule 3 stops the tutor from inventing mistakes just to look useful.
Step 5

Add next day practice

Here is the magic that is not magic. Exercises come only from your saved mistakes. No random textbook sentences.

Next day practicePaste into Claude Code
Add next day practice to the My mistakes tab.

1. When I open the app, check mistakes.json. Mistakes saved yesterday or earlier that I have not mastered appear in a section called "A little practice. Just for you." with the line "Yesterday's mistake. Today's progress."
2. For each mistake, make one gap fill exercise built from my own sentence, for example "Ontem ___ com o meu senhorio." with 3 options: the right form and two close wrong forms.
3. Generate exercises ONLY from my saved mistakes. No random textbook sentences.
4. When I answer right on two different days, mark the mistake as mastered and stop showing it.
5. Keep each session short: maximum 5 exercises.

Explain in plain words how the app decides what to show me each day.
Right twice on two different days means mastered. Short sessions keep you coming back.
Step 6

Add Real messages

You paste a message you need to send. The tutor fixes it gently, keeps your meaning and your voice, then asks you to say it out loud once.

Real messagesPaste into Claude Code
Make the Real messages tab work.

1. A box where I paste a message I need to send in [your language], for example to my landlord, a doctor or a client.
2. The tutor fixes it gently: it keeps my meaning and my voice, fixes only real mistakes, and matches the right politeness for that person. Show my version and the fixed version with the changes highlighted, plus one line about the most important change.
3. Under the fixed version show "Before you send it, say it out loud once." and a button "Practise my message" that lets me type or say it and checks it.
4. Save each message with the date, so I can practise it again later.

Do not send anything anywhere. This tab only prepares messages. I send them myself. Explain in plain words what you added.
The app never sends anything. You stay in control of what goes out.
Step 7

Add voice

Now you speak and milo listens. Chrome has speech recognition and reading out loud built in, and the app uses those.

VoicePaste into Claude Code
Add voice to the Talk screen and to Practise my message, using the speech features built into Chrome.

1. A microphone button: I speak, the app writes down my words, and nothing is corrected until I press Done.
2. A play button next to each tutor message that reads it out loud in [your language and country, for example Portuguese as spoken in Portugal].
3. Keep typing as a fallback everywhere. If speech recognition fails or is not available, show the text box with a short friendly note.
4. Set the recognition language to my exact variety from CLAUDE.md.

Tell me in plain words what works, what limits I should expect in Chrome, and how to test it.
Step 8

Use it every day

A 10 minute routine:

  1. Talk about yesterday for 3 minutes, without interruptions.
  2. Fix one thing and say it once more.
  3. Do yesterday's mistake exercise.
  4. Rehearse one real message out loud before you send it.

Length does not matter. Showing up every day does.

Part 4

Tips and final check

Fix an errorPaste into Claude Code
Here is the error I see: [paste the error]. Explain in plain words what went wrong, fix it, and tell me how to check that it works now.

Checklist

Summary

  • Apps teach textbook language. Your own tutor teaches the language of your life.
  • Four rules: no corrections while you speak, only one correction after, mistakes come back tomorrow, real messages are said out loud first.
  • You build it with Claude Code, one prompt per step, without knowing how to code.
  • It runs on your Claude plan. Not free, but no separate API key needed.

Built it? Show me.

Follow @aiwithani on Instagram. Every week I show how I build real AI tools for my life and my business.

Want to learn this in a structured way, not piece by piece? Check the HUVA Academy courses at huva.io/courses.

Related guides