Pavilion Festival — one CMS, 30 dynamic screens
A single event-state JSON drives 30 cinematic signage layouts across 6 stages — change a set time once and it cascades everywhere.
Festival schedules change hourly. Every change used to mean someone manually editing each screen. Mistakes were inevitable and visible.
Treat the schedule as the source of truth. Render 30 native layouts (Remotion + native modules) that subscribe to it. Stale-while-revalidate + offline cache means screens keep working through wifi blips.
Nothing dramatic — small layout heuristics for headshot crops and copy fitting. The AI is a polish layer, not the engine.
Designed the layouts and the rotation logic; defined what 'good' looks like for each stage.
One person now runs the screen estate that previously needed three.
Live polling without offline cache caused screens to flash 'no event' when wifi dipped. Stale-while-revalidate solved it permanently.
Make the data the product. The layouts are interchangeable; the schema is the moat.
- 01When AI looks like the answer for visual layout, often a templating system + good content discipline gets you 90% there.
- 02Always design for offline; venues have terrible wifi exactly when you need it most.