Volume is how Overtone decides what's worth your attention. Every story cluster gets a score. Higher score, higher rank. Here's the math.
The formula
Every story cluster in your Volume view is scored like this:
base_score = distinct_feeds_linking × type_weight
semantic_bonus = similar_entries_without_shared_URL × 0.3
member_signal = community_upvotes × 0.2
recency_decay = exp(-hours_since_newest / 24)
volume = (base_score + semantic_bonus + member_signal) × recency_decay
Breaking it down
Base score
How many distinct feeds link to or cover the same story? Signal feeds contribute a weight of 1.0, Noise feeds contribute 0.5. A story covered by 3 Signal feeds and 10 Noise feeds gets a base score of 3 + 5 = 8.
Semantic bonus
Using vector embeddings, we find articles that are semantically similar (cosine similarity > 0.85) even when they don't share URLs. Each additional semantically linked entry adds 0.3 to the score. This catches stories that URL matching misses entirely.
Recency decay
Volume is about what's happening now. We apply exponential decay based on how old the newest entry in a cluster is. A story from an hour ago scores almost full marks. One from yesterday is significantly dampened.
Clustering
Stories are grouped into clusters two ways:
- Exact URL match: normalized URLs compared directly
- Semantic similarity: article embeddings compared in our vector database, entries with cosine similarity above 0.85 merged into the same cluster
The result is a ranked list of topics your sources are covering, ordered by actual coverage density rather than publication time.