An impossible budget
Open any feed and a system just did something absurd. It had a corpus of maybe a hundred million items. It had to choose roughly ten. It had about 100 milliseconds. And it had to do it for every user at once.
Score every item with a good model and the arithmetic kills you immediately. If one scoring pass takes 1 millisecond, then 100 million items is 100,000 seconds, which is over a day, for one refresh.
So no production recommender ever scores everything. That is the single fact that explains the architecture of every feed you use. The system must throw away almost the entire corpus before it thinks carefully, and the interesting engineering is entirely in how you throw things away cheaply without losing the good ones.
The standard answer is a funnel: a couple of stages, each smaller and smarter than the last.

