Tomorrow's schedule and an optional poem about the news on the Vestaboard every day.
This is a daily automation that updates a Vestaboard, a physical split-flap display that spells out text on flipping tiles, with two things: tomorrow's family calendar events and a short poem about the day's news. It reads two shared Google calendars (school and social), pulls out the next day's events, and lays them out to fit the board.
For the news, a second path grabs the day's top headlines and has an AI write a short poem that fits within the board's limited space. The calendar and news parts run independently, so either one can be turned off on its own.
It runs by itself once a day on a Mac, with no clicking required, and keeps its own logs.
Features
- Tomorrow's schedule appears on the kitchen wall every evening, no clicking required
- Combines the school and social family calendars, including repeating events
- Long event names are automatically shortened to fit the board, with family names kept intact
- A short poem about the day's news, written fresh each day to fit the board exactly
- Calendar and news halves run independently; either can be turned off on its own
- Can display any date on demand, not just tomorrow
Under the hood
- —An AI pass compresses each event title to fit a board row (22 characters for all-day events, 16 after the time prefix), with prompt rules that abbreviate known activities but never shorten family names
- —Poem generation is two-pass, a first draft then an AI rewrite that enforces the 4-line, 18-characters-per-line constraint, so the poem always fits the tiles
- —Two models split the work, a creative model writes the poem while a cheaper one compresses event titles, matching model cost to task difficulty
- —Recurring-event expansion runs under a 5-second alarm, so a pathological calendar feed is skipped instead of hanging the nightly job
- —The wrapper script sets an explicit PATH and exports .env variables itself, so the job behaves identically under launchd's minimal inherited environment
- —Calendar and news are independent pipelines sharing only the board writer, which converts text into the board's 6x22 tile grid and submits it over the Read/Write API
