01Live
Sprachvogel
A German course from A1 to B1. I built it and I run it on my own.
I am learning German myself, so I built the course I wanted. An LLM pipeline writes the content. Rule-based scripts check it, and two model reviews audit it before it ships. It is free and has no ads.
3,213words
224graded stories
30grammar lessons
~1,100automated tests
ProvesI finish things and run them alone.
02Open source
divan
Guardrails for AI coding agents, in code instead of prompts.
Agents skip rules written in a prompt, so I moved the important ones into code. A hook refuses destructive commands. A lint refuses a fact in two places or a secret in a commit.
ProvesI engineer agent workflows that hold up.
03Paper in preparation
Early depression detection
MSc research, University of Malaya.
A long-context transformer (Mental-Longformer, 4,096 tokens) reads a user's post history and looks for early signs of depression. It is measured on the unseen eRisk 2025 collection.
0.740F1
0.958AUC
909unseen users
ProvesI measure on data the model has never seen.
04Published
Re-auditing my own coursework
I found the leaks in my old results and published the fixes.
Two of my course projects reported near-perfect scores. In 2026 I re-audited both. One trained on synthetic data and had a feature that leaked the outcome. The other used the inputs of its own label. I published the originals next to the fixed versions.
0.92F1, obesity risk
0.75ROC AUC, survival
ProvesI report the lower number when it is the true one.