How the score works
No moderators, no approval queue. The formula and the word list are public - check our work.
What leaves your machine
Counts of slang and greetings, and nothing else. How many messages you sent, how many words they added up to, and how many times you used each slang or greeting from the word list below. Nothing you typed, ever. No file names, no project names, not one sentence.
Paste a password into a chat once and the most this could learn is that your message count went up by one. The scanner can only count the words printed on this page - and you can read the code to check.
Which chats it reads
All of them, from every agent it finds: Claude Code, Cowork and Codex. Every project, work ones included, whichever folder you run it from. Claude chat and ChatGPT are not included - they keep nothing readable on your computer.
Reading everything is deliberate. Pick one project and everyone would pick their rudest. Project names stay on your machine too: each is scrambled first, so we can tell two chats belong together without knowing what it is called. Run --projects to see what it would read, printed on your screen and sent nowhere.
The formula
Everyone starts at 50. From there, each kind of word moves you up or down.
Say swearing turned up in 1 out of every 100 messages you sent. Swearing is worth +12, so that is 1 × 12 = 12 points up. Please and thank you work the same way, only downwards. Add it all up and that is your score, out of 100.
Notice it is 1 out of every 100, not 1 on its own. Ten swears across 1,000 messages is much milder than ten across 50, so we always divide by how much you wrote. Otherwise the board would just rank whoever types the most.
The numbers beside each group below look wildly different for a reason. Swearing is rare - almost nobody passes 1 in 100 - while please and thank you turn up in one message in twenty. If both counted the same per mention, politeness would decide the board simply by happening more. So the rare words are worth a lot each and the common ones very little.
There is a second thing we look at: how many messages there are behind your score. That is really a measure of how much you are building. A hundred messages is one afternoon. Five thousand is how you work.
The more we have seen, the further your score moves away from 50 - up if your words lean rude, down if they lean polite. When there is only a little to go on, everyone sits closer to the middle. It cuts both ways on purpose: talking more never adds points by itself, it only commits harder to whatever you were already doing.
| messages | assholl score (rude words) | assholl score (polite words) |
|---|---|---|
| 100 | 54 | 46 |
| 1,000 | 67 | 33 |
| 5,000 | 77 | 23 |
Same words in both columns every time - the only thing that changed is how much we have seen. So keep building, and your score keeps committing to what your words already say.
Only your last 30 days count, and you need 50 messages in them to appear on the board at all.
The word list
Every word we count, in full. Nothing outside this list is counted. Strongest first - the number is how many points each 1% of your messages moves your score, so a minus takes points off.
profanity
score weight+12.00Swearing at it. Hard to do by accident.
Strong swearing, English and Hinglish. Rare and unambiguous, so it moves the score hardest.
insult
score weight+8.00Name-calling. Calling it dumb is not the same as calling it something unprintable.
Name-calling that isn't quite swearing. Weighted below profanity -- calling the model dumb is not the same as calling it something unprintable.
aggression
score weight+1.90Impatience - repeating yourself, telling it off.
Multi-word on purpose. Bare common words -- 'no', 'still', 'think', 'focus' -- fire constantly in ordinary neutral instructions and made the score meaningless in testing.
endearment
score weight+0.40Calling it "mate" or "bro". Banter, not abuse.
Casual address. Calling it 'bro' or 'yaar' is banter, so this only nudges the score.
politeness
score weight−1.00Please and thank you. The "nice guys finish last" bit.
Is it trustworthy?
The count comes from your own computer, so we treat it as something you told us rather than something we watched happen. That is why it says scored from real history, never “verified”.
The scanner never decides your score - it sends counts, and the maths runs here. Entries are tied to established GitHub accounts, and readings are checked against earlier ones as people run it again over the weeks. Mostly it holds up because there is nothing to win. If a number looks made up, hit it with 🧢.