In-network vs out-of-network: where does growth come from?
Reach to your followers (in-network, via Thunder) sustains you; reach beyond them (out-of-network, via Phoenix) grows you. The two run as separate sources with different rules — and the code applies a handicap to out-of-network candidates, so beating it requires genuinely strong content. New followers almost always come from out-of-network discovery, which means growth is fundamentally about clearing that handicap, not about posting more to the people who already follow you. Knowing which channel a post wins in tells you whether you're sustaining or growing.
Every post lives in two economies at once. Understanding which one drives growth — and that they have different rules — is the difference between spinning your wheels and actually gaining followers.
Two channels, two jobs
| channel | source | job |
|---|---|---|
| In-network | Thunder — your follows | Sustains you. Serves your posts to people who already follow you. Stable, but capped at your follower base. |
| Out-of-network | Phoenix — discovery | Grows you. Surfaces you to people who don't follow you — where new followers come from. |
Candidates are gathered by multiple sources, including Thunder (in-network posts from accounts the viewer follows) and Phoenix (out-of-network retrieval), plus a Who-To-Follow source for account recommendations.
Out-of-network carries a handicap
The catch: the scoring stage treats out-of-network candidates with a priority handicap relative to
in-network ones — out-of-network content has to be stronger to win the same slot. This is
deliberate (it protects feed quality), and it's why growth is hard: you're not just competing, you're
competing from behind.
Out-of-network candidates have their score multiplied by an OON_WEIGHT_FACTOR, with the code comment stating the intent: 'Prioritize in-network candidates over out-of-network candidates.' The factor's value is in the withheld params module.
Why this reframes "growth"
Posting more to your existing followers raises in-network reach, but in-network reach can't add followers you don't have. Growth is almost entirely an out-of-network problem: making content strong enough that Phoenix surfaces it to strangers and it clears the handicap. The accounts that grow fast are the ones consistently winning out-of-network, not the ones posting most often to their base.
Signal by signal
| if you want to… | focus on… |
|---|---|
| Keep your current audience engaged | In-network: post things your followers reliably engage with. |
| Gain new followers | Out-of-network: content strong enough to clear the handicap and earn the follow-author signal. |
| Diagnose flat growth | Check whether your out-of-network reach is near zero — that's the growth channel, and it's the one that stalls. |
What the code doesn't say
The size of the handicap and the in/out blend ratio. We can show the two sources exist and that
out-of-network is handicapped; how steep, and what fraction of a feed each fills, lives in withheld
parameters and selectors.
The numeric values of the current weights are not included in the open-source release: weighted_scorer.rs references a params module (e.g. p::FAVORITE_WEIGHT, p::REPLY_WEIGHT) whose values are not present anywhere in the published repository.
What to do with this
Measure your two channels separately — sustaining reach and growth reach are different numbers with different fixes. If followers aren't growing, the out-of-network channel is where to look, and the lever is content strength, not posting volume. xDoctor's reach diagnostics split these channels so you can see which one is actually working.