In August 2026, xAI published the code that decides what two hundred million people see every time they open X. The xai-org/x-algorithm repository is not a summary, a blog post, or a sanitized diagram. It is the production source: the Rust services that assemble the For You feed, the exact engagement weights, every filter that can silently remove your post, and the machine-learning model that predicts whether a given reader will reply, repost, or hit "not interested."
Better still, it updates. The repository receives near-daily syncs from production (the latest on October 27, 2026), which turns its git history into something creators have never had before: a dated changelog of the live algorithm. We cloned the repository, read it end to end (roughly 2,300 files across the feed mixer, the candidate pipeline, the ranking models, and the trust-and-safety stack), and diffed the recent deployments to see what changed this month.
This is the complete creator's guide to what we found: how a post travels from the compose box to someone's feed, the exact value of every action a reader can take, the filters that decide whether you are even in the running, and what all of it means for how you should post. Everything is cited to a real file in the repository, so you can check our work.
Before we go deep, you can play with the headline numbers interactively. This demo is built on the same weight table this article documents:
What changed in the latest deployments (October 2026)
The repository is not a one-time dump. It receives a sync from production almost every weekday (the most recent landed October 27), and because every sync is a git commit, the diff between deployments is a public changelog of the live algorithm. Here is what actually moved in the last month, straight from the commit history:
The direction of the October tuning is coherent: raw attention signals got more valuable (likes up twice in two days, dwell time up 50%), shallow interaction signals got cheaper (clicks down, video opens slashed), and the reader's explicit displeasure got more expensive. If your strategy leaned on curiosity-gap clicks, October made it measurably worse; if your posts hold attention and earn likes, October was a buff.
The latest sync: per-reader calibration is being wired in
The October 24 to 27 deployments are the most interesting of the month. They ship an entire per-user debiasing pipeline: a new vm-ranker/scoring/debias.rs, a store for per-user calibration artifacts (user_debias_store.rs), and, in the very latest sync, home-mixer flipped VMRankerSendDebiasInputs to true, meaning production is now feeding per-user baselines to the ranker even though the final knob (UserDebiasEnabled) is still off. When it turns on, predictions will be re-centered against each viewer's personal baseline: a like from a stingy liker will count for more than a like from someone who likes everything. Easy engagement from easy audiences is about to be marked down.
Also visible in the recent syncs, staged behind off-by-default flags and experiments:
- A second new ranking model in shadow testing. The shadow-traffic config added
Experiment19Fou at 30% alongside Experiment18, meaning a next-generation Phoenix variant is being evaluated on live traffic right now. - Semantic-ID retrieval (
EnableSidSource, with a new sid_retrieval_client.rs): a staged candidate source that retrieves by semantic post IDs, up to 800 candidates from 50 seed posts. Content meaning, not just engagement lookalikes, is becoming a retrieval path. - History topics (
HistoryTopicsEnabled, 28-day window): the ranker is being prepared to see a month of your topic history, which would sharpen both topical consistency rewards and fatigue effects. - Out-of-network replies may return: new
EnablePhoenixOonReplies and PhoenixOonRepliesRootOnly flags landed, both off. The no-replies-to-strangers rule documented below is current production behavior, but xAI built the switch to change it. - A zero-like author experiment (
zero_fav_codivert_filter.rs): authors whose posts retrieve with zero favorites are being split into treatment and control buckets, a live experiment on how much reach brand-new or low-engagement authors should get. - New author brand-safety and post-engagers clients, a 170-line fair-share filter guaranteeing each candidate source a proportional slice of scoring capacity, and a retrieval pipe widened from 200 to 100,000 Kafka candidates.
How a post becomes a For You feed: the architecture
The For You feed is assembled by a service called home-mixer, which runs a pipeline framework (candidate-pipeline/) with six stage types: sources, hydrators, filters, scorers, selectors, and side effects. Every time you pull to refresh, home-mixer runs the whole pipeline and returns 35 posts (RESULT_SIZE in home-mixer/params/config.rs).
The pipeline starts by hydrating the query: who you are. It loads your most recent actions (up to 1,024 of them), who you follow, who you have blocked or muted, your muted keywords, which posts you have already seen or been served, and your topic interests. Your feed is a function of your own behavior before a single candidate post is considered.
Where candidate posts come from
Four sources run in parallel, each with a cap on how many posts it may contribute:
- Thunder (in-network): an in-memory store of recent posts from accounts you follow, returning up to 1,200 posts, newest first. Thunder caps each author at 50 original posts, 30 replies, and 100 videos per fetch (
thunder/config.rs). - Phoenix retrieval (out-of-network): a two-tower embedding model that matches your interest vector against an index of recent posts, returning up to 1,000 candidates.
- SimClusters (out-of-network): community clustering that groups accounts and posts by who engages with what, surfacing posts popular in communities you belong to.
- Popular posts: a shared list of up to 500 posts from roughly the top 0.005% of accounts by follower count that posted in the last 7 days, ranked by projected views with an 8-hour half-life and refreshed every 60 seconds (
home-mixer/util/popular_authors.rs).
That is as many as a few thousand candidates competing for 35 slots. A fair-share filter caps what reaches scoring at 2,800 candidates, split proportionally across source types (PhoenixScoresResultSize), and then the real ranking begins.
The scoring chain
Candidates flow through three scorers in order. First, Phoenix, a JAX transformer, predicts the probability of 27 different user actions for every candidate: will this specific viewer like it, reply, repost, share it via DM, expand the photo, dwell on it, mute the author, report it, and so on. A notable design choice called candidate isolation means each post is scored against you and your history only, never against the other candidates, which keeps scores cacheable and stable.
Second, an immersive-video scorer adjusts video candidates. Third, vm-ranker recomputes the final value score: it multiplies each predicted probability by a weight, sums the results, applies an out-of-network discount, an author-diversity decay, and a small-author exploration lift, and finally runs a diversity pass over the top of the ranking. The top 50 survive selection (TOP_K_CANDIDATES_TO_SELECT), visibility rules run once more, ads and the Who to Follow module are blended in (Who to Follow sits at position 6), and you get your 35 posts.
Every number in that chain is in the open. Let us start with the one creators ask about most: the weights.
The value model: what every action is worth
The core formula is one line in xai-value-model/scoring.rs: a post's score is the sum over all actions of weight × predicted probability. The weights live in home-mixer/params/param.rs. Here is the full positive table, verbatim:
Three things jump out immediately.
First, the like is almost worthless. At 0.66, a like is worth about an eighth of a reply and a thirtieth of a copy-link share. The algorithm treats a like as a low-effort, low-information signal. An account optimized for likes is optimizing the wrong column.
Second, the copy-link share is king. At 20, it is the heaviest positive weight in the system. Think about what the action means: someone found your post valuable enough to carry it off the platform, into a group chat, a Slack, an email. X reads that as the strongest possible endorsement. Posts that people want to send to a specific person (useful references, sharp takes worth discussing, resources) have a structural advantage over posts people merely enjoy.
Third, conversation outweighs amplification. A reply (5) is worth five retweets (1). A quote (5) likewise. The feed is tuned to reward posts that start exchanges, not posts that get silently passed along.
The full weight table
Here is everything, including the signals most people have never heard of:
The surprises in the zeros
The zero-weight rows deserve a second look, because they kill some popular folk theories.
Bookmarks do not move the For You score. For years, growth threads have claimed bookmarks are a secret heavy signal. In the published value model there is no bookmark weight at all. The model does predict bookmark probability internally (it is one of the heads used for per-user calibration in vm-ranker/scoring/debias.rs), but zero weight means it contributes nothing to the ranking sum. "Bookmark this" CTAs are optimizing a counter that the feed does not pay for.
Profile clicks are worth nothing. The "make them curious enough to click your profile" play has no direct ranking payoff either.
Video quality views carry zero weight, and the small video-open weight (0.02) only applies at all to videos of at least 10 seconds (MinVideoDurationMs = 10000). Video still earns through dwell and continuation time, but a raw "3-second view" is not the currency.
Dwell: the silent currency
The attention weights look tiny next to a reply's 5, but they apply to every single viewer, not just the minority who act. Dwell probability is 0.05, continuous dwell time is 0.006 per unit, and there is a -0.02 penalty head for being scrolled straight past. Across thousands of impressions, the gap between a post that stops thumbs and a post that gets flicked past adds up to real score, before anyone has engaged at all. This is the quantified case for formatting: a strong first line, line breaks that create a reading rhythm, and an image worth a pause are all dwell plays. It also explains why walls of unbroken text underperform even when the ideas are good.
Video has its own economics. The headline weights are small (video open 0.02, video quality view 0.00), but click dwell time carries 0.4 and video continuation seconds is a dedicated prediction head. The system does not reward a video existing; it rewards a video being watched. A 40-second video that holds viewers beats a 3-minute video people abandon, and the 10-second minimum duration for quality-view eligibility (MinVideoDurationMs) makes sub-10-second clips a dead category for that head entirely.
Estimate a post's weighted value
To get an intuition for how lopsided the weights are, try a few scenarios. This calculator applies the production weights to engagement counts. It is an illustration (remember, the real model weights probabilities per viewer, not totals), but the ratios are faithful:
The negative signals: how posts die
The punishment side of the ledger is far steeper than the reward side, and it is where most reach quietly goes to die.
A report at -234 is worth minus 354 likes of damage per unit of probability. A mute (-58.8) is nearly twice as bad as a block (-31.2), which makes behavioral sense: muting is what people do to accounts that annoy them but that they feel obliged to keep following, and the model treats that quiet annoyance as a stronger quality signal than an angry block.
There is also a structural cliff built into the arithmetic. In xai-value-model/scoring.rs, any post whose weighted sum comes out negative is squashed into the tiny range between 0 and 0.001 (NEGATIVE_SCORES_OFFSET). In practice: a post with net-negative predicted value ranks below every net-positive post in the candidate pool, no matter how much raw engagement it has. Rage-bait that farms replies but also farms mutes and "not interested" clicks is not playing a clever margin game; one step over the line and it falls off a cliff.
The practical reading: the model is per-viewer. It is not asking "did this post get reports in general," it is asking "will this reader mute you for this." Posting that performs well with your core audience but irritates the broader out-of-network pool will see out-of-network distribution dry up first, which is exactly the pattern creators describe as a shadowban. Often it is just this arithmetic.
The mutual-follow boost: replies are not all equal
One of the most consequential recent changes is documented in docs/BIDIRECTIONAL_BOOST_CHANGE.md with its own A/B history: when the viewer and the author follow each other, the reply weight gets a +15 boost on top of the base 5. The boost launched at +20 in mid-July 2026 and was tuned down to +15 two weeks later.
That means a reply from a mutual is worth 20, the same as a copy-link share, and roughly 30 likes. The algorithm is explicitly buying conversations between people with established two-way relationships. This is the quantified version of "X is a networking app wearing a broadcast app's clothes."
Two implications follow. First, your mutual graph is a ranking asset: every genuine mutual you add is a reader whose replies are worth quadruple a stranger's. Converting one-way followers into mutuals (by following back the accounts that consistently engage) literally raises the ceiling on your posts' scores. Second, spending fifteen minutes replying to your mutuals after you post is not just community hygiene; their replies back are the heaviest engagement your post can collect in its critical first window.
The filters: fifteen ways to be removed before ranking
Scoring only matters if your post survives the filters. The For You pipeline in phoenix_candidate_pipeline.rs runs a long gauntlet of pre-scoring filters, in a fixed order. These are the ones that matter to creators:
Three of these deserve a closer look.
The 48-hour lifespan
MAX_POST_AGE is 48 hours, computed from the post ID itself. After two days, a post is categorically ineligible for For You, regardless of how well it is performing. Combined with the popular-posts source's 8-hour view half-life, the message is unambiguous: X distribution is a daily game. Your library of old bangers earns nothing; the feed only pays for what you shipped this week. (Search and profile visits still find old posts, but the recommendation engine does not.)
Your replies do not travel
The OONRetweetReplyFilter drops out-of-network replies and retweets outright, and Phoenix's out-of-network reply retrieval is disabled by default (EnablePhoenixOonReplies = false). Translation: your brilliant reply under a big account is seen by people browsing that thread and by your own followers, but it is not recommended into strangers' For You feeds. Reply-guy strategies earn visibility within the thread and new followers from thread readers, not direct feed distribution. The post types that travel to strangers are originals and quotes.
There is a subtle extra rule for in-network reply chains (SelfReplyChainFilter): a reply only survives if the first non-self account above it in the thread is someone the viewer follows. Even your followers mostly see your replies only when they also follow the person you are replying to or the thread is yours.
One post per conversation
DedupConversationFilter keeps only the highest-scoring post from any one conversation. Your 12-part thread is competing against itself: one tweet from it, usually the strongest, represents the whole thread in a given feed. Front-load threads so the hook tweet is the one that wins.
Author diversity: the case against posting floods
vm-ranker applies a per-author decay to consecutive posts from the same account in one ranking pass (vm-ranker/params.rs: decay 0.5, floor 0.25). Your best post keeps its full score; your second-best is multiplied by 0.625, your third by about 0.44, and everything after converges to a quarter of its score.
On top of that, a determinantal point process (vm-ranker/dpp.rs, on by default, θ = 0.65) runs over the top 150 ranked posts and prunes near-duplicate content using embedding similarity, so five people posting the same news screenshot collapse to roughly one slot. And remember Thunder's per-author caps (50 originals, 30 replies per in-network fetch).
The combined lesson: volume has sharply diminishing returns inside any single feed session. Five posts a day spread across the hours your audience is online will outperform five posts in one burst, and one great post beats three good ones fighting each other for the same decayed slots.
The small-creator lottery: slot 16
The most creator-friendly machinery in the whole repository is the author cold-start scorer (home-mixer/scorers/author_cold_start.rs). On each feed load, the system may pick exactly one eligible low-visibility post and lift it to position 16 in the ranking. Eligibility is strict and entirely mechanical:
The post must also be an original (not a reply or retweet) and already scoring in the top 97% of non-zero candidates. Selection uses Thompson sampling on the post's like-per-view rate with a prior of roughly 1.5%: the system samples from a Beta distribution over each eligible post's observed like rate, takes the top two samples, and promotes the one with the higher model score. The lift only ever raises a score to the rank-15 level; it never demotes anything.
What this means in practice: if you are under 50,000 followers, every original post gets entered into a recurring lottery during its first two hours, and the ticket multiplier is your like-per-impression rate on the small early sample. A post that converts its first 100 impressions at 3% like rate samples dramatically better than the 1.5% prior and keeps winning lifts, each of which brings fresh impressions, which (if the post is good) compound. This is the codified mechanism behind "small accounts can go viral from nothing," and it is why your first two hours, and the strength of your hook for cold audiences, matter more than anything else you control.
Inside Phoenix: the model that predicts you
It is worth pausing on what the ranking model actually is, because its design explains behavior that confuses creators daily.
Phoenix is a transformer written in JAX. Its input is not your post; it is the viewer: a sequence of up to 1,024 of their most recent actions (MaxSeqLengthScoring), their follow graph, and embeddings of candidate posts. For each candidate it outputs 27 probabilities, one per action head, from "will favorite" through "will open the photo" to "will report." Those 27 numbers, multiplied by the weights above and summed, are your post's score for that one viewer.
The 27 heads break down like this:
- Engagement heads (7): favorite, reply, retweet, quote, share, share via DM, share via copy link.
- Click heads (8): click, open link, photo expand, video open, profile click, quoted click, video quality view, quoted video quality view.
- Attention heads (6): dwell, dwell time, click dwell time, video continuation seconds, profile visit seconds, post unexplored.
- Relationship heads (2): follow author, react with video.
- Negative heads (5): not interested, block author, mute author, report, not dwelled.
Two architectural details matter for strategy. First, candidate isolation: each post is scored against the viewer alone, never against the other posts in the batch. Your post does not get a worse model score because a bigger account posted at the same minute; competition happens later, in selection and the diversity passes, not inside the model. Second, the model is retrained continuously on served impressions. Every For You session is training data, which is why the system adapts within days when your content (or your audience's taste) shifts, and why engagement earned off-feed teaches it nothing about you.
Retrieval, the other half of Phoenix, is a two-tower model: one tower embeds the viewer, the other embeds posts, and candidates are fetched by nearest-neighbor search over the index that phoenix-rankall/ maintains. The practical upshot of two-tower retrieval is that your post travels to strangers whose embedding looks like your engagers' embeddings. The audience that engages with your first few hours literally defines which strangers see it next; early engagement from the wrong crowd steers retrieval somewhere your content will underperform.
Downstream of the model, vm-ranker can apply per-user debiasing (vm-ranker/scoring/debias.rs): re-centering predicted logits per viewer across 14 heads so chronically generous likers and chronically stingy ones do not distort ranking. It ships disabled by default (UserDebiasEnabled = false), but the plumbing tells you where the system is heading: toward scoring posts on lift relative to each viewer's baseline, not raw probability. Content that only harvests easy engagement from easy audiences is the kind this machinery exists to deflate.
Thunder: the in-network fast lane
Your followers' feeds are fed by Thunder (thunder/), and it behaves differently from everything else. Thunder is an in-memory store, written to by Kafka consumers as posts are created, that returns followed accounts' posts newest first, up to 1,200 per request. There is no clever selection at the source: recency is the ordering, and the value model sorts the rest. That is why your followers reliably see your post within minutes while out-of-network reach ramps over hours.
Thunder's reply rules are strict and worth knowing: an in-network reply is served only if it replies to an original post, or if it replies to a reply in a conversation and is directed at someone the viewer follows. Retweets of the viewer's own posts are excluded (nobody needs to be shown their own post again), and the per-author caps (50 originals, 30 replies, 100 videos per fetch) only bite genuinely hyperactive accounts.
The 48-hour life of a post, step by step
Put the whole system together and a post's life looks like this:
- Minute 0: publish-time classification. Grok-based classifiers read the post: topic tags, embeddings, a slop score, safety scores. The post enters Thunder's in-memory store and becomes retrievable by Phoenix's index within moments.
- Minutes 0 to 60: the in-network test. Followers pulling to refresh get the post via Thunder, newest first. The model has little post-specific evidence yet, so predictions lean on your account's track record with each viewer. Early replies (especially from mutuals at weight 20) and copy-link shares (20) rapidly raise predicted value for everyone who follows.
- Hours 0 to 2: the lottery window. If you are under 50K followers, the post is cold-start eligible while it has under 200 home impressions. A strong like-per-view rate on the first impressions wins slot-16 lifts, each buying another batch of fresh eyeballs.
- Hours 1 to 8: crossing the network boundary. With real engagement evidence accumulated, the post starts winning out-of-network auctions despite the 0.75 discount. Two-tower retrieval surfaces it to strangers who resemble its engagers; the popular-posts list (8-hour view half-life) can pick it up if views are compounding.
- Hours 8 to 48: the long middle. Distribution continues wherever predicted value stays high, pruned by seen-post filters (nobody is shown it twice) and the DPP if similar content saturates. Performance here is pure model confidence: dwell, continued shares, and the absence of mutes.
- Hour 48: the cliff. The AgeFilter removes the post from all For You candidacy. Whatever momentum remains lives in search, profile visits, and external links, none of which train ranking.
Out-of-network reach, trust systems, and what is NOT in the code
The 25% stranger tax
There is no fixed ratio of in-network to out-of-network posts in your feed; everything is ranked in one pool. But out-of-network candidates carry a flat ×0.75 multiplier (OonWeightFactor), and topic-based candidates carry ×0.5. To reach strangers, your post has to beat followed accounts' posts by a third more on predicted value. Strong early engagement from your own followers and mutuals is what buys a post past that threshold, which is another reason the first-hour, in-network game decides out-of-network reach.
Publish-time AI review
Every original post passes through Grok-based classifiers at publish time (the grox/ flows): a "banger" initial screen on original posts, generating a description, topic tags, a slop_score, and a minor-safety score. Account-level systems run alongside: agatha/ labels accounts by the rate of blocks, mutes, and spam reports they attract relative to favorites over a rolling 30-day history, bdsm/ detects inauthentic action sequences (engagement pods, bot rings), and user-cred-v2/ computes a PageRank-style credibility score from the follow graph. Buying engagement or coordinating pods leaves exactly the action-sequence fingerprints these systems exist to catch.
The visibility rulebook
Separate from scoring, the visibility-filtering/ service decides whether a post may be recommended at all. For the Home recommendations surface, these author-level labels remove an account's posts from out-of-network distribution entirely:
These labels are what people actually mean by a shadowban, and the inputs that earn them are mostly rate-based. agatha/ computes account labels from the rate of blocks, reports, and spam reports you attract relative to the favorites you attract, over a rolling 30-day history. A growing account collecting plenty of likes absorbs occasional reports fine; an account whose negative actions outpace its favorites drifts toward a label. The 30-day window also means recovery is possible and roughly month-shaped: stop the behavior that generates mutes and reports, and the ratios that drive labels reset.
Myths the code quietly kills
- No Premium ranking boost. We searched home-mixer, vm-ranker, and the value model: there is no verified or Premium weight anywhere in scoring. Premium appears in ads logging. The blue check buys features and visibility surfaces, not For You ranking points.
- No hashtag machinery. Nothing in the ranking path reads hashtags. Topics are inferred by classifiers and embeddings.
- External links are not hard-penalized in the weights. Opening a link is a small positive (0.2). The honest caveat: link posts can still underperform via the behavior the model predicts (readers who click away do not reply), but there is no explicit link penalty constant.
- Direct traffic does not train the feed. Only engagement on posts served in the Home timeline counts for ranking, per the comments in param.rs. Blasting a post's URL to your newsletter boosts its counters, not its For You score.
The algorithm is a moving target: recent changes on the record
One underrated feature of the open repository is that changes now arrive with receipts. A few from the recent record that shifted strategy:
- July 13, 2026: the bidirectional reply boost ships at +20, then is tuned to +15 on July 24 after A/B measurement (
docs/BIDIRECTIONAL_BOOST_CHANGE.md). Mutual-graph quality became a first-class ranking input overnight. - August 2026: the repository goes public, with a README changelog that has been updated through September, including documentation of how weights work and election-related filtering.
- October 26, 2026: the last parameter sync recorded in
home-mixer/params/param.rs, the source of every weight in this article.
Some things are deliberately withheld: certain enforcement rules in botmaker-rules/ ship redacted to prevent gaming, the Grok classifier prompts are not included, and the published thresholds in the credibility-based rule exemptions are mock values. The scoring math, though, is complete, and it is the part that should change how you post.
The playbook: ten changes the code justifies
Everything above compresses into a short list of behaviors with direct support in the source:
- Write posts people send to someone. The copy-link share is weight 20. Useful references, sharp contrarian takes, and "my friend needs to see this" content structurally outrank merely likeable content.
- Engineer conversations, not applause. Replies (5) and quotes (5) are the volume signals that matter. End posts with a genuine opening for disagreement or addition. Reply to replies: every exchange is another weighted event.
- Invest in mutuals. A mutual's reply is worth 20. Follow back your consistent repliers, and show up in their threads; the boost works in both directions.
- Treat the first two hours as the whole game. The cold-start lottery requires under 2 hours and under 200 impressions; Thunder serves newest first; the popular list decays on an 8-hour half-life. Post when your people are online, then stay for the conversation.
- Space your posts out. Author diversity decay (0.5, floor 0.25) and conversation dedup mean a burst of posts cannibalizes itself. Hours apart beats minutes apart.
- Front-load threads. Only one post per conversation survives dedup; make sure it is your hook.
- Stop optimizing bookmarks and profile clicks. Both are weight zero in the For You value model.
- Audit yourself for mute-bait. Mute is -58.8 and "not interested" is -52.27, and a net-negative post ranks below everything. Engagement-bait formats that annoy the marginal reader cost more than they earn.
- Sound like a person. The slop classifier runs on every post and the llm_slop_user label removes you from strangers' feeds for 7 days. Generic AI output is now a formal distribution risk.
- Ship fresh originals daily rather than recycling. The 48-hour age filter plus the DPP's near-duplicate pruning mean reposted and copied content has nowhere to go.
One honest note on all of the above: the weights apply to predicted probabilities for each individual viewer, produced by a transformer looking at that viewer's last 1,024 actions. You cannot game a prediction of genuine behavior for long; the only durable strategy the code leaves open is making things specific audiences genuinely reply to, share, and come back for. The algorithm is, in the end, a very expensive lie detector.
FAQ
Posting into a known game
For most of X's history, creators argued about an invisible machine. Now the machine is public, versioned, and updated: the weights are in param.rs, the filters are in the pipeline, the lottery is in the cold-start scorer. The creators who win from here are the ones who internalize the actual rules: conversation over applause, mutuals over masses, the first two hours over the archive, and a human voice over slop, because the system now checks.
Xpert is built directly on this repository: our scoring engine mirrors these production weights, our drafts are tuned to the signals that carry weight (and screened against the ones that get you muted), and our scheduler targets your proven first-hour windows. If you would rather act on the algorithm than memorize it, start free and let it watch the repo for you.