You don’t even need fixed categories. You can auto-define and fill the cats based on attendance and rankings.
Very important point.
Some related random thoughts on cat systems and rankings below:
The W/kg cat limits were, I would assume, not arbitrary originally. Well, they were in a sense, but Zwift probably had good reasons for them. You can’t have too many categories because then smaller races will not get enough participants to make it interesting, so probably somewhere around 4, or 5 at most like in the US IRL system. And where do you draw the lines? I’m guessing they expected (and probably got) something that started to look like a bell shape, although perhaps a skewed one, with C and B as the big cohorts (meaning 5 cats could be a possibility) in terms of subscribers although with high activity in B and A. And D as the ‘growth’ cat, which a fair chunk of subscribers will only pass through and not stay in, plus a lower race participation. A is unattainable for a majority, the majority that is going to finance the whole enterprise.
But a results based system is never truly static. And so you don’t even have to try make it so. In fact, you definitely shouldn’t.
Typical league-with-divisions style rankings with a predetermined number to be culled from a cat and then moved either up or down doesn’t make sense when you have to handle loads of various races of which most are organized out of your direct control by the community itself. Tennis style rankings are absolute and theoretically very fair, but there are far too many Zwifters to manage such a system, it would just be a pain with little gain to even try and for many reasons. So you’d have to go with some kind of ranking score instead. Like the relatively pointless ZP rank (a shame really).
Score ranking systems share a common problem. Common in a double sense. There is always the issue with score stability and in more than one way. First you need to calibrate mobility, which is not trivial. What would warrant an increase in your ranking and by how much? You want reasonable mobility up and down. Not too fast, because then you’d just oscillate wildly around your ‘true’ rank. Not too slow or people get restless and give up. Rather, just right, or thereabout.
Second, there is another stability issue, and that is the risk of rank score inflation. If we think of cycling prowess as a typical human characteristic, it will, like everything else of the kind, have a gaussian distribution. I.e. Zwifters will fit under a bell shaped curve, with most being ‘average’ - they go under the fat middle of the curve - and smaller numbers in the weak and the strong end respectively. Now, if nothing else, the strong end tends to drive score inflation. Why? Because they keep winning. And if every podium increases your rank, even if only by a little… yeah, you get it.
Score inflation, however, is largely a ‘cosmetic’ problem, especially with cycling. One example of a system that suffered (or suffers) from inflation is the ranking that was/is used in the online computer game Dota 2, the world’s ‘biggest’ pro e-sport (not in numbers but in prize pool). Top players kept driving their rankings up and up and you could never really reach those numbers, no matter how talented you were, if you picked up the game late. So seen as a tennis style ranking it sucked because it did a bad job at ranking individuals against each other. But as a tool to pool appropriate levels of competition together and make fun and fair games it still worked pretty damn well - I actually think they loosened it up a little on purpose just to create a higher variance and make games more unpredictable and thus more interesting (although more streaky).
So all the developer had to do once inflation became too obvious was a) to hide the actual rank score and replace it with a symbol or, actually, a categorization (you’re silver, and you’re gold, and you there are gold with two stars and a swoosh, sort of), and b) to openly reset and recalibrate the rankings at appropriate intervals, to make sure newcomers had a chance to get on a level with the veterans and not trail behind. But that’s ranking score as a sum. A ratio based ranking will behave differently. There are many ways to design a system.
The system of systems, the so-called ELO system in chess, is also suspected [sic!] to suffer from inflation but only by surprisingly little considering everything. It seems stable enough over time. So it’s obviously possible to get it just right, or right enough. And cycling would be less afflicted anyway, since both chess and Dota 2 are games where two players or teams face each other, so on average and all else equal every second game you play you win and your ranking has a chance to increase (depending on how highly ranked your opponents are). But even the best cyclists typically don’t win every second race since there are so many participants in each race and so many factors at play that mediate success.
And besides, like Robert points out above, stability doesn’t have to be a big problem since category limits can be made dynamic. C is swelling too much? Make it smaller by adjusting the limits. It’s not much of a problem.
Mobility, though, can be a little tricky. When is a rider doing too well and in what contexts. And how quickly should we make that decision?
But the real challenge lies elsewhere. A chess game is a chess game, but in Zwift you need to design a system that can handle many different kinds of races. And how do you value those? Should a high placing in a sprint race award the same rank score increase as a win in a bambino fondo length race? And is a 33 km race worth as much as a 44 km race or rather only 75%, and why then 75% and not 80% or 65%? And by what factor should rank score gains be affected by the rank score of other race participants (or would it be too complicated to even consider those)?
Another issue is that you will need some kind of governance of race formats to help both the system and the clubs that organize races to fill the calendar with races that can fit into the cat system and not ruin it. And you also need to take full control and ownership of the categorization. It can’t be left to a third party to decide. Zwift would thus have to ‘intrude’ a little more on the community than they do today (plus allocate staff/resources to manage it all). I wouldn’t mind at all though.