I've been wanting to make an elo leaderboard for our Twitch chatters since the legendary elo stream, but have never gotten around to it because I'm busy (and lazy). For the past week or so, I've built a system that triggers automatically after each stream, pulls the chat, and does some arbitrary scoring to finally compute an elo score. This score updates every stream, and I intend to reset it regularly (i.e. seasonal resets).
#Community Chat Elo (Beta)
1 messages Β· Page 1 of 1 (latest)
You can tell that it is not very polished; if you look at the source code: https://github.com/vanorsigma/neuro-chat-elo/tree/main, you might genuinely call an exorcist. Despite that, I decided to do a public alpha release to gauge community interest and feedback, because I am concerned that it may incentivise negative behaviour (like spamming chat, making chat toxic, etc). If the project is deemed unneeded, I would rather not spend too much effort to continue its development.
Some features I wish to eventually implement are:
- Automatic Seasonal Resets
- Animations to reveal the leaderboard after every new stream
- Titles (e.g. most unique chatter)
- Season-specific / Holiday-specific leaderboards
- Custom domain
During the public alpha period, I may occasionally reset the leaderboard. I will try my best to backfill as much as possible, but things like elo calculation may change, which will affect rankings.
If you have any feedback, suggestion, or would just like to leave a comment, please feel free to do so.
Thank you π
P.S. These leaderboards were computed on today's stream

