Never Miss a Game
Two steps, in the order the agent uses them. Step 1 is your preferences.json: open it, tick your teams, turn the dial, and Save writes the same file back. Step 2 reads this week's schedules, the same read the agent gets, and shows which of the week's games are yours.
The agent reads preferences.json and nothing else about you. Open that file (or try the example), tick your teams and turn the dial, and Save writes the same file back. The JSON on the right is exactly what gets saved. Then go to step 2 to see which of this week's games are yours.
These follows are not teams the data knows by that key. The tool's Following line will not list them. Fix the abbreviation in the JSON or remove the entry.
{ }
Save writes this text to the file you opened, in place. Download hands you the same text as a file named preferences.json. Either way, run the tool read afterwards and check your team appears under Following by full name. That check reads the file on disk, so it proves the save landed. Step 2 does the same check against the published week, without a shell.
The agent's whole data layer is one local script, node read-schedules.mjs, which reads ten schedule repos and your preferences and prints the week. GitHub runs that same script from this repo a few times a day and publishes what it prints; this button fetches it, and the box under it checks the teams you ticked in step 1 against that week. Nothing runs on your computer. To change teams, go back to step 1; the box here follows.
Click "Read this week's schedules". The panel fills with what the tool printed (America/Phoenix, seven days, every game): every source and its state, every followed team from the committed preferences, then every game in the window by day.