Deutsch Sprach Gym
I built this independent personal project to address fragmented daily language-learning continuity across content, feedback, vocabulary, progress, and conversation history through a persistent-state workflow connecting Telegram, orchestration, AI generation and feedback, and GitHub-backed state.
The problem
Generated learning material was easy to produce. The harder problem was maintaining continuity: remembering previous mistakes, creating targeted follow-up practice, preserving vocabulary and progress, and keeping the interaction lightweight enough for daily use.
System architecture
Telegram handles the daily interaction, Hermes coordinates generation and feedback, the OpenAI API provides language capability, and GitHub stores persistent state and learning artifacts outside transient conversation history.
Daily learning loop
- 01Generate personalised material
- 02Deliver through Telegram
- 03Learner responds
- 04Provide immediate feedback
- 05Generate targeted mini-drill
- 06Capture vocabulary
- 07Update learning state
- 08Produce review summary
- 09Persist and validate artifacts
Persistent learning state
feedback/Corrections and feedback artifactsmetrics/daily/Daily progress signalsstate/Current learning stateword-bank/Captured vocabularyprompts/Reusable agent instructionsscripts/Automation and validationtemplates/Consistent artifact structuresThese structured artifacts act as product memory, carrying forward the information required for future sessions without loading unrestricted conversation history on every run.
What this project demonstrates
- Scheduled daily execution
- Telegram-based interaction
- AI-generated feedback and targeted drills
- Persistent GitHub-backed state
- Bounded context
- Structured feedback, metrics, vocabulary, prompts, scripts, and templates
Reflection
- Persistent state is part of the product architecture for agent-assisted systems, not just a memory feature.
- A simple interaction surface can sit on top of a more complex orchestration and persistence layer.
- Feedback is more useful when it changes the next practice action rather than ending with a correction.