How should I post now that the hand-engineered weights are gone?
The 2023 algorithm exposed a table of hand-tuned weights (a like = this much, a reply = that much), and people optimized against those exact numbers. The 2026 system works differently: a Grok-based model predicts engagement per post per viewer, and the scorer combines those learned predictions. There's no fixed weight table to game anymore — the model judges each post in context. The practical upshot: stop optimizing for metric ratios and start writing things a smart model predicts people will genuinely engage with. The target moved from numbers to judgment.
If you learned X growth in the 2023-era — "replies are worth 27x a like" — the ground has shifted under that advice. The released 2026 architecture replaces the gameable weight table with a learned model, and that changes what "optimizing" even means.
Then: a fixed table you could game
The 2023 open-source release exposed explicit engagement weights — published constants you could read and target. That's why "reply-bait" and metric-ratio optimization became a genre: the numbers were right there. (The history pillar covers what those weights actually were.)
Now: a learned ranker predicting per-post
The 2026 scorer doesn't read a fixed table of your metrics — it combines predicted scores from the Phoenix/Grok model, which estimates how likely this specific viewer is to favorite, reply, dwell, or share this specific post:
44fn compute_weighted_score(candidate: &PostCandidate) -> f64 { 45 let s: &PhoenixScores = &candidate.phoenix_scores;
The current WeightedScorer combines predicted probabilities for: favorite, reply, retweet, photo expand, click, profile click, video quality view, share, share via DM, share via copied link, dwell, quote, quoted click, continuous dwell time, follow author, not interested, block author, mute author, and report.
The weights still exist (each predicted action is multiplied by one), but they're applied to
model predictions, and the predictions are contextual. You can't reverse-engineer a fixed
ratio to chase, because the model re-judges every post against every viewer.
The Phoenix source is the out-of-network retrieval path: its enable() requires that the request is not in_network_only, so it contributes candidates from beyond the viewer's follow graph.
What this means for how you post
| old playbook (2023) | new reality (2026) |
|---|---|
| Optimize for the highest-weighted metric (reply-bait) | Write things a capable model predicts people will genuinely engage with — bait is legible to the model. |
| Game fixed ratios | No fixed ratios to game; predictions are contextual per post and viewer. |
| Volume against known weights | Quality the banger classifier rates well, plus genuine engagement signals. |
What the code doesn't say
The current weight values, and exactly how the Phoenix model is trained. The structure (learned
predictions, combined by weights) is code-current; the numbers and the training are withheld. So
"the weights are gone" is precise shorthand for "the gameable fixed table is gone" — not a claim
that weighting disappeared.
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
Stop optimizing for ratios and start optimizing for genuine engagement a smart reader would predict — because that's literally what the ranker now does. The 2023 tricks are legible to a 2026 model. xDoctor measures the signals the current system actually predicts on, which is the version of "optimization" that still works.