What Gets Filtered Before It's Even Scored
Age cutoff, dedup, muted keywords, and the new-user engagement floor
Pre-Scoring Filters
Before a post is even scored, it passes through a chain of filters. If it fails any of these, it never reaches the ranking model.
Age Filter
Posts older than the max age are dropped. The default max age is set via AgeFilter::new(max_age) — candidates older than this cutoff are removed entirely. Don't expect an old post to "catch fire" later — it's already aged out of the candidate pool.
Duplicate / Seen-Post Removal
drop_duplicates_filter.rs— removes duplicate postspreviously_seen_posts_filter.rs— removes posts you've already seenpreviously_served_posts_filter.rs— removes posts already served to youpush_to_home_dedup_filter.rs— dedup at the home timeline level
Muted Keywords
muted_keyword_filter.rs — removes posts containing keywords you've muted.
New-User Minimum Engagement Filter
new_user_min_engagement_filter.rs — for new accounts, out-of-network posts must clear a minimum engagement floor to keep surfacing.
- Max account age: 1800 seconds (30 minutes) — only applies to very new accounts
- Metric: "fav" (favorites)
- Threshold: 0.0 (default — disabled by default, but can be enabled)
This prevents brand-new accounts from flooding the out-of-network pool with zero-engagement posts.
Other Notable Filters
oon_retweet_reply_filter.rs— filters out-of-network retweets/repliesoon_nsfw_simclusters_filter.rs— NSFW filtering for OONself_tweet_filter.rs— removes your own posts from your feedbrazil_2026_election_filter.rs— election-specific filtering (Aug 2026)
Check Your Understanding
1. What happens to posts older than the age cutoff?
- A. They get a lower score
- B. They are dropped entirely from the candidate pool✓ correct
- C. They are shown less frequently
- D. They are marked as old
Why: The AgeFilter removes posts older than the max age — they never reach the scoring model. Old posts can't "catch fire" later.
2. What does the new-user minimum engagement filter do?
- A. Boosts new accounts
- B. Requires new accounts' OON posts to clear a minimum engagement floor✓ correct
- C. Filters spam from new accounts
- D. Limits new accounts to 10 posts per day
Why: new_user_min_engagement_filter.rs ensures new accounts' out-of-network posts must clear a minimum engagement threshold to keep surfacing.
3. Can a post you've already seen appear in your For You feed again?
- A. Yes, if it gets more engagement
- B. No — previously seen posts are filtered out✓ correct
- C. Only if you refresh
- D. Only if the author edits it
Why: previously_seen_posts_filter.rs removes posts you've already seen from the candidate pool.
Exercise
Think about a post that "went viral" days after you posted it. It didn't — the algorithm re-surfaced it. More likely, it was picked up by Phoenix retrieval from a different angle. Check if any of your old posts (>48h) are still getting impressions.
Hint: If they are, it's because someone with a similar embedding to you engaged with it, causing Phoenix to re-retrieve it for similar users.