Being You
AboutJobsServicesBlog
Sign inJoin

For You feed — transparent ranking weights

Purpose: Public documentation of how Being You ranks posts in the For You feed. Source: Weights and pipeline shape are taken from xai-org/x-algorithm, file home-mixer/params/param.rs. Status: Weights are X's published defaults. The probability model is ours and is a placeholder — see The model. Scope: Personal surface only. Professional discovery and the job board rank separately.

Implementation: src/feed/mod.rs. A test asserts the numbers below match the code, so this page cannot silently drift out of date.


Read this before reading the weights

Two things about these numbers are widely misread, and both change what the table below actually means.

A weight multiplies a predicted probability, not an engagement count. The ranker estimates P(action | post, you) — how likely you are to reply, like, or report — and the weight scales that probability. It does not multiply the number of likes a post received.

So you cannot read the ratios as count equivalences. Dividing Report (−234.0) by Favorite (+0.5) does not mean "one report cancels 468 likes". That reading is wrong. Report carries a large weight because a report is more than 1000× rarer than a like; without it, the prediction could not influence the ranking at all. We have a test named one_report_does_not_cancel_468_likes that holds this property.

Reports are not votes. Negative feedback from other members is excluded from your recommendation score. Your own report/filter feedback can influence your feed. A report also opens a separate human review case; it does not automatically hide content for everyone.


Pipeline

┌─────────────────┐   ┌──────────────────┐   ┌──────────────────┐   ┌───────────────┐
│ Candidates      │──►│ Predict          │──►│ Weighted score   │──►│ Diversity     │──► For You
│ in + out network│   │ P(action|post,you)│   │ Σ w × P(action)  │   │ author decay  │
└─────────────────┘   └──────────────────┘   └──────────────────┘   └───────────────┘

Positive weights

| Action | Weight | Notes | |--------|-------:|-------| | Favorite (like) | 0.5 | Baseline positive signal | | Reply | 5.0 | Conversation, weighted far above a like | | Repost | 1.0 | Explicit amplification | | Quote | 5.0 | Amplification with commentary | | Share | 2.0 | | | Share via DM | 5.0 | Sending it to someone personally means more | | Share via copy link | 20.0 | The strongest sharing signal | | Click | 0.4 | | | Open link | 0.2 | | | Profile click | 0.0 | Currently disabled upstream | | Photo expand | 0.05 | | | Video open | 0.07 | | | Dwell | 0.05 | Time on post | | Follow author | 4.0 | Strong intent | | Post unexplored | 0.02 | Small nudge toward things you have not seen |

Negative weights

| Signal | Weight | Notes | |--------|-------:|-------| | Not interested | −43.2 | Explicit "show me less" | | Block author | −31.2 | | | Mute author | −58.8 | | | Report | −234.0 | Large because reports are rare — see above | | Not dwelled | −0.02 | Scrolled straight past |

Adjustments

| Adjustment | Value | Purpose | |------------|------:|---------| | Bidirectional follow reply boost | +15.0 | A reply between mutuals is worth more than one from a stranger | | Out-of-network factor | ×0.75 | Discounts posts from accounts you do not follow | | Author diversity decay | ×0.5 per repeat | One voice cannot flood the feed | | Author diversity floor | ×0.25 | Decay never goes below this |


The model

X ranks with Phoenix, a learned neural model. We do not have one, and we are not going to pretend otherwise.

Being You currently estimates each probability with Laplace-smoothed empirical rates: observed engagement for the post, smoothed toward a network-wide baseline for that action. With few impressions a post is ranked close to the baseline; the estimate only moves toward the observed rate once there is enough evidence to mean something. Actions taken by you count for three times more than actions by others, because the model is predicting your behaviour.

This is a placeholder with the right shape — probabilities in, weighted sum out — so replacing it with a learned model later changes neither the pipeline nor the published weights on this page.


What we do not rank on

  • Payment status or subscription tier
  • Political affiliation, nationality, or declared country
  • Undisclosed staff boosts — staff accounts follow the same rules
  • Paid promotion. Ads and promote-yourself apply to professional surfaces only. They are never injected into a personal For You feed.

Fallback

If ranking fails, the feed falls back to Following, in reverse chronological order, unranked. A feed you cannot predict is not a feed you can trust.


Engagement events

The ranker consumes engagement_event records:

| Event | Fields | |-------|--------| | view | post_id, viewer_id (counts as an impression) | | like, reply, share, follow, quote, retweet | post_id, viewer_id, created_at | | dwell | post_id, viewer_id, dwell_ms | | not_interested, report, block_author, mute_author | post_id, viewer_id | | click, profile_click, photo_expand, video_open, open_link | post_id, viewer_id |

Where they come from

| Signal | What you did | |--------|--------------| | like, comment | The buttons under a post. | | profile_click | Followed a post through to the author's profile. | | not_interested, mute_author, block_author, report | The "see less like this" control on a post. | | dwell | How long a post was actually on screen, capped at 60 seconds — a tab left open overnight says nothing about interest. |

Negative feedback is private and additive. It never removes the post for anyone else and the author is never told: it teaches your ranking, nothing more. Reporting also raises a moderation case, which is a separate human process.

The server refuses any signal the ranker does not weigh, and a test asserts the two lists match, so a recorded signal can never become dead data and a weight can never sit with nothing behind it.


Auditing and changes

  • Weight changes are documented in the changelog below, in the same commit as the code change. The test weights_match_the_published_x_defaults fails if code and this page disagree.
  • Fallback flag — for_you_ranker_enabled; off means Following only.

Changelog

| Date | Version | Change | |------|---------|--------| | 2026-09-07 | v2.1 | Recorded the signals the weights already described: negative feedback from the "see less like this" control, profile clicks, and dwell. Until this, the largest weights in the model had nothing to act on. | | 2026-09-07 | v2.0 | Adopted xai-org/x-algorithm weights and the probability-based scorer. Replaces the v1 heuristic, whose published numbers had drifted from the code. | | 2025-09-05 | v1.0 | Initial heuristic weights published |


Questions or feedback: about. Ranking transparency is part of you are not the product, you are the customer.

11 September 2026 — personal negative feedback

Other members' reports, mutes, blocks and not-interested/not-dwelled events no longer feed the current viewer's probability estimate. The numerical weights are unchanged. Durable blocks also prevent interactions; unmuting and unblocking are independent controls. Tests assert report brigading cannot change another viewer's score when other inputs are unchanged.

About Being You
Being You

You are not the product, you are the customer.

TermsPrivacyHow ranking works

© 2026 Being You. Never stop being you.