A task manager that organises, categorises and prioritises work automatically. Suggestions are surfaced, never enforced, and every automatic categorisation can be corrected — with corrections feeding back into later behaviour.
Carries into the engineBehaviour systems that suggest rather than dictate, and a typed contract between a fast front end and a slower service — the shape of a game AI layer talking to gameplay.

The problem
To-do lists fail because they treat every task as equal. The interesting question is prioritisation: which of these twenty items actually matters today? That is a problem applied ML is genuinely suited to.
What I built
A React front end, a Node.js API layer, and Python services doing the intelligence. Tasks are categorised and ranked automatically; productivity is tracked over time so the recommendations improve rather than ossify.
Why it matters here
Splitting the stack so each layer does what it does best — and defining a typed contract across the boundary — is the same design as a behaviour or AI subsystem that has to answer gameplay without blocking it.
What it taught me
Automation has to feel helpful rather than bossy. A system that quietly overrides a person's judgement gets turned off; one that offers and then learns from being ignored gets kept. That is a design rule, not an ML one.