This one runs while I sleep.
What I scheduled: a race-calendar scraper for my running brand (Mile Sports). On the 1st of every month at 04:00 it crawls 11 Danish running sites (7 partner clubs + 4 public race calendars), an AI model reads each page and pulls out every upcoming race (name, date, distances, price, signup link), it removes duplicates, saves everything to Notion, and then auto-syncs the confirmed races to the race calendar on my webshop plus a Google Calendar. One task, four steps, two outputs.
Scheduled task or loop? A scheduled task on a cron, not a loop. Race calendars update in monthly batches, so once a month is plenty, and the task chains its own follow-up syncs so the whole thing is one clean run.
The status-file idea from today's lesson is basically baked in: before every run it reads everything it already saved in Notion, so it never creates duplicates. It only adds what is new and updates what changed. Notion is its memory between runs.
One surprise: last run it pulled 56 race listings across 11 sites and merged them down to 38 unique races on its own. 18 duplicate listings collapsed without me touching anything. Two small errors (one site down, one failed write) got logged and skipped, and the rest of the chain finished itself. I usually only notice it ran because the calendar on my site is suddenly up to date.
It still asks permission where it matters: new races land as "unconfirmed" and I approve them before they go live. Runs on its own, but I own what publishes.
#AISChallenge