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...