# Tweet reply generator, and why replies stay in network

A tweet reply generator can write the text. It cannot put that reply on the For You page of people who do not follow you. A reply under someone else’s post does not enter that person’s followers’ For You through the open-source pipeline. The filter is explicit. The same tree also discounts replies that do stay in network. Both facts are in [`X_ALGORITHM_BOOST_PLAYBOOK.md`](https://github.com/abhirupghosh/tweet-factory/blob/main/X_ALGORITHM_BOOST_PLAYBOOK.md), from [`xai-org/x-algorithm`](https://github.com/xai-org/x-algorithm) commit [`cb45b55`](https://github.com/xai-org/x-algorithm/commit/cb45b55).

tweet-factory will draft reply-shaped variants. `tf generate` asks for ideas aimed at copy-link, reply, quote, or follow. Text that starts with `@` is scored as a reply: reply weight 5, not the mutual-original 20 (`src/rank/score.ts`). You still publish it yourself. The [tweet generator](ai-tweet-writer-your-voice.md) page is the drafting tool. This page is the distribution limit.

## Out of network, the reply is dropped

`OONRetweetReplyFilter` removes reposts and replies from accounts the viewer does **not** follow. `EnablePhoenixOonReplies` defaults **false**, so a reply to someone who does not follow you is not an out-of-network For You candidate.

Replies whose parent failed to hydrate are dropped for everyone, followers included.

A protected author is a separate rule: `protected_author` drops the post when the viewer does not follow them. A protected account gets no out-of-network For You distribution. Followers can still be shown the post.

Thunder, the in-network source, does keep a replies deque. Return cap in `thunder/config.rs`: 30 replies per author, beside 50 originals and 100 videos. That is “posts from accounts this viewer follows,” not “replies this author left on a stranger’s post, shown to the stranger’s audience.”

## In network, a reply is scored lower than an original

When the viewer does follow the author, a reply or a repost is still multiplied by `OonWeightFactor` **0.75**. `EnableOonRescoreForInNetworkRepliesRetweets` defaults true. An original post from a followed account is ×1.

The mutual-follow reply boost does not apply to a reply you send. `CandidateScoringInputs::bidirectional_boost_eligible` requires `!is_reply && !is_retweet`. The +15 on the reply head (5.0 + 15.0 = 20.0) is for an **original** post whose author the viewer mutually follows.

So the large “reply” coefficient is mostly “will this viewer reply to this original,” not “this reply should travel.”

## One post per conversation

`DedupConversationFilter` keeps a single post per conversation id. The highest score wins. A reply can beat its own thread starter, and then the starter is the one that drops. Later posts in a thread compete with the first post and with each other.

That is why the playbook says the first post has to stand alone. It is a dedup rule, not a claim about thread length and virality.

## What the code does not say

It does not say replies are worthless inside the group that already follows you. Reply’s coefficient on an in-network original is still 5.0, or 20.0 when the follow is mutual. It does not say a reply is invisible to the person you replied to, or to your followers via Thunder. It does not name RealGraph. That string is not in the repo.

`src/tui/persona.ts` writes `algorithmPriorsBlurb()` from `src/rank/weights.ts` into `persona/PERSONA.md`. That blurb says out-of-network replies are filtered, and that the reply weight is 20 on an original a mutual follow sees. It does not name RealGraph. The ranker facts on this page are the source of that blurb.

## Related

- [How the X algorithm works](how-the-x-algorithm-works.md)
- [Engagement weights](x-algorithm-engagement-weights.md)
- [Myths: links, hashtags, bookmarks, Premium](x-algorithm-myths.md)

## FAQ

### Can a tweet reply generator get replies onto non-followers’ feeds?

No path in this pipeline does that. `OONRetweetReplyFilter` drops replies and reposts from accounts the viewer does not follow, and `EnablePhoenixOonReplies` defaults false. A generated reply has the same filter as a reply you typed. The generator changes the wording. It does not change the filter.

### Why don't replies reach non-followers?

`OONRetweetReplyFilter` drops replies and reposts from accounts the viewer does not follow, and `EnablePhoenixOonReplies` defaults false. A reply on a stranger’s post is not an out-of-network For You candidate in this pipeline. If the parent tweet fails to hydrate, the reply is dropped for followers too.

### Does the out-of-network discount also hit replies to your own followers?

Yes. A reply or repost from an account the viewer follows is multiplied by 0.75, because `EnableOonRescoreForInNetworkRepliesRetweets` defaults true. An original from a followed account is not discounted. The +15 mutual reply boost applies to that original, not to a reply.

### Can a reply outrank the start of a thread?

Yes. Conversation dedup keeps the highest-scoring post in the conversation. A reply can be the one that remains, and the thread starter is then ineligible for that request.
