Creators chasing "top-10 placement" on X are usually chasing a number
that does not exist. The visible top-10 of a typical For You feed
render is not ten organic candidates competing for ten slots. It is a
mix that includes one or more ads, a who-to-follow module of up to
three users, occasional prompt cards, push-to-home heroes if the
viewer arrived from a notification, and cached-posts continuation
slots from the previous session. By the time organic candidates from
Phoenix's scoring layer reach the rendered feed, the visible top-10
is often a top-6 organic. This article inventories every non-organic
source in home-mixer/sources/, the slot quotas
where documented, and the safe-gap blending math from
home-mixer/ads/safe_gap_blender.rs. Companion to
A1,
which walks the architectural shift, and
A3,
which covers the organic OON retrieval lane.
The twelve home-mixer sources, by type
The home-mixer pipeline assembles each feed render from twelve candidate sources. They split into four categories.
Source: home-mixer/sources/ inventory
| Source | Category | Slot quota or trigger |
|---|---|---|
| thunder_source.rs documented | organic in-network | unbounded inside Thunder's 48-hour window |
| phoenix_source.rs documented | organic OON (general) | top-K from two-tower retrieval, K not in source |
| phoenix_moe_source.rs documented | organic OON (MoE) | expert-routed top-K |
| phoenix_topics_source.rs documented | organic OON (topic-keyed) | top-K per topic ID |
| ads_source.rs documented | non-organic ad | interleaved per safe-gap blender |
| who_to_follow_source.rs documented | non-organic module | max 3 users, exclusion list of last 200 surfaced |
| prompts_source.rs documented | non-organic prompt | 4 types: INLINE, FULL_COVER, HALF_COVER, RELEVANCE_PROMPT |
| push_to_home_source.rs documented | non-organic hero | fires when viewer arrived from a notification |
| tweet_mixer_source.rs documented | auxiliary mix | candidates gated by MAX_POST_AGE |
| cached_posts_source.rs documented | session continuation | fires when viewer resumes prior session |
| scored_posts_source.rs documented | support | intermediate scored-list source |
| (two additional sources) inferred | (not enumerated in this pass) | remaining sources not detailed in public inventory references |
Four of the twelve are organic candidate sources (Thunder plus three Phoenix retrieval variants). Five are non-organic surfaces (ads, who-to-follow, prompts, push-to-home, cached-posts continuation). The remaining three are support and auxiliary pools. The split is the structural starting point for understanding what creators are competing for: organic posts compete with each other for the slots that survive after the non-organic surfaces have taken theirs.
Who-to-follow: one module, three users, two-hundred-user memory
home-mixer/sources/who_to_follow_source.rs exposes
two named constants relevant to creators: MAX_WHO_TO_FOLLOW_USERS = 3
and EXCLUDED_USER_IDS_LIMIT = 200. The first caps the module at
three suggested accounts per render. The second tracks the last 200
user IDs the viewer has already seen in this module and excludes them
from re-surfacing.
Two practical implications. First, the who-to-follow module occupies one feed slot per render, displaying up to three accounts. Each of those accounts is competing for that slot via a separate ranking process not detailed in the open repo (likely involving graph signals, shared-interest models, and viewer-following affinity). Second, the 200-user exclusion memory means recommended accounts rotate. A creator appearing once in a viewer's who-to-follow module is excluded from that viewer's next several encounters with the module, until the exclusion list rolls over.
For creators thinking about follower growth, this surface is substantively different from organic feed placement. It is its own ranking lane, scored on different signals, with hard caps on appearances. Optimisation for the visible post unit (the focus of this series) does not affect who-to-follow placement directly.
Ads: the safe-gap blender
home-mixer/ads/safe_gap_blender.rs handles the
interleaving of ad candidates with organic candidates in the final
feed list. The blender enforces a MIN_POSTS_FOR_ADS minimum: a fixed
number of organic posts must appear between consecutive ads. The
specific value is not in the public release.
The blending mechanism is straightforward: as the rendered feed is
assembled, the blender counts organic posts since the last ad
inserted, and once the count crosses the minimum, the next eligible
ad slot is filled with the highest-scoring ad candidate. The ad
candidates themselves come from home-mixer/sources/ads_source.rs
and are scored by their own ad-relevance pipeline, distinct from the
organic Phoenix scoring.
For organic creators, ads occupy slots that would otherwise hold
organic candidates. The math works out to roughly one or two ads
visible in a typical scrolled feed pass, depending on the
MIN_POSTS_FOR_ADS value and the depth of the scroll. Each ad takes
one slot that an organic post could have occupied.
Prompts: four types, four behaviours
home-mixer/sources/prompts_source.rs exposes four
prompt types: INLINE_PROMPT, FULL_COVER, HALF_COVER, and
RELEVANCE_PROMPT. Each has a different render behaviour.
Source: home-mixer/sources/prompts_source.rs
| Prompt type | Render behaviour | Slot impact |
|---|---|---|
| INLINE_PROMPT documented | appears inline in the feed scroll as a card | one slot |
| FULL_COVER documented | occupies the entire top position with a full-width card | displaces the top organic slot entirely |
| HALF_COVER documented | covers approximately half the visible area in a high position | displaces a high-attention slot |
| RELEVANCE_PROMPT documented | context-aware prompt tied to viewer state or recent action | varies |
The full-cover prompt is the most disruptive for organic distribution. When triggered, it takes position zero of the feed, pushing all organic candidates one slot lower. Position-zero attention is disproportionately valuable in any ranked feed (the click and dwell heads fire most reliably at the top), so a full-cover prompt effectively removes the highest-value organic slot from the render.
Prompts fire conditionally based on viewer state (new-user onboarding, inactive-period reactivation, opt-in flow continuation), not on every feed render. The percentage of renders that include a prompt is not in the public source. From the creator side, the prompt layer is an intermittent slot tax: rarely visible, but when visible, claims a high-attention slot.
A subtle implication for creators trying to reach new viewers via OON
retrieval: new-user feed renders are more prompt-heavy than active-user
renders. Onboarding prompts, suggested-topics prompts, and
follow-recommendation prompts are all more likely on a viewer's first
several sessions. New-user OON retrieval (gated by
PhoenixRetrievalNewUserHistoryThreshold, walked in
A3)
also operates on a different candidate pool than power-user OON. The
combined effect is that organic candidates have fewer slots and a
modified retrieval lane when reaching newer viewers. The audience-growth
math therefore differs from the audience-engagement math; creators
optimising for new-follower acquisition face a different slot
allocation than creators optimising for existing-follower engagement.
Push-to-home: notification heroes
home-mixer/sources/push_to_home_source.rs fires
when the viewer arrived at the For You feed from a notification (a
mention, a reply, a like, a follow). The source injects a
notification-related hero candidate at or near the top of the feed.
The mechanic is contextual: a viewer who taps a notification expects to land on the related content. Push-to-home's job is to surface that content immediately rather than burying it in the standard ranking. The hero candidate is typically the post that triggered the notification, plus optionally a related cluster.
For organic creators, push-to-home is largely transparent (it operates on the viewer's arrival context, not on candidate competition). The one exception: a creator's post that generated the viewer's notification gets surfaced for them through this path, which is its own implicit reach amplifier for posts that earn replies or mentions. Replies and quotes that generate notifications drive return visits that surface the creator's content through push-to-home.
Cached-posts continuation
home-mixer/sources/cached_posts_source.rs fires
when the viewer's session resumes after a brief gap (closing and
reopening the app within a window, or returning to the feed from
another tab). The source surfaces candidates from the previous
session's scored list, picking up where the viewer left off.
The mechanic preserves session continuity. Without it, a viewer who closed the app mid-scroll would lose their place and start over with a fresh feed pass. With it, the previous session's continuation candidates appear first, then the standard pipeline takes over.
For creators, cached-posts is mostly a continuity feature, but it has one subtle implication: posts that performed well enough to be in a viewer's recent session list get a second chance to be served if the viewer returns. The signal that decides which posts get included in the cached set is downstream of Phoenix scoring, so high-scoring posts get the continuity benefit.
The real organic top-10
Putting the surfaces together: in a typical scrolled feed render where the viewer is an active long-time user (no full-cover prompts, no push-to-home, no cached continuation), the top-10 visible slots break down roughly as follows.
Source: illustrative composition, exact ratios depend on viewer state and platform settings
Left column: standard render, dominated by organic candidates. Right column: render with prompts or push-to-home firing, where non-organic surfaces take a larger share.
The takeaway: the visible top-10 is rarely ten organic candidates. The standard case is closer to six or seven organic candidates plus a mix of non-organic surfaces. When prompts or push-to-home fire, the organic share drops further. Creators competing for "top-10 placement" are actually competing for top-6-or-7 placement in a contended slot pool.
What changed from 2023 to 2026 in slot architecture
The 2023 home-mixer used a smaller, more tightly-coupled set of candidate sources. In-network and a single out-of-network source covered organic; ads were interleaved by a simpler rule; the who-to-follow surface existed but at lower frequency; prompts were a small set of onboarding-only cards. The total source count was roughly half what the 2026 home-mixer runs.
The 2026 expansion is structural, not incremental. The three OON retrieval variants (general, MoE, topic-keyed) replace what was one OON source in 2023. The prompts module quadrupled (four types vs the 2023 one or two). Push-to-home is a 2026 addition; the 2023 stack did not have a dedicated notification-arrival hero injection. Cached-posts continuation as a first-class source is also new.
The net effect on organic competition: in 2023, a typical visible top-10 might have been seven or eight organic posts plus an ad and a who-to-follow card. In 2026, the same top-10 is often six organic posts plus the same ad and who-to-follow card plus an occasional prompt or push-to-home hero. The organic share dropped while the non-organic surface count rose.
This is the broader-than-creators-realise story of 2026 feed architecture. The Phoenix transformer is more sophisticated than the 2023 MaskNet, but it has fewer slots to work with, and the slot mathematics constrain what the better scoring can deliver in raw impression terms. A more accurate Phoenix prediction on candidate quality is worth less when there are fewer organic slots for the high-quality candidates to occupy.
What this means for cadence and content strategy
Three implications fall out of the slot inventory.
First, the organic competition is denser than implied by raw candidate-count statistics. A creator's post does not compete with all candidates the home-mixer considers; it competes with the candidates that survive the slot allocation to non-organic surfaces. The effective bar is higher than impression-volume statistics suggest.
Second, replies and mentions have a compounding visibility mechanism. Posts that generate notifications drive return visits that surface the post via push-to-home. The mechanic favours posts that drive interaction (replies in particular) because each interaction becomes a potential push-to-home trigger for the interacting viewer. This connects directly to the reply head in A2: reply has the highest per-action weight in the 2023 reference, and each reply also triggers a push-to-home pathway for the viewer who replied. The compounding effect makes replies even more valuable than their raw weight suggests.
Third, slot scarcity reinforces the diversity-decay argument from A7. The organic-only slots inside the top-10 are typically six or seven. The diversity decay caps how many of those can come from a single author. Combined: a creator's marginal post past the second or third of the day is competing for a tiny slice of an already-bounded slot pool, against the decay multiplier driving its score toward floor. The "post fewer, higher-quality" reframe is the only architecturally viable strategy for serious creators in 2026.
Operational rules
Treat ads, who-to-follow, and prompts as fixed taxes on the slot pool. They take their share regardless of organic strategy. Acceptable, not optimisable.
Invest in posts that generate replies and mentions, not just likes. Each reply or mention generates a push-to-home pathway. The compounding visibility is downstream of the engagement, but the mechanic is real.
Recognise the visible top-10 is functionally a top-6 organic contest. The architectural ceiling on organic placement is lower than impression-volume framing suggests. Optimise per-post quality accordingly.
Do not over-index on top-slot heuristics. Position-zero placement is unreliable as a target because full-cover prompts and push-to-home heroes can override it. Targeting consistent top-three placement across many feed renders is a more architecturally-aligned strategy than targeting position zero on any single render.
Build for the reply-into-push-to-home loop. Posts that earn replies generate notifications, which generate push-to-home triggers for the replying viewer. That viewer returning to the feed surfaces the original post (or related cluster) at the top of their next render. The mechanic is not a single-impression bump but a recurring visibility pathway that compounds while the conversation stays active.
The slot-competition mechanics described in this article are the non-Phoenix portion of the For You feed assembly. The Phoenix scoring, the 19 engagement heads (A2), the OON retrieval lane (A3), and the diversity decay (A7) together describe how organic candidates score and rank. This article describes what those candidates are competing against once they reach the rendered feed. The structural conclusion is consistent across all of the series: voice consistency, embedding distinctiveness, and cadence discipline are the three levers creators have. A10 closes the series by scoring the four major writing tools against exactly these levers.