Categories page order change based on engagement
Do whatever you want with the first row and display partner its fine.
Any other row under that do the following:
Replace the viewer number with an engagement metric by default.
Engagement metric exemple:
Spark train or xp train. the average spark in the last 30 minute base on the number of active viewer. the more a train keeps going the higher the number with channel showing as on fire. Ex: One streamer is new and only has 10 people watching but the 10 people are chatting and sending skills and messing with the mixplay. he has a score of 500 and is on fire. One user is displaying a 24h stream with 500 viewer but no one has chatted for 10 minute and has no spark. He has a score of 10 and is cold.
Viewer hidden score metric with active user filter: Track the individual user platform engagement in the last month and give him a hidden score. look at a channel and take all the active user (active as in interacting in the last X amount of minute) add all the viewer hidden score and divide that by the streamer follower count or current viewership. Display that number next to the stream in the browse page.
If you have 600 people watching you because of auto-host but no one is talking you could still get a high score because you are only penalized for active viewer but you would also not end up automatically at the top of the website for absolutely no reason other than having been hosted.
Other thing to take into consideration, match user to each other, if a lot of user who watch channel X also watch channel Y have new user of channel X be suggested channel Y