Proof of concept This site is a work in progress, not the final version.
← Home

Scheduled
Automations

The best report is the one nobody has to remember to run. These jobs watch other systems on a timetable and send a short email only when something needs attention. A second layer checks that the jobs themselves are still running.

Tool
007 / Automation
Role
Designed + built
Inputs
Project systems, read-only
Outputs
Short emails, tasks, alerts
01 The weekday digest
digest / weekdays 2:00pmsent
Subject
Incomplete forms since yesterday 2pm
Covers
Active projects only · Mondays reach back to Friday 2pm
ProjectFormStarted byStatus
Project AlphaToolbox talkSupervisor 1In progress
Project AlphaTask observationSupervisor 2Draft
Project BravoSite walkSite managerIn progress

Grouped by project · each form name links straight to the form · no email on a day with nothing to chase

Illustrative sample data
02 What it does

Quiet until it matters.

  1. Weekday digestEach afternoon it lists the incomplete forms, so loose ends get chased the same day.
  2. Weekly site checkEach week it checks site diaries, walks, toolbox talks and observations, and drafts one email per project to forward to the site manager.
  3. Monthly report checkEach month it confirms every active project has filed its safety report for the month just ended, and says which hasn’t.
  4. Fortnightly updateEvery second week it creates a task to present an update, with the details ready.
03 The monthly report check
report-check / month end + 5 days3 of 4 filed
ProjectMonthly safety reportWhat it found
Project AlphaCompletedFiled for the right month
Project BravoCompletedFiled for the right month
Project CharlieWrong monthThe only completed report is logged against the month before
Project DeltaNot foundNo completed report for the month

Runs on the 5th at 5pm, or the working day before if it falls on a weekend or holiday · each month is recorded once, so it never sends twice

Illustrative sample data
04 Watching the watchers
automations / health1 alert
JobScheduleLast runStatus
Weekday digestMon–Fri 2:00pmToday 2:00pmHealthy
Weekly site checkWed 4:00pmWed 4:00pmHealthy
Monthly report checkNone found—Alert emailed
Fortnightly updateEvery 2nd MondayLast MondayHealthy

A daily check confirms every job still has a live schedule, and emails an alert if one doesn’t

Illustrative sample data
05 Principles

A job that fails silently is worse than no job at all.

  • Quiet by defaultNothing is sent when there is nothing to say, so the emails get read.
  • Read-only connectionsThe jobs can read other systems and create a task or email, but never delete or overwrite anything.
  • Watch the watchersEvery job is checked for a live schedule, because the worst failure is the one nobody notices.
  • Never twiceEach run is recorded, so a retry can’t send the same report twice.
06 How it’s built

Small services on a timetable, each built to fail loudly.

  • JobsEach automation is its own small Node.js service on Railway’s cron scheduler, with Melbourne-time guards so the same code behaves on holidays and weekends.
  • EmailResults go out through the Microsoft Graph mail API as a named sender, in a branded layout grouped by project.
  • Source dataThe site-management platform is read through its MCP server, limited to a read-only list of tools, with a rotating sign-in token.
  • StateA Postgres record of each run makes jobs idempotent, so a retry can’t send the same report twice.
  • MonitoringA daily check calls the hosting platform’s API to confirm every job still has a schedule, and emails an alert if one doesn’t.
StackNode.jsRailway cronPostgresMicrosoft Graph APIMCPOAuthIdempotent jobsDead-cron monitoringGitHub

Want to work together?

Get in touch→

Send me a message about your project or problem.

Contact me →