Stop selling the same billboard twice
Any business that sells time on a finite physical asset eventually meets the same failure. Two people commit the same thing to two customers for overlapping dates, and someone has to make a phone call. Hoarding faces, event spaces, meeting rooms, hire vehicles, equipment, studio time, exhibition stands — the asset differs, the failure is identical.
It is usually treated as carelessness. It is not. It is a structural consequence of how the inventory is recorded.
The spreadsheet has no opinion about time
A spreadsheet inventory is a list of assets with a status column. Someone writes “booked” or “free”, perhaps with dates in an adjacent cell. Three properties of that arrangement cause the problem.
First, status is asserted rather than derived. The cell says “free” because a person typed it, and it stays saying “free” until another person remembers to change it. The gap between the commitment and the edit is the window in which the asset gets sold again.
Second, the file has no concept of overlapping intervals. A booking is not a state, it is a period, and one asset can have many periods that must not intersect. A status column flattens all of that into one word. “Booked” cannot express “booked for the second half of next month but free until then”, so the team invents conventions in comments, and the conventions differ per person.
Third, and worst, the file gets copied. Someone downloads it to work on the train, someone else emails a version to a client, a third person keeps a filtered copy for their region. Once there are several copies there is no authoritative answer to “is this free”, only several answers of unequal age. Shared cloud spreadsheets soften this but do not remove it, because the person quoting is still reading a cached judgement rather than asking a question.
What a shared calendar changes
The alternative is not a nicer spreadsheet. It is a change in where truth lives.
Model the smallest thing that is actually sold. For out-of-home media that is a single face of a structure, not the structure, because a two-sided hoarding is two sellable things and treating it as one guarantees confusion. For a hire fleet it is the individual vehicle. For rooms it is the room. Get this wrong and every later rule is wrong with it.
Then record bookings as intervals against that unit — start, end, and the customer or campaign they belong to. Availability is no longer stored anywhere. It is computed: an asset is free for a period if no booking overlaps it. Nobody maintains a status column because there is no status column to maintain.
The overlap check then belongs in the system, at the point the booking is written, not in a person’s attention. This is the part teams get wrong when they build it themselves: checking availability in the interface and then writing the booking leaves a race between two people clicking at the same moment. The constraint has to be enforced where the record is created, so that the second write fails rather than succeeds quietly.
The details that decide whether people use it
Turnaround and setup time are bookings too. A hire vehicle needs cleaning between customers; a hoarding needs mounting time; a room needs resetting. If those periods are not represented, the calendar will happily show availability that operations cannot deliver, and within a month people go back to asking a person. Model them as blocking periods on the same timeline.
Holds must expire. Sales needs to reserve something while a client decides. If a hold never expires, the calendar fills with dead reservations and its availability becomes as untrustworthy as the spreadsheet was. Give holds an expiry and let them lapse automatically.
One timeline per asset, all channels on it. The value evaporates if direct sales use the system and aggregator or agency bookings arrive by email into somebody’s inbox. Every channel must write to the same timeline, even if some of them write through an import.
Maintenance and unavailability belong on the timeline. Servicing, repairs, permission lapses and structures taken down for repainting all remove sellable time. Put them where bookings live and they compete for slots properly, which means they get scheduled into gaps instead of colliding with a customer commitment.
What you get beyond avoiding the phone call
Once availability is derived, several other questions become answerable without extra work. Utilisation per asset stops being a month-end reconstruction and becomes an obvious calculation over the same intervals. Forward availability can be shown to a customer asking about a period three months out. Invoicing can be generated from the periods actually served rather than from booking notes, which quietly closes the gap where shortened campaigns and mid-flight swaps used to escape the bill.
And a disputed booking becomes a matter of looking rather than arguing, because the record of who committed what, and when, exists as a consequence of the booking having been made.
The honest caveat
None of this fixes a team that commits verbally and records later. If the sales conversation ends with “I’ll block it for you” and the entry happens that evening, the window is still open. The system has to be usable at the moment of the promise, from a phone, in a few taps. Availability that is only correct when someone gets back to their desk is availability that is only sometimes correct.