I like problems where the hard part isn't the model — it's everything around it. Concurrency, state that survives a restart, and the edge case that only shows up once you point the thing at a real user.
Most of what I build ends up with a test suite, because that's usually where I find out I was wrong.
stack = {
"languages": ["Python", "TypeScript", "C#", "JavaScript"],
"working_on": "agents that talk to real people on real channels",
"learning": "distributed systems, evaluation harnesses",
"principle": "if the demo is mocked, it isn't done",
}|
An agent that settles group decisions without a group chat. It runs a separate private negotiation with each person on the channel they already use — email, Telegram — behind one handler. When no option is unanimous it doesn't report a tie: it goes back to only the person blocking, or promotes someone's counter-proposal and re-opens it. |
Skin analysis and personal-colour web app — 11 dermatological scores from one selfie. sRGB → CIELAB colour engine with a 12-season classifier and a FaceLandmarker pipeline. CI is gated on model accuracy, so a regression can't merge. |
|
Automated geosteering for the ROGII Kaggle competition. Sparse weighted least-squares structural inversion plus gamma-ray path refinement. Pooled RMSE 15.88 → 12.47 (−21.5%) across 773 wells. |
A Pokémon TCG rules engine and agent ladder over a 1,267-card pool. Beam search over turn plans with root determinization and UCB1, an Elo evaluation harness, and 114 pytest tests holding the rules engine honest. |
|
Layered Web API with JWT refresh-token rotation and RFC 7807 error middleware. 44 xUnit tests running in CI against a live SQL Server container — not a mock. |
A daily logic puzzle with streak tracking and a heatmap of your history. Small, but the kind of thing people actually come back to. |