How Ranking Works
By the end of this page, you'll understand the philosophy behind Scour's ranking and how it differs from algorithmic feeds on other platforms.
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
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.
Scour does use your reactions and reading history to subtly tune your feed: sources you engage with become slightly more prominent, and topic areas you consistently read get a bit more space. But these are gentle adjustments within your existing interests, not new topics being injected. Scour also uses reactions to suggest new interests you might want to add, but suggestions are just suggestions.
This keeps your feed predictable. You always know why you're seeing something because it matches an interest you chose. Reactions fine-tune the mix, not the ingredients.
How Interest Matching Works
When you add an interest like "distributed systems" or "fermentation", Scour converts that phrase into a semantic embedding. Every article in Scour's database also has an embedding generated from its content.
Ranking works by comparing these embeddings. Articles whose meaning is close to your interests score higher. This is semantic matching, not keyword search:
- An interest in "machine learning" will find articles about "neural networks" and "deep learning" even if they don't contain the exact phrase
- A specific interest like "PyTorch distributed training" will find relevant content even when phrased differently
- Each article is scored by its best matching interest. A perfect match for one interest beats a mediocre match for several.
What Are Embeddings?
An embedding is a vector (a list of numbers) that represents the meaning of text. Scour converts each interest and article into an embedding of several hundred values. Texts with similar meanings produce similar vectors.
The embedding model learns semantic relationships from training data. "Machine learning" and "neural networks" end up with similar vectors even though they share no words. "Baking bread" is far away in the embedding space.
To rank articles, Scour computes how similar each article's embedding is to your interests' embeddings. Scour uses binary quantized embeddings with Hamming distance for fast search, 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.
Scoring: Best Match Wins
Each article is scored by how closely it matches your single best-fitting interest. Quality of match matters more than quantity of matches.
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.
- 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 1375660 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. The unknown indie blog writing about Rust is the win, not an algorithm deciding you should suddenly care about cryptocurrency.
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.
We find articles that match your interests, filter out low-quality content, then build a diverse feed that balances your topics, mixes familiar and new sources, and avoids showing the same story from multiple outlets.
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 just 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 just as 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. One click on a cooking article won't flood your feed with cooking content. 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 dislikes 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 just 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.
What's on the Roadmap
Ranking is an ongoing project. A few things I'm working on:
- More tuning controls: Exposing more ranking parameters so you can adjust quality filtering, source preferences, and more. You can track this feature request on the feedback board.
If an article you expected didn't show up in your feed, try the "Why didn't I see this?" page. Paste the article URL and Scour will explain what happened: whether the source isn't in your feeds, the article was filtered, or it ranked below your current page.
If you have ideas for how Scour's ranking algorithm could work better for you, I'd love to hear them: feedback.scour.ing.
Still have questions? Or feedback on these docs? Please let me know!