How Ranking Works
The Philosophy: Hidden Gems Over Viral Content
Most algorithmic feeds optimize for engagement. Clicks, shares, and time-on-site drive what gets shown. This creates a bias toward viral content: the article everyone already saw, the hot take designed to provoke, the clickbait that works.
Scour takes a different approach. The goal is to surface content you'd never find otherwise: the indie blog with 50 readers, the obscure technical post that's exactly what you needed, the thoughtful essay that didn't go viral because it required attention.
To do this, Scour deliberately avoids using popularity signals. There's no consideration of how many shares a post has, how many backlinks point to it, or how much engagement it's getting elsewhere. Instead, ranking is based entirely on:
- Your explicit interests — topics you've told Scour you care about
- Content quality — a domain blocklist filters out known spam, content farms, and SEO-heavy sites
- Source diversity — ensuring no single topic or source dominates your feed
One nuance: a story your own subscriptions link to can become eligible to appear, but those citations never change its score.
Explicit Interests, No Pigeonholing
On most platforms, clicking one article about cooking can flood your feed with cooking content for weeks. The algorithm infers your interests from behavior and doubles down.
Scour doesn't work this way. Your feed is determined by the interests you explicitly add. One click on a random article won't change anything. If you want more cooking content, you add a cooking interest. If you don't, you don't.
This keeps your feed predictable: you always know why you're seeing something, because it matches an interest you chose.
How Interest Matching Works
Scour compares each interest to every article using two complementary signals: semantic matching (does the article mean something close to the interest?) and lexical matching (does the article actually say the things this interest is about?). Both feed into a single score per article.
Semantic Matching
When you add an interest like "distributed systems" or "fermentation," Scour converts that phrase into a semantic embedding (a vector that represents its meaning). Every article in Scour's database also has an embedding generated from its content.
Embeddings are produced by a model trained on a large amount of text; phrases with related meanings end up with similar vectors even when they share no actual words:
- An interest in "machine learning" finds articles about "neural networks" and "deep learning" even if they don't contain the literal phrase
- A specific interest like "PyTorch distributed training" finds relevant content even when phrased differently
Scour uses binary quantized embeddings with Hamming distance for fast comparison, which allows real-time ranking across hundreds of thousands of articles. For the technical details (why binary quantization works surprisingly well and how Scour indexes embeddings), see Binary Vector Embeddings Are So Cool.
Lexical Matching
On the lexical side, Scour works in two steps. First it confirms an article actually uses your interest's vocabulary in the right sense, ruling out the wrong meaning of an ambiguous word. Then it weighs how much the article is genuinely about the topic, looking across its title, summary, and body. This is what makes "Rust" the programming language match programming articles, not articles about the Rust Belt or metal corrosion.
The semantic and lexical scores combine into a single number per article. Each article is scored by its best matching interest, so a perfect match for one interest beats a mediocre match for several. How much the semantic vs lexical side weighs is set by the interest's specificity tier (Broad leans semantic; Specific leans lexical; Normal is balanced). See Interests for how to tune that.
Timeframe & Recency
The timeframe selector affects how recency factors into ranking:
- Fresh — Prioritizes recent content while ensuring your feed spans multiple time periods. Ranking is still based on relevance to your interests, but selection is balanced across recency buckets so you see a spread of new and recent posts. This is the default.
- Hour, Day, Week, Month — Show content from that time period ranked purely by relevance.
Rankings are computed in real-time on each page load, not precomputed. This means changes to your interests or filter settings take effect instantly.
Quality Filtering
Before ranking, Scour filters out content from low-quality sources. A domain blocklist of 2,399,482 domains removes known spam, content farms, and SEO-heavy sites.
Additionally, articles with listicle-style titles ("5 Ways to...", "Top 10...") and titles that lead with attention-grabbing emojis are filtered out before ranking. Those articles are tempting to click on, but often contain particularly unsatisfying content.
For more on filtering options you control, see Content Filtering.
Source Discovery Within Your Interests
Discovery on Scour means finding new voices on topics you already care about, not being pushed toward new topics.
This is why source diversity is a core ranking factor. Relevance alone would produce a boring feed: if all your top-scoring articles came from the same few sources, you'd miss the breadth of perspectives Scour has access to. New and obscure sources aren't disadvantaged compared to established ones.
In practice, this means:
- You won't see five articles from the same source in a row
- If you have ten interests, your feed will reflect a mix, not only your most active topic
- When multiple outlets cover the same story, you see it once
Works for Niche Interests
Some recommendation systems only work well when you have similar users to learn from. Scour doesn't require this. If you have a unique combination of interests (say, fermentation and formal verification), the algorithm works equally well for you as for someone with mainstream tastes.
Ranking is computed entirely from your explicit interests and the content itself. There's no cold-start problem and no degradation for niche users.
How Reactions Shape Your Feed
Reactions won't change what topics you see. Clicking one article won't flood your feed with a new topic. Your interests are still the only way to add new topics to your feed.
What reactions do is subtly adjust the mix within your existing interests:
- Source prominence: Likes and loves on a source's content make that source more likely to show up. Consistent “not for me” reactions or flags make a source less prominent.
- Topic balance: If you have interests spanning technology and cooking but you consistently engage with tech articles, your tech interests get a bit more space. This adjusts how much of each area you see, not which areas appear.
- Interest suggestions: Reactions feed into the interest recommendation system, which suggests new topics you might want to add. Suggestions are only suggestions.
These effects are designed to be gradual. A single reaction won't dramatically shift your feed. Adjustments are confidence-weighted (based on how much content you've seen from a source), capped so no source dominates, and decay over time. The goal is to show you more of what you enjoy without pigeonholing you.
Ranking is an ongoing project. You can follow planned improvements, like more tuning controls, on the feedback board.
Try It: Why Didn't I See This?
If an article you expected didn't show up in your feed, Scour can explain what happened: whether the source isn't in your feeds, the article was filtered, or it ranked below your current page. Paste the article URL here or on the "Why didn't I see this?" page.
Sign up to diagnose articles against your own interests and feeds.
Still have questions? Or feedback on these docs? Please let me know!