Case study · Python · Stockfish · October 2026
A second brain that runs itself
My calendar, my chess games, my training app and my notes now live in one system. Each morning it writes me a brief, and every number in it comes from plain code that I can test.
Part of Work · What I'm doing
I wanted one place that knows my week: meetings, chess, training and the goals I set for the next six months. So I built it around my notes vault. Small routines collect the data on a schedule, the vault holds it, and a quiet dashboard shows it.
The design follows four layers, Memory, Agent, Pulse and Screen. Below are the layers, a day of routines you can scrub through, and what 589 of my own games taught me.
Terms used here
- Vault
- A folder of plain Markdown notes, opened in Obsidian and kept in a private git repository.
- Routine
- A small script with a schedule, a machine it runs on and a time limit. A runner starts the ones that are due every five minutes.
- Deterministic
- The same input always gives the same output, so the result can be tested.
- Stockfish
- The strongest open-source chess engine. It scores every position, and the change in score grades each move.
- Spaced repetition
- A position I solve comes back after longer and longer gaps; one I miss comes back the next day.
- iCal
- The standard calendar file format. Google Calendar offers a private iCal address for each calendar.
The design
four layers
- Memory. My notes vault is the single home for every fact. A map of nine areas points to each project, its state and its routines, and a nightly check confirms every link still leads somewhere.
- Pulse. A registry lists each routine with its time, its machine and its limits. The runner wakes every five minutes, runs what is due and writes one line per run to a log.
- Screen. A dashboard reads what the routines wrote and shows it. It keeps nothing of its own.
- Agent. Next, an always-on machine at home joins over a private network. It will draft and prepare, and sending stays with me.
A day
tap a routine
02:00
Chess patterns
New games from Lichess and Chess.com are reviewed by Stockfish and added to the pattern report.
589 games · about 6 s a game
Chess
589 of my games
The middlegame holds four times the opening's errors, so that is where my training goes.
Each tag comes from a rule or the engine's reply. An error can carry several.
Positions that come back
The report also picks my costliest errors made with time still on the clock. Each morning five of them appear in my notes as boards to solve. I tick solved or wrong, and the next morning a routine reschedules them.
The pattern finder is open source in jarvis-chess, with tests that check the grading on games with known blunders.
Rules
What keeps it trustworthy
- Plain code runs first. The brief, the chess grading and the drill schedule are deterministic, so I can test each one.
- Each fact has one home in the vault, and everything else points to it.
- Calendar links and keys stay in a local secrets folder that git ignores.
- Every routine has a time limit, a daily cap and a log, and pauses itself after three failures in a day.
- Only I tick my tasks and drills. The system counts and schedules.
Method
How I built it
I started with the vault and its map, then the routine runner, then each connector, testing every piece against cases I wrote first: recurring calendar events across the clock change, a routine that times out, a drill ticked wrong three days running. Personal data stays on my machines; this page shows only my chess numbers, which are public anyway.
Python · python-chess · Stockfish 19 · Lichess and Chess.com APIs · iCal · Obsidian · git · Windows Task Scheduler