An events platform that publishes itself
The problem
A nightlife listings site is a treadmill. Events change weekly across a dozen venues; every one needs a working ticket link, the right flyer, and the right date. Done by hand that is a full-time job — and a single stale flyer or dead link quietly burns the trust the whole site runs on.
What we built
A pipeline that runs unattended every morning: it assembles the night’s listings, validates every ticket link, and — before anything reaches the public site — hands each flyer to an AI vision model that reads the printed artwork and confirms it actually matches the event’s date and lineup. Anything it cannot verify stays a draft.
Details that matter
- The vision gate exists because filenames lie. Three posters with perfectly correct filenames printed “AUGUST 20TH” on an August 27 card, “August 19th” on an August 26 card, and “08.20” on another August 27 card. Every conventional check passed them. The model reads the pixels, so it caught all three. They are now frozen as permanent regression tests.
- It fails closed. No API key, a spent quota, a timeout, an unreadable answer — every one of those means do not publish. A system that guesses when it is unsure is worse than no system.
- Every gate was written after a defect reached the owner. Wrong-night artwork, a mismatched promo code, a doors-time error, and a link still selling a night that had already happened. Each one became a permanent check, and the ledger of what went wrong is part of the codebase.
- The measurable result: in a single evening the verified board went from 9 published nights to 60. One morning’s unattended run published 38 events.
Outcome
A media property that maintains itself, built and shipped in 18 days. Keeping the listings accurate went from hours of nightly human attention to reviewing whatever the AI refused to publish.