Two months ago, I built a Tamil learning assistant for Skanda’s Saturday morning lessons with his paatti (grandmother). Three hours, done, working, and published to AUR. At least with Tamil I can recognise the script - grew up around it, can tell if text renders properly.
Then, a good friend messages, a week later, seeing the Substack article. She’s teaching German in India. Her initial message:
“Students who are learning German, especially those with no prior experience in learning a foreign language, often struggle with reading comprehension... Teachers spend significant time selecting appropriate texts, designing pre-reading tasks, and creating exercises that build both comprehension and vocabulary.”
Then more context: Today’s German learners in India aren’t the elite, culturally-curious students from the 70s-90s. They’re aspiring nurses, engineers, and vocational trainees seeking opportunities in Germany. First-generation graduates. No foreign language background. Juggling jobs and studies. Learning from necessity, not curiosity.
Her problem? A convoluted workflow. Manual vocabulary tracking. Hunting German news sites for texts containing specific words for spaced repetition. Hours spent on logistics instead of teaching students who already struggle with learning strategies.
I don’t know German. Can’t read it, can’t speak it, can’t write it. But I’d just built 40% (or, as the President south of the border says, “who knows, it could be 100%, 200%, or even in some cases 800%” ) of what she needed.
The Homework Phase (Or: Why We Didn’t Just Start Coding)
First instinct as a PM who codes? Don’t build yet. Research first.
Week 1: Tool evaluation Analysed existing German teaching tools:
- Twee: Exercise generation from texts, but no long-term vocabulary tracking
- Diffit: Auto-generates comprehension questions, one-off analysis only
- LATILL: CEFR-tagged German texts, but can’t search for texts containing specific vocabulary
- LingQ, Anki, Quizlet: Student self-study tools, not teacher-managed workflows
- Monsha: Reading comprehension generators, no vocabulary tracking across time
Pattern: Every tool did ONE thing well. None solved her complete workflow: vocabulary tracking + text discovery + exercise generation + spaced repetition.
Week 2: Requirements gathering. She sent a detailed requirements document. Covering:
- Her 7-step teaching methodology
- Student profile (first-generation learners, no language learning strategies)
- Pedagogical approach (didaktische Reduktion, Vorentlastung vs Kontext erschließbar)
- Specific workflow needs (track → review → find new texts → generate exercises)
- Example exercises showing contextual vocabulary recycling
This wasn’t “build me a thing.” This was “here’s exactly how I teach and what’s broken.”
Week 3: PRD creation, Created German_DaF_Teacher_Assistant_PRD scoping:
- Phase 1 MVP: Text upload, AI analysis, vocabulary tracking, exercise generation, basic spaced repetition
- Phase 2: Lesson plan generation, grammar discovery (SOS method)
- Phase 3: Cross-text intelligence, contextual recommendations
- Phase 4: Student profiling, analytics
- Phase 5: Multi-teacher support, production polish
Phase 1 goal: End the manual tracking chaos. Everything else could wait.
Then we started building.
The Real Problem (That She Explained Over Two Weeks)
First, I thought: build vocabulary tracking, generate exercises, done.
Then she sent the actual example. Yesterday’s text was about Schuluniformen (school uniforms). Today’s revision exercise - four friends planning a vacation. But the blanks? All words from yesterday’s uniforms lesson: entscheiden, Regeln, vermeiden. Same vocabulary, completely different context, coherent story.
This is her workflow. Not flashcards. Not vocabulary lists. Contextual vocabulary recycling through authentic stories. Systematic spaced repetition embedded in reading comprehension.
And she’s doing it manually. Writing stories. Or hunting texts. Tracking everything in Excel - sometimes.
Building Blind (Armed With Research)

Important context: I still can’t verify anything myself. When she reports “the exercise is asking what vorschreiben means and the answer is vorschreiben,” I have no idea what’s wrong. Just that it’s wrong.
But I had the research. Her requirements doc. The tool evaluation. The PRD scope. Understanding of German pedagogy from documents (thank you, Claude/Gemini), even though I couldn’t read German text.
The iteration cycle:
- I push code to GitHub
- She tests
- Messages bugs via WhatsApp/Github
- I fix without understanding German
- She tests again
- Repeat (Vanthan-suttan-sethan-repeat)
Started with local storage (blessing in disguise - multiple teachers can use it, each browser isolated). Text upload works. AI analyses CEFR level, suggests vocabulary. Batch processing (learned via token limit failures). Exercise generation.
Week 1 bugs:
- Text selection broke on German compounds (einschränken selected every “en”)
- Separable verbs confused the AI (vorschreiben splits to schreibt...vor - the “vor” disappeared)
- Matching exercises were circular (”What does vorschreiben mean?” Answer: “vorschreiben”)
- Case sensitivity broke duplicate detection (”Arbeit” vs “arbeit”)
Every bug taught me something about German I don’t need to know. :-D


