Home » Mysql » Karma/reputation system

Karma/reputation system

Posted by: admin November 29, 2017 Leave a comment


I’ve been creating a reddit-like site based on a very good article about popularity algorithms. I think I’m going quite well, the site’s looking good and the implementation is working.

What I’m missing is a karma or reputation algorithm. Much like SO, I have in mind implementing certain privileges for the best users.

Do you have an idea or reference in how to do it?

I’m having some issues in finding out these points:

  • How to give karma? If some user has 100 karma points and upvotes a user with 10, how many points are awarded in contrast with an upvoter with 1,000?
    The same applies with the negatives.
  • How can I prevent spammers creating 1,000 accounts to upvote one account and award, say, 1,000 karma points to gain access to moderation privileges and create a mess?

The Karma system seams pretty straightforward:

  1. you make yourself a karma table
  2. you let users upvote / downvote other users
  3. the karma tables keep track of the user’s karma

Now, putting it into a seamless and very user-friendly experience like StackOverflow has… well, that is a totally different issue. But some points to retain:

  1. don’t let new users down or up vote
  2. make a penalty for down-voting (it will keep some from slamming a user with no reason)

Edit (on your new update)

To avoid spammers from creating multiple accounts and so on I would lean on what SO has done, don’t let new users, say less than 50 points users, up or down vote another user. Those users will only be able to get points by human behavior – participating in the forum – and they will be given their Karma by their peers. That should make it

I am leaned on keeping fixed points per vote. An up vote by whoever will always get the same amount of points as a down vote. Make the line proportional and not exponential and power the community as a whole without overpowering a small number of individuals.

Give power users, Big Karma Guys the possibility to moderate, re-tag, edit and so forth other users.

But all I’m saying… is exactly what Stack Overflow has done. The maths behind it are not that complicated, what’s really hard is to deliver the polish a site like this has.

Karma to Jeff and the rest of the team.

Hope it helps!