To be fair with First's app the problem is that a lot of people don't know how to use it properly. It's poor but 9 times out of 10 a bus that says due with no capacity beside it isn't running at a minimum. That tends to be the most accurate thing about it though.
this is because of the way the “boarding” & “alighting” works on the ticketers, me included.
I recall getting off of buses and the boarding on my bus was over 100, according to the ticketer.
When someone buys a single the machine will +1 for a passenger being boarded and that should correspond with the amount of people shown on the app.
the ticket machine will then remove that person on the fare stage they said they were meant to alight at.
With concession cards many a driver just leaves the ticket machine on the same fare stage so they aren’t searching a considerable list full of destinations therefore the ticketer isn’t removing them automatically based on the passengers actual destination they alight at.
With day tickets or weekly’s, the ticket machine will +1 a passenger boarding but won’t remove them, drivers are meant to be using the machine to guesstimate those on board but I don’t blame them that they aren’t.
Again, this is why buses are turning up relatively empty but the app may say full.