The Prompt Engineering That Actually Mattered
Generic AI prompt: “Generate exercises for German vocabulary”
Result: Garbage. Circular definitions. Random distractors. Incomplete sentences.
The fix wasn’t better models. It was encoding everything I learned during the research phase into AI instructions.
200+ line prompt built from:
- Her requirements doc explaining Vorentlastung vs Kontext erschließbar
- Tool evaluation showing what makes good vs bad exercises
- Her example exercises demonstrate contextual vocabulary recycling
- Bug reports are teaching me about separable verbs, compounds, and articles
The prompt encoded:
- Separable verbs split: vorschreiben → schreibt...vor
- Compounds explain themselves: Deutschlehrer = Deutsch + Lehrer
- CEFR-appropriate complexity (A1: 8-12 words, B1: 12-18, subordinate clauses allowed)
- Pedagogical categories from her requirements
- Exercise quality rules from analysing Twee, Diffit, and Monsha outputs
Every bug she found became a new rule in the prompt. The research phase gave me the framework. Her feedback taught me the edge cases.
Generic prompt: 0% usable exercises. Research-informed prompt: 70% usable exercises (she edits the other 30%)
Prompt engineering took longer than app architecture. But that’s the difference between AI garbage and something she can actually use.

What she’s going to evaluate (Over the days)
A working workflow:
1: Upload text → AI suggests 15 words → she picks 10 → categorizes → batch generates 30 exercises → reviews/edits → marks approved
2: Teaches the text with reviewed exercises
3: System reminds “3-day interval - review these 10 words” → she creates revision exercise (still manual - that’s Phase 2)
Next: 7-day reminder → she searches LATILL for texts with those words → or writes a new story
Manual tracking chaos: ended. Not because everything’s automated. Because the system tracks what she needs to track, reminds her when words need review, and generates exercises she can edit instead of starting from scratch.
She’s going to test (daily). Probably with her students.
The Technical Choices That Enabled This
Local storage over database: Each teacher is isolated, privacy by design, zero server costs. Drawback: Clearing the cache loses data. But perfect for MVP validation with parallel users.
Gemini Flash Lite 2.5: Sweet spot of cost vs quality. Separable verbs still win battles, but 70% usable beats 0%.
Prompt engineering over model selection: Spent more time on the 200-line prompt than on the architecture. Teaching AI about German pedagogy matters more than which model runs it.
WhatsApp collaboration over sprint planning: Bug reported → fixed within hours → pushed to GitHub → she refreshes browser → tests. Rapid iteration only works because N=1 user who’s patient and engaged.
What I Actually Built
A tool that ends one teacher’s manual tracking chaos while helping her create contextual vocabulary revision for aspiring nurses and vocational trainees in India learning German - first-generation graduates with no foreign language background, juggling jobs and studies, learning from necessity rather than curiosity.
Built without knowing German.
This works because of the collaboration. She’s not just the user - she’s the domain expert, QA tester, product manager, and German linguistics teacher I never had. Every bug report teaches me something. Every “thinking aloud” message reshapes understanding.
I don’t speak German. But I know enough to make AI generate exercises she can use. That’s enough.
What I Love About N=1 Building
Many projects this year:
- My portfolio site
-
Interactive learning:
-
Linux Boot Process
- Cellular Voyage
- RMT Finder
- Tamil Assistant for Skanda (language I somewhat recognise)
- and this - German DaF Assistant (language completely foreign)
In all: real person, real problem, real usage, real feedback, real iteration.
But different processes:
- Tamil: Three hours, straight to code (I could verify output)
- German: Three weeks of research → requirements → PRD → then build (couldn’t verify, needed framework first)
Neither: market analysis, stakeholder reviews, scale discussions.
The PM discipline mattered for German because I couldn’t wing it. No German = can’t verify = need to understand pedagogy first. The research phase taught me the domain. Requirements gave me the scope. PRD defined success. Then iterate with her feedback.
The joy is in the collaboration. Building at the speed of trust, but with homework done first.
Skanda uses Tamil Assistant without complaining. A friend was saved from a convoluted workflow for her teaching. Probably, students will be learning German with better exercises.
அஃதே எனக்கு வழியாம். (That is my path.)
The German DaF Teacher Assistant: GitHub (a private repo for now)
Status: MVP in active use. Phase 1 complete. Manual tracking chaos ended. Separable verbs are still challenging. Built without knowing German.
Key lesson: Building for domains you don’t understand? Do the homework first. Research existing tools. Gather detailed requirements. Scope the PRD. Learn the pedagogy from documents even if you can’t read the language. Then prompt engineering > model selection. Encode domain expertise into AI instructions. Iterate with domain experts who can verify what you can’t.
Made with ♥️ for teachers who message “Exciteddd :)” when you ship features, and for building tools through WhatsApp collaboration instead of product roadmaps.