VeryBad.Dog
All six projects

Personal tool

Events board My events calendar, updated by AI.

My own events calendar, kept current by AI agents. The design problem: the agents rewrite the listings on every refresh, and my stars, plans and notes have to survive that. Everything shown here is sample data; the real listings stay private.

Sample data: an agent’s listing lands, I star one, and my pick overrides the agent’s file.

What I set out to learn

I wanted to see whether AI agents could keep a data file current on their own while my own choices stay mine. The agents rewrite the listings on every refresh, so the design question was where my stars, plans and notes live, and who wins when the two disagree.

The app itself

The events board on a desktop, in its dark scheme: a week strip of day tiles above a list of upcoming concerts grouped by night, each row with a star, time, act, venue, plan and price. One concert is selected and its detail panel is open on the right, with Going, Maybe, Pass, a star and a Tickets button, the reason it was picked, and an empty note field.
Sample data. Browse, with one concert’s detail open beside the list.
The events board on a phone: counts for tonight, this weekend, the next seven days and saved, a row of tonight-and-tomorrow cards, then the first pick card with its date, venue, the reason it was picked, a Going mark and a genre tag.
Sample data. Picks on a phone: what’s on soon, and why each pick was made.
One concert’s detail on a phone: a plain venue card where a poster would go, the act, date, time and venue, why it was picked, an empty note field, the headliner and support, and a bar of Going, Maybe, Pass, star and Tickets buttons along the bottom.
Sample data. One concert on a phone, with the plan buttons in reach.

Decisions on Events board

  1. Agents keep the listings; my picks win any disagreement

    Why it matters I keep my stars, plans and notes where agents can’t write. Before each refresh a script merges them into the file, so an update can’t wipe one out.

  2. Event posters fetched politely

    Why it matters The fetcher names itself, waits a second between requests to the same site, gives up after 10 seconds and skips generic artwork. A refresh that hammers a ticket site gets blocked.