X Community Notes Scoring (Bridging Algorithm)

Community Notes decides which notes show on a post using bridging-based ranking: a matrix-factorization model surfaces a note only if it is rated helpful by raters who usually disagree with each other, not by simple majority vote. Open-source and actively maintained (last pushed 2026-06-17). Source: twitter/communitynotes scoring/src/scoring, github.com/twitter/communitynotes, 2026-06-17

Core mechanism — matrix factorization for "bridging"

The scorer models the rating matrix the way a recommender models user↔item preferences. Each rater and each note get a learned latent factor (a viewpoint/polarity coordinate) plus an intercept term: Source: scoring/src/scoring/matrix_factorization/matrix_factorization.py + model.py

predicted_rating(rater i, note j) ≈ μ + b_i + b_j + f_i · f_j
  • f_i, f_j — latent factors that absorb partisan agreement (raters who lean the same way agreeing is explained by f_i · f_j, not by the note being good).
  • b_j (the note intercept) — the helpfulness signal that survives after polarity is factored out. A high intercept means raters across the factor spectrum find the note helpful.

A note is rated "Helpful" (and shown) only when this polarity-adjusted intercept clears a threshold (documented around 0.40). That is the "bridging" property: it rewards notes that bridge divides rather than notes that win a one-sided popularity contest. Source: communitynotes scoring source + project documentation

Scorer stack

The pipeline runs several matrix-factorization scorers and reconciles them with explicit rules. Verified files under scoring/src/scoring/: Source: twitter/communitynotes tree, 2026-06-17

File / dir Role
mf_core_scorer.py Primary MF scorer over the core rater set
mf_expansion_scorer.py, mf_expansion_plus_scorer.py Extend scoring to newer / broader raters
mf_group_scorer.py, mf_multi_group_scorer.py Group-specific models
mf_topic_scorer.py, topic_model.py Topic-conditioned scoring
reputation_matrix_factorization/ Rater reputation: diligence + helpfulness models, weighted loss
helpfulness_scores.py, contributor_state.py Contributor helpfulness + status
pflip_model.py, pflip_plus_model.py Predict whether a note's status will flip
tag_consensus.py, tag_filter.py Reason-tag consensus / filtering
incorrect_filter.py, quasi_clique_detection.py Filter low-quality notes; detect coordinated rating rings
scoring_rules.py, run_scoring.py, runner.py Rule reconciliation + orchestration

Why it matters

  • Bridging ≠ majority. Coordinated brigading does not pass: agreement that correlates with the polarity factor is discounted, and quasi_clique_detection.py actively looks for collusion. Source: scoring source, 2026-06-17
  • Different problem from the For You feed. The ranker (X For You Algorithm (2026 Open Source)) optimizes predicted engagement; Community Notes optimizes cross-viewpoint agreement on helpfulness. Both are open-source signals worth understanding when posting on X — a noted post can lose reach.

Architecture Position

Axis Value
Family AI serving and public algorithms
Boundary owned Community Notes bridging algorithm and scoring architecture.
Read with X For You Algorithm (2026 Open Source), Consensus Protocols (Raft and Paxos)
Use this page when understanding public consensus/ranking algorithms

Timeline

  • 2026-07-01 | Architecture category refresh added this page to the AI serving and public algorithms family, linked it to Architecture System Map, and kept it standalone because it owns this boundary: Community Notes bridging algorithm and scoring architecture. Source: User request, 2026-07-01

  • 2026-06-17 | Captured alongside the For You algorithm (Kevin paste + "store … keep in mind when xposting"). Verified the matrix-factorization / reputation scorer stack in scoring/src/scoring; documented the bridging-intercept mechanism. Source: User, 2026-06-17; twitter/communitynotes, 2026-06-17