Show HN: XViral – Post virality predictor based on X's For You Ranking pipeline

ninjahawk11 pts0 comments

GitHub - ninjahawk/XViral: Let AI grade your post before the algorithm does. · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

ninjahawk

XViral

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>7 Commits<br>7 Commits

simulator

simulator

x-algorithm

x-algorithm

.gitignore

.gitignore

CLAUDE.md

CLAUDE.md

FINDINGS.md

FINDINGS.md

PLAN.md

PLAN.md

README.md

README.md

View all files

Repository files navigation

XViral

Let AI grade your post before the algorithm does. Based on X's open source For You ranking pipeline, rebuilt from the official source release.

📄 The findings · 🗺 The roadmap · 🔬 Upstream release

Getting started & staying tuned with us.

Star us, and you will receive all release notifications from GitHub without any delay!

Overview

In May 2026, X published the production code of its For You feed — Home Mixer<br>(orchestration), Thunder (in-network store), Phoenix (the Grok-based ranking<br>transformer), and Grox (the content-understanding service) — together with a<br>2.9 GB pre-trained mini Phoenix checkpoint, frozen from the same continuous<br>training process as the production model. The release contains the complete<br>scoring formula and its nineteen engagement heads, the output schemas and<br>thresholds of the Grok content judges, and the pipeline's filters and<br>penalties. It withholds the numbers: the head weights, the judge prompts, and<br>the operational thresholds.

XViral vendors that release unmodified, audits it file by file<br>(FINDINGS.md), and rebuilds the pipeline locally as a<br>draft-post scorer: the Grok judge layer is emulated by an LLM against the<br>exact published schemas, the weighted scorer applies the exact published<br>formula, and every withheld number is a provenance-tagged free parameter<br>(simulator/weights.json) to be fitted against the<br>outcomes of real posts.

This differs from the algorithm-guide genre in that nothing here is folklore:<br>each mechanic traces to a file in X's own code, each assumed value is labeled<br>as assumed, and the simulator's accuracy is treated as a measurable quantity<br>with a target (pairwise ranking accuracy against published posts), not a<br>claim.

What the source shows that the guides do not

1. The platform scores slop. Every post passes a Grok vision-language<br>judge whose output schema includes quality_score (a "banger" screen with a<br>hard threshold at 0.4) and an integer slop_score — template filler is<br>measured, not merely disliked (grox/classifiers/content/banger_initial_screen.py).

2. Small accounts face a dedicated spam judge. A classifier named<br>SpamSystemLowFollower renders binary spam verdicts specifically for<br>low-follower authors — the exact cohort, and the exact phrasing patterns, of<br>template giveaway posts (grox/classifiers/content/spam.py).

3. Negative predictions are first-class. The final score is a weighted sum<br>over heads that include not_interested, block_author, mute_author, and<br>report — a post that provokes mutes does not merely underperform, it is<br>actively suppressed, and legacy-published weights put report at −369 against<br>0.5 for a like (home-mixer/scorers/weighted_scorer.rs).

4. Video earns nothing below a duration floor. The video-quality-view head<br>is weight-gated on video_duration_ms > MIN_VIDEO_DURATION_MS; the widely<br>recycled "video gets 10× engagement" figure appears nowhere in the code and<br>traces to a 2019 Twitter Ads marketing post.

Reading the output

Grox judges — the emulated banger screen (quality_score against the<br>source threshold 0.4), slop_score 0–10, and the low-follower spam verdict<br>with its reason.

Weighted score — the source formula applied to per-impression action<br>probabilities: an in-network score and an out-of-network score (the OON<br>multiplier from oon_scorer.rs applied).

The head table — each action's probability, weight, and signed<br>contribution, sorted by magnitude; the negative-head net is printed<br>separately because it usually decides the total.

Top fixes — the three highest-impact edits, from the...

post from xviral algorithm content search

Related Articles