Search and recommendation systems can be hard to design because they combine infrastructure, data, and models. Eugene Yan's guide to system design for discovery proposes two useful partitions: first, split the system into offline and online environments; second, separate the process into candidate retrieval and ranking. Offline environments are for preparation and evaluation; online environments are for serving live requests.

By making those boundary lines explicit, teams can decide where expensive operations belong. Candidate retrieval needs to be broad enough to pull relevant candidates from a large catalogue; ranking needs to be precise enough to put the best items on top. Systems often exploit the offline/online split by precomputing or training ahead of time to keep request-time work low.

The value of the article is less in any single new component and more in the shared frame it builds: a standard way to decompose the problem so that engineering and product teams can align on requirements. It is a practical synthesis, not a research claim, and it reflects the recurring shape of production search and recommendation systems.