that's pretty interesting
top overall chatters today
oh, you overtook val!
do you have top bits/gifted subs yet?
should be able to add them fairly easily. will be there by next stream
also, does the elo subtract emoji spam?
is it normal messages (text, text with emotes) or does it also calculate messages with only emotes
at the moment, i'm only factoring emoji spam into copypasta (i.e. only the chain leader of the emoji spam gets extra points). Otherwise, emojis have the lowest weightage out of all the other metrics (e.g. text, bits, etc).
overall score is calculated with text, emotes, bits and subs given
same 3 chatters 
also added subs and bits-only leaderboards
we have this now
good. it's more interesting when there are multiple categories
val's pfp kills me...
non-vip top chatters have a new rival!
the rest of the positions in all other leaderboards are classic, astor1es taking 4 categories 
Today's leaderboards are still cooking (they're being processed atm), but:
- I've implemented badges now
- The leaderboards now support lazy loading, so it loads much faster now
I probably need to do a massive elo update eventually, we have people going from 3 digit elo to 45k elo 
lazy loading
cool how it can also apply to UIs
yh when i saw this happening to the UI I said enough was enough 
is that time to load in milliseconds?
that is the number of entries loaded into the leaderboards
each entry takes around half a second to load (with the badges)
damn i thought it would be about max ccv (~10k). not ten times that
it would have been ~30k if i chose to save the leaderboards in a clever-er way
Only Chat Messages leaderboard, holy
Timeout leaderboard when
Can't think of a way to do it without having an IRC client online, but I'll add it to the list π
i am currently working on that
problem is; normal timeouts mixed with neuro's timeouts
well im not working on it, its finished
works perfectly and well
neuro's timeouts probably all come from vedal987, so that'll likely be a good enough indicator
all of them come from vedal987
non-mods don't get information
IRC Client throws mutes only from vedal987
, i'll have a poke nearer the weekend to check for any additional metadata
and another problem; bans count as mutes
mutes & bans are shared thru the same tag
BAN-DURATION
or info idk
only count 120s timeouts?
sure some regular timeouts will get included, but it'll probably be good enough
(will be resetting elo today)
Currently trialing a new elo system that is (hopefully) fairer than before
Details:
- Each chatter now competes against 1000 normal curve sampled chatters rather than with each other
- 7TV Emotes now actually count as emotes
- Chat lengths now score on a curve; very long chats can net negative scores
(picture: new elo system backfilled to past 6 streams, the podium is not well-tuned for so many rank 1s)
May update this slightly tomorrow to use percentiles than 100 randomly sampled chatters & decrease the importance of chat message lengths (this is done)
rigged
hi just a small update to let everyone know that I'm still working on it π (also to keep thread alive)
We have someone currently rewriting the calculation in rust, which means you get leaderboards faster after a stream π
I have an idea for timeout leaderboards that I am currently working on, but it may take some time. It involves wakewords and such, so it'll be a while before I can get some results π
oh god i hope i can finish the trial program before the stream
erm
might not be able to get it out in time :^), getting skill issued by rust async
ping me after today if there is another timeout stream, surely i'll get it done after today
no
in theory the timeout calculation program is ready for field testing. plz ping me whenever she starts timing out people 
The Rust PR is here! https://github.com/vanorsigma/neuro-chat-elo/pull/1
courtesy of @stoic wadi π
π
discord and twitch chat monitoring
amazing
just thought this was an interesting note, the elo landscape has changed
i don't even know what the meta is anymore
not really sure what I expected 
it'll probably get more interested from here on out
(also glatiator has been pretty consistent as a #livestream-chat chatter π ). got an idea to maybe rank consistent chatters asw
just stumbled on this, pretty cool project! 
i fell off
you're topping this leaderboard though 
partners
and this is the bilibili leaderboard. as you can see this is held together by hopes and dreams (documentation for this is sparse and extremely difficult to work with + bilibili doesn't allow me to serve avatars by hotlinking
)

π§ your determination knows no bounds
i got ratelimited after 1k requests, but there we go (same guy is #1 for bilibili again)
yo fossabot popping off
(glatiator is top1 on discord again. also seems like i introduced a bug where the wrong profile photo will load if you search, but it should be fixed by next stream)
this definitely didn't take a lot of time at all, nope (functionally still wonky, the scrolling esp)
heir is #1 on livestream-chat (as an additional note you can now scroll this part properly)

it didn't break yet 
π¬
π
Reveal got updated! (lots of familiar faces on overall today) (also i should have fully fixed bilibili images now)
We're slowly creeping towards Beta, with a feature (opt-outs) landing on main pretty soon. This means we get to choose a domain (ideally something that can end up on CloudFlare)
I'm not particularly creative when it comes to naming the domain, but here are some suggestions:
- neuroranks.me
- neuroranks.chat
- neurochatrankings.com
- neurorankings.chat
Lend me your brain power for some creative names 
I had to run it again to check I'm not going crazy. I think we need a min elo floor 
This is 1000% because of the starting elo being 1200, and negative elo doing some shenanigans 
cc devs pls fix
deployed a tiny fix, discord chat should be relatively accurate now (heir you got your crown back). i've identified the root cause as well, but it'll take slightly longer to fix
uh oh it's getting worse (also i didn't expect <3 to be a username
)
will be trailing a new revised elo system on Friday which will hopefully fix this β’οΈ
im still somehow winning
the least bad chatter
when debugging some elo related thing, i really went "ah ravaxo is top 2, surely fine"
neuro has some well-known chatters 
goes hand-in-hand with "rachi is top in subs and heir is top in #livestream-chat, can't go wrong there"
pinning the top post for ya
aite looks like the revised elo needs more time to cook (surely by tomorrow
), so today's elo will still use the same old scuffed algo
my ELO is still in the negatives for no reason 
i dont need to be on top but i can see the problem when i get droped by 31 behind people I didnt even see in the livestream chat
yep it's not representative and defo something i need to fix asap. It's good that we're catching this now while this project is still in alpha
ill help you however i can
Leaderboards with the in-progress algorithm is up! I've done an elo reset, so these elo are calculated over the last 5 streams + today's amazing βοΈ stream. (Bilibili will only get this update starting next stream)
Hopefully the ranks look a lot more sane now 
caught me slacking
Thanks to Kotgedev and their team for letting us collaborate with them - we now have a Neuro Adventures leaderboard! π
(check out #1184879711399190649 )
why is eliv ranked #6 on an eliv stream smh my head
im always surprised i can push ahead 
today's news: jamgie won 1st for emotes (idk how), twitch top chatters are absolutely dominating in their rankings, the same b2 chatter is really dedicated, and the top 2 discord chatters remain undisputed.
copypasta leaders have two new top contesters
(also, we're going to be moving domains soon π )
Hi! Some slight updates:
- You can now find leaderboards at https://neuroranks.chat ! We hate that vanorsigma guy anyway
- The podium is now an SVG, so the emotes are now actually animated on the podium (it's a bit small now, but I'll adjust that next generation)
- Some small tiny bugfixes have been done on mobile and search π
(wow)
also Heir, you won't believe this but you changing your profile photo made me discover a bug
try visiting the site on mobile, the experience is much nicer! (definitely intentional and not at all an accidental boon)
wait how
old profile photo urls from discord are invalidated, and our leaderboard generation code didn't pick up the new profile pics until the fix 
so for a while, we had a transparent image representing #1 for livestream-chat
glad to help
After almost nuking my repository, we now have the ironmouse leaderboard!
https://neuroranks.chat/?index=11&search=
At the moment, the implementation is basic and fairly buggy, which means you may not see your name on the leaderboard yet. There are some conditions to fulfil:
- You appear in the top 1000 at some point (this will be broadened with a code change by Friday)
- You've chatted in today's stream on Twitch (
) - You are in the Swarm faction (ID: 1) and set it as your main
- (temporary + bugged) you pxls username exactly matches your twitch display name, casing included
- It has been 24 hours (i have to snapshot the data manually to generate them)
Eventually, I'll link it to Discord tags as well, so do set your public discord username.
Anyone who appears on this derivative leaderboard will get +100 base elo on all resets in the future! Also, you get this border around your name through all the other leaderboards until I get around to remove it
(correct as of 4pm-ish today)
(if you aren't on here, make sure to use the template + chat in tomorrow's stream)
Whereβs Atorin on this
Internets real slow so I canβt load it
Oh this isnβt fir discord yet
Ah
Or is it
my brains not working
the scores seen there is the number of pixels placed per user. that'll also be true for the casual pxls canvas whenever that rolls around (it's already there, but hidden from the menus)
The difference is that the ironmouse pxls is linked to twitch users, while the casual pxls is linked to discord users
But good idea. Once the #ironmouse-canvas gets archived, I'll run one calculation for that whole channel
π (small update while i'm away atm)
If you have a big screen, the podium & leaderboard rank items should scale correctly now
looks aight
if i could request something
I would love to see a graph mapping ELO dips and rises per day
sounds like a good idea. Maybe a per-user stats page or something.
right now that's not possible because we don't store elo history, and we're working on making elo update live. i'll add it to the roadmap after we roll around to beta π
oh wow my ELO actuaslly DROPPED today
dunno how that happened
okay so
i need to pay better attention to my numbers but my ELO i dont think actually moved at all this stream??
other peoples ELO's are moving
is it because i changed my icon again
i dont super care, im just confused 
the latest automatic generation got stuck, i'll rerun the numbers. last update was still this
bruh
bruh?
wait how did i go even lower
there literally wasnt even chatting
this generation was for yesterday's stream, and yeah, seems incorrect to me. trying to figure out why
its literally just my number just dropped
potat and glatiator stayed the same
what
perfect code with no bugs whatsoever
I think I found the cause, will regenerate soon
the bug in question:
if let Some(user) = DiscordLivestreamChat.state.get_mut("heiroflife") {
user.elo -= 100.0;
}
If it helps with isolating bugs, my ELO dropped between the message Iβm replying to and now from 311 to 304
It decayed while literally noone in top 3 did I donβt think
yeah it's really weird. potat makes sense, since they really did send tons of messages last stream. If we remove consistency, you should have been 2nd
the elo algorithm atm takes into account of your previous elo to calculate the next elo to reward consistent chatters, but clearly that is causing some issues here
Meanwhile I KNOW glatiator had 318 when I last looked at it
And he still does
Itβs so weirdβ¦
i'll continue looking for the bug. it's nice to have actual users since it does narrow down what i need to look for
thank you 
No prob!
I think itβs worth screenshotting top 10 and checking them after every stream to make sure no nonsense is happening
Ah, the problem is related to the length of the messages. Emojis & Gif links all count towards the score, and they are notoriously long
The thingy that's measuring text length is reused for Twitch & Discord. In twitch's case it makes sense because rewarding longer messages => more high quality messages
but in discord's case, where pasting GIF links is common, this stops making sense
I'll update this to simply reward equally for every message on discord
its no wonder this started happening after people started spamming
and such
i would suggest it ignore length explictly on messages starting with "https://"
since people post them from their saved gifs
Looks like its working for me again!
i should have kept track of the scores fro top 10 to see the changes
i forgot to
this stream i notibly jumped from I THINK 313 to 324 though, which put me in first from 5th.
Hi all! There are two new things to look at for live-elo:
- The canvas chat has been immortalised as a leaderboard! https://neuroranks.chat/?index=13&search= (Atorin is ranked #7)
- Casual pxls has reached a mostly-stable state: https://neuroranks.chat/?index=12&search=. To appear on this leaderboard, set your Discord tag on pxls space, and either: (i) have chatted in the ironmouse canvas once, or (ii) subsequently chat in #livestream-chat .
tiny update: happy halloween!

@limber cliff it hasnt updated in a couple days
just letting you know!
oop, my bad. have been working on the live version recently, so i neglected the old one. seems like it's currently stuck, i'll give it a small push
ah, 7tv's still down. i'll regenerate tomorrow morning
not sure if you're aware but the casual pixels leaderboard is still showing the standings from the previous canvas (the canvas gets reset each month, approximately, and so does the canvas pixel count for every user)
thanks for telling me! i thought i designed it to match the pxls leaderboard, but I think i accidentally clamped the values to the maximum each user has scored
i'll fix this by today's generation
signs of things clearly working 
Alright, it's been fixed!
Some quick notes:
- I've removed Copypasta Leaders from the menu. I think it's not a particularly amazing metric, and everyone is mostly in the negatives, so I've decided to remove it.
- We're working on making chat elo calculate live! This opens up some exciting opportunities for the offline community π As such, updates to the current chat-elo will be slow / on maintainence mode.
Feel free to give any feedback / suggestions / observations π
π @waxen nacelle
You've seen them around, and probably know that NeuroBot now consumes cookies πͺ
; I present you: the cookies leaderboard! If you don't see your name here, head over to #swarm and send a cookie; your score will be there by tomorrows generation.
(Technical details: This is the first in-production leaderboard processed by the new live-elo program, but published via the old elo system. We'll be slowly iteratively replacing leaderboard generation until they're mostly generated by the new live-elo program, before completely swapping over
)
NICE
πͺ
Om nom nom
You've given me 16 cookies! | I've received 11616 cookies total!
πͺ
Om nom nom
You've given me 32 cookies! | I've received 11618 cookies total!
(you were there at some point and just vanished, i thought it's cuz you disassociated your twitch tag
. I'll have a look soon)
the site is offline so idk how i'd do that 
So it have no logical value except for fun, which I endorse dw, Funny project, please continue~ 
https://neuroranks.chat/?index=11&search= @quartz tapir you're back here again 
Community Chat Elo (Beta)
Hey all!
After some (a lot) of work, we're finally ready to bring https://neuroranks.chat to Beta π
The leaderboard now updates live to all chat messages; you can see it go up and down with very pretty animations
(look at the bottom left to see the connection status)
Some leaderboards and features still have not been fully implemented yet; we're hard at work to get those online, but we figured the live part is good enough for public consumption.
You can keep it open on a tab somewhere as you watch the subathon. That being said, happy subathon 
Thanks to @stoic wadi and @obtuse fern for the work you've put in!
erm... is negative elo a thing? I don't think we are that bad of a community.
the scoring algorithm used is completely borked because it couldn't properly handle elo changes live 
i'll be deploying a fix shortly. subs & bits will have the right leaders after this, but until then, please stay patient 
just letting you know in case you didn't see it yourself
tysm for the report 
should be fixed now
it's been run fairly discretely 
(am aware discord-cookies are broken
)
fixed cookies, switched subs / bits over to use fixed scoring and adjusted the elo algorithm. as a result i've reset some leaderboards, but it should be stable enough to be left alone for the entire subathon
Search function seems to be missing 
it is! we had to rewrite lots of stuff, and forgor search was a thing 
it'll be there one day β’οΈ
Soonβ’οΈ
is the websocket open to all sites 
permission-wise,
(my poor server will explode). technical-wise, have already implemented CORS, so will be limiting that shortly 
mind if i test the websocket to see if it still does?
sure, although there's not much I can do if someone spoofs the headers π
i'll reconfig some point after today's stream
might be a cache issue! try refreshing
top left button no work either
, that's odd, it works on my mobile devices. are you using safari? if it's a browser issue i have to investigate it further

