How does Community Notes score the raters themselves?
Raters earn a helpfulness score based on whether their ratings line up with how notes eventually score. The open code computes rater helpfulness from the notes they rated — roughly, raters who rate helpful notes helpful and unhelpful notes unhelpful build standing; those who rate against the eventual outcome lose it. The model also places each rater on the same viewpoint factor axis as notes, which is how it knows whether a note has bridged across perspectives. Rating well is itself scored, and it gates how much influence your ratings carry.
Community Notes doesn't treat all raters equally, and the mechanism is in the open code. Raters have scores too — earned by rating in line with eventual outcomes, and positioned on the same viewpoint axis the notes are.
Rater helpfulness is computed from outcomes
The code derives a rater's helpfulness from the notes they rated and how those notes scored — aggregating each rater's ratings against the note intercepts that resulted:
55def _rater_helpfulness(validRatings): # aggregate each rater's ratings against the # note intercepts those notes ultimately earned 66 raterCounts = validRatings.groupby(raterParticipantIdKey).sum()
Community Notes computes rater and author helpfulness from rating outcomes: author helpfulness is the mean intercept of notes a user wrote, and rater helpfulness aggregates a rater's ratings against the intercepts those notes ultimately earned.
The intuition: if you rate notes helpful that go on to earn high intercepts, and rate notes unhelpful that score low, your ratings track the consensus outcome and you gain standing. Rate against the eventual outcome consistently and you lose it.
Raters sit on the viewpoint axis too
The matrix factorization places each rater on the same factor (viewpoint) dimension as notes. This
is what makes bridging measurable: the model knows which "side" a rater tends toward, so when a note
earns helpful ratings from raters on both sides of the factor axis, that's what pushes its
intercept up. Your factor position is learned from your rating history, not declared.
The model places notes and raters on a shared viewpoint 'factor' axis; a note's intercept only rises when raters across different factor positions agree, and the not-helpful threshold applies a negative note-factor multiplier (default -0.8) so more polarized notes must clear a harder bar. This is the bridging mechanism that resists single-viewpoint agreement.
Author helpfulness, too
The same file computes author helpfulness — a writer's standing based on the mean intercept of the
notes they've written. Consistently writing notes that reach Helpful builds author standing; writing
notes that get rated not-helpful erodes it. The system scores contribution quality on both sides of
the pen.
Community Notes computes rater and author helpfulness from rating outcomes: author helpfulness is the mean intercept of notes a user wrote, and rater helpfulness aggregates a rater's ratings against the intercepts those notes ultimately earned.
What the code doesn't say
Individual rater scores and identities. The algorithm is open, but the per-rater data is
pseudonymized in the public release — you can see how standing is computed, not who has what score.
xDoctor works only with the public, aggregate note and rating data and does not attempt to identify
individual raters.
The Community Notes scoring algorithm is open-sourced in twitter/communitynotes — a distinct repository from the xai-org/x-algorithm ranking code — and operates on public note and rating data; individual rater data is pseudonymized in the public release.
What to do with this
If you rate notes, rate by genuine helpfulness rather than by which "side" a note favors — the model is explicitly built to detect and reward cross-viewpoint judgment, and rating tribally erodes your standing. xDoctor's CN intelligence analyzes these dynamics at the population level, as an integrity lens, never to deanonymize or target individual contributors.