Home

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.

Chess games reviewed589Lichess and Chess.com, by Stockfish
Routines on a schedule6each one logged, capped and paused after 3 failures
Brief ready07:30calendar, chess, training, goals

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

Where the data goesdots follow one morning's flow · swipe →
Sources on the left (calendar, Lichess, Chess.com, FIDE, training app, notes) feed the Pulse routines, which write into the Memory vault, which the Screen reads to show the brief and the dashboard. The Agent layer, an always-on machine, is the next step. Google Calendar Lichess Chess.com FIDE rating Olympus training Applications notes Pulse 6 routinesrunner every 5 min caps and a logcatches up after sleep Memory notes vault in gita map: 9 areas every fact, one homechecked each night secrets kept out Brief07:30 each morning Dashboardread-only, hourly Agentalways-on machine, drafts only · next step
  1. 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.
  2. 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.
  3. Screen. A dashboard reads what the routines wrote and shows it. It keeps nothing of its own.
  4. 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

routinesdrag around the dial
A 24-hour dial with the day's routines.

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

Errors per 40 of my movesmistakes and blunders
Opening1.1
Middlegame4.5
Endgame2.9

The middlegame holds four times the opening's errors, so that is where my training goes.

What kind of errorshare of 1,852
Spoiled a won position27%
Missed a capture or check25%
Short of time10%
Left a piece hanging9%

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.

wrong → tomorrowsolved → 3 days7 days21 days60 daysretired

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