Work /Flux Outdoor January 2025

Flux

Real time and historical reporting for digital out of home.

Sites playing, inside the selected window

Thousands of plays per minute Rolled up in MongoDB The exact creative each screen served

Flux Outdoor runs digital out of home advertising: screens in real places, playing creatives that change with live data. I built the reporting system that answers what actually happened on those screens.

Thousands of transactions per minute

Every play on every screen is an event, and the network produces thousands of them per minute without pause. The hard part of that is not writing them down, it is being able to ask questions about them afterwards: a report over an afternoon, a month or a year has to come back in the same interface, at the same speed.

MongoDB holds the data at several levels rather than one. The raw events stay raw, and above them sit progressively coarser rollups, so a query is answered at the level that matches the window being asked about instead of scanning the detail every time.

The map is the report

The centre of the tool is a world map. You pick a period and the map shows what played on every site, anywhere in the network, for that window. From there you drill into a single site and a single moment.

That last step is what the reporting had to prove. Creatives in a dynamic campaign are personalised per site and fed from several live APIs, so two screens on the same campaign at the same second were not necessarily showing the same thing. A report that only counts plays cannot answer the question an advertiser actually asks, which is what my ad looked like, on that screen, at that time. The tool reconstructs the exact version that was served.

The campaign side

Beyond reporting, I worked on the dynamic campaigns themselves: tools to personalise and preview creative content driven by live data, and the integration of new data sources into that pipeline.