Skip to content
Kyle Rivelli.

Work

Browser automation · Live · since October 2026

The load-board refresh bot.

Every 15 minutes a desk PC pulls the board from the TMS, wipes the stale postings on the load board, uploads the fresh file and posts it. Nobody touches it.

LivePuppeteerChrome DevToolsWindows Task SchedulerTMS report feed
on a clockbrowserportalverify

The problem

The load board has no affordable posting API, so keeping postings current meant a person refreshing the TMS, wiping the old postings and re-uploading, roughly every 15 minutes, all day. When the teammate who did it left, the cycle landed on a desk that was already full.

How it works

  • A real Chrome browser, driven over the DevTools protocol from a scheduled task on a desk PC, with a persistent logged-in profile. Log in once; every future run reuses it.
  • Each cycle: pull the live board from the TMS report feed, build the posting file, wipe only this user's postings (never the shared team view), bulk upload, post, then verify the board shows what was sent.
  • A pull that returns zero loads refuses to wipe anything. A cycle that dies after the wipe retries immediately, so the board is never left empty for a quarter hour.
  • Posting contact rules follow the desk's day: email-only postings before 7:45, a hold while early replies are answered, both phones from 8:00.
  • Runs Monday to Friday, 7:00 to 17:45 Central, with its window covered. The cycle count per day is the health metric.

// a zero-load pull never wipes the board; a failure after the wipe retries at once

The result

The 15-minute manual cycle is gone. The board refreshes itself 43 to 77 times a day, and the operator who inherited the chore got the day back.

In practice

Synthetic example: the board after a refresh cycle

Schedule of the unattended systems, Central time.

Syncing the Central clock.

Your version of this exists.

Different industry, same shape: a repetitive workflow, a fragile spreadsheet, an inbox someone babysits. Tell me what the manual work looks like and I can usually name the first build in one conversation.