Under The Hood X Report Analyzer
In-Depth Architecture Guide

How X Decides Which Posts to Recommend

X doesn't simply show the newest posts or the posts with the most likes. The open-source recommendation architecture shows a multi-stage system that first finds potential posts, removes candidates that shouldn't be shown, predicts how a particular user may respond to each candidate, scores them, and then selects posts for the For You timeline. (GitHub)

This guide explains that process using the current open-source X algorithm, while also referencing the earlier twitter/the-algorithm repository where it provides useful architectural context.

The Short Answer

When X decides whether to recommend a post, the process can be simplified to:

Find candidates → Enrich candidates → Filter → Predict engagement → Score → Apply adjustments → Select → Final filtering

The current open-source implementation describes this through Thunder, Phoenix, Home Mixer, Candidate Pipeline, filters, scorers and a selector. (GitHub)

The important point is that recommendation is a pipeline, not a single metric.

1. X First Finds Posts That Could Be Recommended

X can't rank every post on the platform for every user. It first needs to create a smaller pool of potential candidates. The current architecture has two major candidate sources:

In-Network

Posts from accounts you follow are retrieved through Thunder. Thunder maintains recent posts and provides in-network candidates for the requesting user. (GitHub)

Out-of-Network

X can also recommend posts from accounts you don't follow. The current system uses Phoenix Retrieval to discover potentially relevant posts from a much larger corpus. (GitHub)

2. Phoenix Tries to Find Relevant Posts

The current Phoenix retrieval system uses a two-tower model. One tower represents the user. The other represents candidate posts.

Your engagement history → User Tower → User embedding
↕ (Similarity Search)
Candidate Tower → Candidate embedding

The system can then use approximate nearest-neighbor search to retrieve potentially relevant candidates from a large corpus. (GitHub) This is important because recommendation isn't limited to your followers.

3 to 19. Context, Enrichment, Filtering, Multi-Action Prediction & Selection

3. Your Behavior Provides Context: User signals (likes, replies, repostiing, dwell) retrieved via Home Mixer and user-signal services mean the same post can be evaluated differently for different viewers.

4. X Enriches the Candidate (Hydration): Post data, author info, verification status, video metadata, subscription status, and mutual-follow counts are attached to candidates before scoring.

5. Not Every Candidate Is Eligible (Filters): Duplicate posts, old posts, muted keywords, blocked authors, and seen/served content are filtered out before ranking. Eligibility ≠ Ranking.

6. X Predicts What You Might Do (Multi-Action): Phoenix predicts probabilities for Likes, Replies, Reposts, Quotes, Clicks, Profile visits, Dwell, Shares, and negative actions like Block or Report.

7. Positive and Negative Actions Both Matter: Weighted scoring combines both positive signal probabilities and negative penalties.

8 to 11. Ranking, Diversity, Out-of-Network: Weighted scores, author diversity penalization, and out-of-network scoring adjustments ensure feed balance.

12 to 19. Selection & Misconceptions: The Selector chooses top candidates (Top K), followed by final visibility filtering. A follower count does not equal guaranteed impressions, and there is no single mythical "viral score."

The Entire Process in One Picture

X USER → USER CONTEXT → CANDIDATE SOURCES (Thunder / Phoenix)
CANDIDATE POOL → HYDRATION → FILTERS → PHOENIX PREDICTION
WEIGHTED SCORE → DIVERSITY ADJUSTMENTS → RANKING → SELECTION → FINAL FILTERING → FOR YOU FEED

Official Open-Source References