A broadcast groups its offers (broadcastGroupId) so that one acceptance invalidates the rest atomically; a cleaner who taps the link a minute too late sees "this job has been taken" rather than a second confirmation. Hosts can broadcast from the dashboard when a cascade has failed, or configure it as the default for a property.
Broadcast is deliberately not the default. Cascade keeps a property with the cleaner who knows it and gives the host a readable history; broadcast trades that for speed, and is the right tool when a checkout was booked this morning, when a cleaner has cancelled an hour before, or when a pool of company cleaners shares a building. Every offer in the broadcast is still a row with its own token, expiry and response, so the record shows who was asked and who answered first.