There is exactly one way to earn a point, and it is not posting
Gamification in community software usually arrives as a bundle: points for posting, points for commenting, points for logging in, streaks, badges, quests, a shop. It is genuinely fun to build. It is also, in a community you charge money for, one of the fastest ways to make the feed worse.
Because whatever you award points for is what you will get. Award points for posting and you get posts. Not good posts — posts. You have paid people, in status, to add volume to the one thing your members' attention is scarcest for.
So Klaas has one rule.
The rule
Another member likes your post or your comment. You get one point.
That is it. There is no other way to earn a point. Not posting, not commenting, not logging in, not completing a course, not showing up to an event, not inviting a friend.
Three properties fall out of it, and each one is doing work:
It cannot be farmed alone. Every point requires another person to have decided your contribution was worth something. You can post fifty times today and score zero. The only strategy the system rewards is being useful to somebody.
It is revocable. If the like is withdrawn, the point goes with it. Points are a live count of appreciation you currently hold, not a lifetime tally of things you once did. This makes the number smaller and it makes it mean something.
It is scoped to one community. Your standing in one Klaas community says nothing about your standing in another. There is no platform-wide score to optimise, and no incentive to farm reputation in an easy room to spend in a hard one.
The curve doubles, forever
Level 1 is 0 points. Level 2 costs 5. Every level after that costs double the last:
| Level | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| Points | 0 | 5 | 10 | 20 | 40 | 80 | 160 | 320 |
The early levels come fast on purpose. Five points is roughly one good comment, and getting to level 2 in your first week is the entire point of the first week. After that it gets hard quickly, which is also the point: a level should say something about how long you have been genuinely useful here, not how many days you have been a member.
There is a cap at level 30, and it is not a game rule — it is a guard. Level 30 needs about 1.3 billion points. It exists so that a corrupted number cannot spin a loop, not because we expect anyone to approach it.
One implementation detail I like, for the two people who will enjoy it: the thresholds are computed by repeated doubling rather than with Math.pow or log2. Floating point being what it is, log2(20)/log2(2) can return 1.9999999999999998, which silently puts a member one level below where they should be. It is a nice example of a bug that never errors and that nobody reports, because the member has no idea what level they were supposed to be.
The same module is read by the leaderboard, by the level badge on a profile, and by the "how points work" page — so the published explanation is generated from the rule rather than typed alongside it. A FAQ that can drift from the behaviour it describes is worse than no FAQ.
What we did not ship
- No badges. A badge is a claim that some achievement is worth marking. Every badge you add is a small instruction about what members should do, and most communities do not want to be issuing those instructions accidentally.
- No streaks. Streaks reward showing up, which sounds healthy and is actually a punishment mechanic: their whole force comes from the fear of losing one. That is a fine trade for a language app. It is a strange thing to install in a paid community where somebody might reasonably be on holiday.
- No quests, no missions, no daily goals. These convert a community into a checklist, and the checklist is always more legible than the community, so the checklist wins.
- No point spending. The moment points buy something, points have a price, and everything above becomes a market.
- No configurable point values. If a host could set "posts are worth 10", the first thing that would happen is posts worth 10.
Where members see it
A level pill on profiles. A leaderboard tab showing the ranked list plus "You're ranked #N of M with X points." And a plain-language page explaining the rule.
That last one matters more than it looks. Points nobody understands are not motivating, they are irritating — a number that goes up for reasons you cannot predict is closer to weather than to a score. If your community's scoring rule cannot be explained in one sentence, it will not change anyone's behaviour in the direction you intended.
Ours is one sentence: someone else liked what you wrote.
The honest caveat
This design is deliberately weak at one thing, and if that thing is your priority you should turn the leaderboard off in your menu settings.
It does not reward lurker-to-participant conversion. A member who reads everything, attends every call and never posts scores zero forever. A points system that rewarded attendance or completion would give that person something. Ours gives them nothing.
We chose that because the alternative rewards volume, and in a paid community the cost of volume is borne by every member who has to read it. But it is a real trade, and I would rather write it down than pretend the design has no downside.