Badge Discussion: Like Ratios + Spending Likes

In Discourse 1.5 we’d like to add a couple of badges around liking. They might be a little complicated so I figured I’d post this topic to get some feedback!

Like Ratios

The idea here is if you receive a certain ratio of posts : likes you will receive a badge. The tricky thing here is how to figure out what that ratio should be.

Some users, in particular the Discourse core members on this forum, receive quite a few more likes than others. (Some people in particular with 200k twitter followers can tweet a link to a post and guarantee a metric boatload of likes!)

It has been suggested that instead of likes_count / posts_count we instead track posts_with_at_least_one_like_count / posts_count for a user. Apologies for the long variable name but you get the idea.

Even then, how would we determine what a good ratio is? One thing I’ve done in the past that might work is used a geometric mean across all users and if your ratio is higher than the mean, award the badge.

Spending Likes

I’m not going to name any names, but some users just have a lot of :heart: to give :slight_smile:

As a way to encourage likes, we’re considering adding a badge that will be awarded to a user who spends all their available likes in a day. In other words, once they’ve hit the rate limit for max_likes_per_day.

This one might be quite hard to achieve as the default is currently 50, and higher trust levels can have a multiplier to make it even higher.

What are your thoughts on the new badges? Any suggestions for how they should be implemented simply and effectively?


Yeah but this means the value will shift over time which is kind of hellish for users. Better to set a reasonable default value and encourage site operators to tweak it to fit the scale of their particular site… being under constantly shifting sands with badges (oh today it takes +20 likes to make the badge cutoff versus yesterday) just makes things super weird.

1 Like

Sure I have no problem with that.

1 Like

I do think this is a nice idea. I guess the upshot is you won’t feel “penalized” for posts you make that don’t get any likes? E.g. a post with no likes does not count “against” you in like ratio? That is a good thing.

1 Like

I think far simpler way to solve this is

Posts liked by you / count of posts you made that people liked

No need for geometric means or anything that way. And we can expose “count of posts with at least one like” on user stats somehow

The logic here is quite good, every time a first person likes one of your posts you should like back, worst case you need to like once for every post you make. Some core members could handle that while sleeping.


That sounds like a third badge to me, which is fine… “reciprocating” (not actual name, just the concept)


  1. Like ratio (as measured by posts with at least 1 like)
  2. Reaching like limit for the day
  3. Reciprocating

seems like a good start, but

What about just showing up and reading?

In my own edge-case as an environment for teaching and learning, I would like to encourage people to log in more often and read more. A reward for Posts I like/my liked posts might do that. I would really like to find a way to get people to open more topics and see people’s work (students solve problems and post their work). I suppose that if they blindly clicked on topics just to like even the bad ones, it would still do what I want, which is for them to look at stuff. Students liking posts blindly might end up being a proxy for reading, but that could be OK.

OTOH, I might want to discourse people from liking indiscriminately. I have some sense that students would just like everything to game the system be nice (why does strikeout work on my Discourse, but not here?). Maybe the number of topics entered or posts read could play in? Maybe something like

(likes_given * (x * topics_entered + y * posts_read)) / likes_received

In case my algebra is bad or unclear, I want likes_given to be more valuable for people who have opened more topics and read more posts. If someone reads 100 posts and liked 10, that’s different than someone liking 10 the posts they see and going home.

I think that I would like to add a fourth badge for people who show up more and read more. Figuring out the defaults for these across communities will be complicated. I’ve played with normalizing all the stats on the user page (divide each metric by its mean and then sum those scores and divide by that mean) to establish a norm for participation. It sort of works.

The more I think about it, the more I like the idea of likes being worth more when given by people who read more. Oooh. Maybe a “Powerful Liker” is someone who has a 20/1 read to like ratio and “Good liker” is 10/1. (Not sure about the scale.) I could then make badges that paid attention to the powerful likers.


Uh, this already exists? You get badges for liked posts.

For 1.6 we can do a repeat visitor badge as well as sequential days award, perhaps sequential days + reading count, to encourage regular visits.


Once people are promoted to trust level 4, they receive triple the amount of likes a basic user would, and wouldn’t it be just slightly unfair to those who are trust level 4 as they would have to like triple the amount of posts?

I’m a trust level four on the Hopscotch Forums,, and am very excited and curious about this!


I hit the allowance ceiling once from odd circumstances (catching up lost reading time over one week, in my edge case.) That and I think the default number of given likes allowed in a set period was lower at the time.

Getting a badge for that would make me smile. And when I needed it the most; *exhale* A “hit likes ceiling” badge would say “okay, stop clicking the hearts or you gonna keel from reverse operant conditioning headaches again.”

The Reader badge is a start. These user-contributed badge queries are worth noting and checking out. In your circumstances and needs, you may want to check out the offered extended Reader badge queries.


May it’s OT but I have it already. Not sequential (too strict) but visits + readings + posts. I used unlock badges and levels


RIght. I meant something like

1 Like

The thing about my class-based communities is that many of the normal measures like “been here a long time” don’t apply. I need more measures like “did some stuff this week”. I think I can work from examples like “30 likes accumulated over the span of 15 days”, have them set to get revoked daily and run a cron script to record who had what badges every Sunday at midnight to stick into the gradebook. Or something like that.

OOh. Some of those look helpful. Is there a way that I can get your SQL?

I was thinking earlier today that it would be cool if there were an API that would let people see/download/import badges from other sites. Permissions would be tricky, though. I suppose there could be an ok-to-export-without-admin-permissions checkbox or something.

I’ll go re-read the cool badge queries again. Thanks for the reminder. What I’d like to do is take all of those and make a more cohesive set of explanations, and then perhaps tie it in to my badge creator script.

1 Like

Naming is hard but I’m using the following names for now:

  1. Admired = have a high like ratio
  2. Generous = used up all your likes
  3. GivesBack = have a high liked / like ratio

Per my original comment, I believe the like mechanism is a golden hammer at best:

Any thoughts on measuring sentiment instead, or, as well as?

Machine Learning APIs: Text Analytics for Sentiment, Key Phrase Extraction, Language Detection and Topic Detection


Rather than counts or ratios, perhaps award badges based on positive contribution?

(This comment scored 82%)


@eviltrout mentioned some of these will need minimum thresholds to work, too.

1 Like

Okay I’ve implemented the badges in a way that I think makes sense. The ratios are based on me looking at records here on meta that I felt deserved the badges. I am more than willing to change them following discussion.

(Badges should be awarded overnight)


  • (count of posts with at least 1 like) / (total post count) > 0.75
  • requires a minimum of 5 posts

Gives Back

  • (likes given) / (total posts with at least 1 like) > 5.0


  • uses up their likes in a day



I would up the minimum on that first badge a lot. Maybe 100 to start. Perhaps you should require trust level 2 as well…

We need to seriously think about this because these badges can only be awarded once, and if they are awarded for trivial stuff, the badges will be meaningless.


Also we need to think through the progression from bronze to gold


Wouldn’t that mean 100% of your posts have a like? That seems a bit difficult to achieve…

Edit: Ohhh, nm, I see, you meant the minimum number of posts from 5 to 100. got it.

1 Like