Manabou: Teaching Japanese to Indonesians Bound for Work in Japan, with Gemini
Manabou is a Gemini-powered Japanese learning platform for Indonesians who are preparing to live and work in Japan. I built it because my own students needed it, and nothing else o...
Why I built Manabou
Manabou is a Gemini-powered Japanese learning platform for Indonesians who are preparing to live and work in Japan. I built it because my own students needed it, and nothing else on the market was made for them.
By day I'm a Senior Software Engineer at BREXA Technology in Tokyo. In the evenings I teach Japanese at PrefekturBrandan, a class for Indonesians getting ready to work here, starting with N5 and moving up to N4. I teach because I like teaching, and because I want more Indonesians to make it to Japan.
Teaching showed me the gap fast. My students are motivated, but they study after long work shifts, often on a phone, in a language (English) that isn't their first. The popular apps teach tourist phrases, explain everything in English, and stop at vocabulary. None of them answer the question my students actually ask: Am I ready for the JLPT, and am I ready for a Japanese workplace?
So in January 2026 I started building the tool I wished I could hand them. Nine months and 241 backend commits later, Manabou is what my class uses every day.
What Manabou does
Manabou turns "pass the JLPT and get to work in Japan" into a daily plan a tired learner can actually follow. Everything is explained in Bahasa Indonesia, and the whole app is an installable PWA that works offline on a phone.
The backbone is a roadmap with a concrete finish line. For N5, I defined what "ready" means: 900 words (the exam needs about 800), 100 kanji with their on and kun readings, the core particles, and listening and reading. The design target is simple: a learner who completes the N5 roadmap should pass Manabou's final assessment on the first try.
On top of that roadmap sit the tools that move a learner along it:
- Spaced repetition for vocabulary, sentences, kanji and particles, built on an SM-2 variant with an active-pool cap so beginners are never buried in reviews.
- Daily Mix, one session that interleaves cards, sentences, particles and kanji instead of siloing them, because interleaving beats blocked practice.
- Particle practice in three formats: cloze, sentence scramble and error correction, with per-particle mastery levels.
- Speaking practice: ondoku (reading aloud) and shadowing, scored against the transcript.
- Live 1v1 quiz battles over WebSockets with Elo ratings, plus a Japanese detective game, because my students study harder when it feels like play.
- Can-do checklists and a JLPT-style assessment, so progress is measured against the exam, not against streaks.
Where Gemini does the work
Gemini is the engine behind every part of Manabou that a static flashcard app can't do: it writes, explains, judges and role-plays. Fifteen backend services route through one Gemini provider layer. These are the ones my students feel most:
| Feature | What Gemini does | Why it matters for my learners |
|---|---|---|
| Job interview practice | Reads the learner's uploaded resume (PDF, DOCX or TXT) and writes a Japanese interview role-play: self-introduction, past experience, strengths and weaknesses, closing. Styles: keigo, casual, technical, behavioral. Every kanji gets furigana. | The interview is the gate to a job in Japan. Practising with your own career history in business keigo is something no textbook can offer. |
| AI mnemonics | Writes a memory story for each word, mixing Japanese sound with Indonesian meaning. | A mnemonic that uses your own language sticks; one written for English speakers often doesn't. |
| Sentence library | Adds furigana, an English and an Indonesian translation, and context tags to any sentence a learner saves. | Learners collect real sentences from work and daily life and get them review-ready in seconds. |
| Particle questions | Generates new cloze, scramble and error-correction items when the verified question bank runs out. Every AI item is saved and flagged for my review. | Endless practice on the hardest part of Japanese grammar, without letting unchecked content slip in. |
| Reading and listening | Generates graded passages and listening scripts at the learner's JLPT level. | Fresh material at exactly the right level, instead of the same textbook dialogue for the tenth time. |
| Conversation partner | Holds a free conversation, or quizzes the learner about a reading they just finished, with hints on request. | Speaking practice at 11 p.m. after a shift, when no teacher is awake. |
| Detective game | Writes Ace Attorney-style cases where the player finds grammar or factual contradictions in Japanese testimony. | Close reading disguised as a game. |
Speech is the other half. Google Cloud Speech-to-Text transcribes learners' ondoku and shadowing attempts, and Gemini adds furigana, punctuation and translations to the practice audio.
How it's built
Manabou runs on Google Cloud Run, and every AI call goes through a single Gemini router. That one choke point is what keeps a solo-built app reliable and affordable.
[embedded content: Manabou architecture · Cloud Run, Gemini router, Speech-to-Text]
The frontend is a Next.js 16 PWA; the backend is a Laravel 13 API with queue workers and a WebSocket server for live battles. Three design choices matter most:
- Tiered model routing. Each feature asks for a tier, not a model. Quick jobs like tagging a sentence go to Gemini 3.1 Flash-Lite; mnemonics, reading passages and interview scripts go to Gemini 3.5 Flash. If the first model fails, the router tries the other before anything breaks.
- Circuit breakers, not timeouts. If every Gemini key returns an auth error, the router stops trying for 15 minutes instead of making each learner wait for the same failure. A backup provider keeps the app usable meanwhile.
- Slow work goes to the queue. Speech-to-Text and long generations run as queued jobs, and AI endpoints share a rate limit, so one user can't burn the whole AI budget.
private const TIER_MODELS = [
self::TIER_LITE => ['gemini-3.1-flash-lite', 'gemini-3.5-flash'],
self::TIER_STANDARD => ['gemini-3.5-flash', 'gemini-3.1-flash-lite'],
self::TIER_ADVANCED => ['gemini-3.5-flash', 'gemini-3.1-flash-lite'],
];
What building it taught me
The hardest lesson: an AI feature that looks like it works can still be teaching the wrong thing. You have to audit it like a teacher, not just test it like an engineer.
My shadowing score wasn't measuring pronunciation. In September I audited the shadowing feature against the real data. The score was a character diff of the speech-to-text output, so 分かる and わかる counted as two errors for identical speech. Worse, the STT language model quietly repaired dropped long vowels and small っ, which are exactly the mistakes Indonesian speakers make. On top of that, practice clips averaged 53.6 seconds and audio and microphone couldn't run together, so the exercise was really repeating, not shadowing. I wrote that up honestly, shipped the data-integrity fixes first, and planned the scoring rebuild in nine phases.
A three-byte bug had silently emptied a feature. The shadowing seed file started with a UTF-8 byte-order mark. PHP refused to parse it, so every fresh install got 88 clips with no transcripts. Fixing it would also have armed a dormant truncate() that wiped every learner's attempts, so both changes had to ship together.
Never trust unreviewed AI content in front of beginners. A beginner can't tell a wrong particle from a right one. That's why AI-generated questions are saved, flagged and reviewed, and why the question bank is served before Gemini is asked for new items.
Fail safe, not blank. A failed re-transcription used to wipe a clip before the API call even returned. It now builds the new version first, commits in one transaction, and keeps a revision so any edit can be undone.
Why this is a Future of Work project
Japan needs workers, and Indonesia has young people ready to go. The bottleneck between them is language, and today that bottleneck is cleared mostly by expensive classes or by luck. Manabou is my attempt to make the path cheaper, measurable and available at any hour.
It's built for the workplace, not the holiday: business keigo, interview role-plays from your own resume, IT vocabulary decks, and readiness measured against the JLPT that employers and visa programmes ask for.
What's next:
- Real pronunciation scoring for shadowing: short sentence-level clips, scoring in kana instead of mixed script, and feedback on long vowels and small っ.
- N4 and N3 roadmaps, following my class as it moves up.
- Spoken mock interviews, where Gemini plays the interviewer live and gives keigo feedback, not just a script.
- Opening Manabou beyond my own class through PrefekturBrandan, so any Indonesian heading to Japan can use it.
I started Manabou to help a few students in my evening class. With Gemini doing the heavy lifting, one teacher's tool can grow into something that helps thousands of people start a new working life in Japan.
— Jabbar Ali Panggabean