
Master scoring with linear boost

We’ve just introduced Linear Boost to the embed console. It lets you rank items with a simple, transparent recipe: pick the signals you trust, assign each a weight, and the model blends them into a single score.
Let’s unpack how it works and how to use it.
How it works (in one minute)
Linear Boost combines up to 13 signals across three buckets: interests, social proof/quality, and content type.
1. Interest signals
These estimate how well an item matches a user’s tastes.
v2 interest scores use semantic clustering to understand similarity beyond exact keywords.
interest_scores_recent_*focus on the last ~36 hours (short‑term behavior).interest_scores_all_*reflect longer‑term patterns.Legacy v1 signals are still available for backwards compatibility.
These scores are already normalized to the 0–1 range, where 0 means “no match” and 1 means “strong match.”
2. Social / quality signals
These capture how “good” or relevant an item is, beyond pure interest:
Author affinity focuses on how much a user tends to engage with this author
Topical overlap is based on how similar this item’s topic is to things the user likes
Trending/popular will capture how quickly the item is gaining attention
These signals are also normalized to 0–1 before weighting.
3. Content‑type flags
These are binary (0/1) toggles that represent the format of the content. For example:
cast_imagecast_videocast_length(e.g., long-form vs short)mini_app,zora_item, etc.
You can use these to gently nudge certain formats up or down in ranking.
Why “linear” boost?
Because interest and social features are already on a 0–1 scale, increasing a weight has a predictable, linear effect:
Double the weight → roughly double that feature’s influence on the final score.
Content‑type flags behave like bonuses: if the flag is
1, the weight is added; if it’s0, it has no effect.
No hidden interactions, no mystery coefficients just a weighted sum.
The maths behind Linear boost
At scoring time, we:
Compute a weighted sum of all selected features.
Normalize (“squash”) that sum back into the 0–1 range.
Core score
raw_score=i∑(feature(i)×weight(i))
All features are expected to be between 0 and 1, except binary flags (0 or 1).
Missing features default to 0, so incomplete data won’t blow up your ranking.
To make scores comparable across items, we then divide by the maximum possible raw score given your weights, and clamp to [0, 1]. That final_score is what’s used to rank items.
Configuring it in the ❜embed Console
Go to the embed console → Feed Builder.
At Step 2: Ranking, choose
linear_boost_v0.0.1.Add features one by one and set a weight from 1–100 for each.
Features you don’t care about can be:
Left at weight 0, or
Omitted entirely.
This is your custom scoring function: the more you care about a feature, the higher its weight.
A concrete example
Suppose a candidate item has:
interest_scores_all_v2 = 0.7interest_scores_recent_v2 = 0.5affinity_score = 0.4topic_scores = 0.6trending_score = 0.3cast_image = 1(it has an image)cast_length = 0(short post, no bonus for “long” content)
And you choose these weights:
interest_scores_all_v2→ 60interest_scores_recent_v2→ 40affinity_score→ 35topic_scores→ 20trending_score→ 15cast_image→ 5cast_length→ 0
Now we compute:
raw_score=0.7×60+0.5×40+0.4×35+0.6×20+0.3×15+1×5=42+20+14+12+4.5+5=97.5
The maximum possible raw score (if all 0–1 features were 1) with these weights is:
max_possible_raw_score=60+40+35+20+15+5=175
So:
final_score=97.5/175≈0.56
After clamping, 0.56 is the number used to rank this item relative to others.
Why it matters
Linear Boost puts more control directly in the hands of feed creators, so you can shape your users’ experience more precisely.
You can build your own scoring function that reflects the features you care about most.
You can experiment quickly:
Want more fresh content? Increase weights on
*_recent_*andtrending_score.Want loyal relationships to matter more? Increase
affinity_score.Want to lean into images or video? Boost the corresponding content‑type flags.
For advanced builders, this also opens the door to user-level customization:
Give power users sliders or toggles (“more longform”, “more new creators”, “more memes”) and map these directly to the Linear Boost weights.
As we add more candidate sources across onchain content, this lets you construct niche, high‑signal feeds tuned to your community.
What’s next
This Linear Boost scoring update is the foundation for more advanced features that give even more control and utility to feed builders. Coming next:
More post‑related features you can use to boost content, such as:
Media‑related features (e.g. video duration, orientation like short vertical vs. wide, longer videos).
Market‑related features for coins (e.g. volume, market cap, price changes) so hot items get noticed earlier.
AI labels like sentiment, categories, and topics so you can boost specific vibes (e.g. “more bullish posts”, “less spammy content”).
ML-based next‑best‑action features
Signals focused on reaction‑type prediction:
Likelihood a user will like a post
Likelihood they’ll share it
Likelihood they’ll comment
You’ll be able to boost these differently depending on what matters most to your feed.
“Auto‑ML mode”
In this mode, the weights you choose for Linear Boost act as an objective function for a reinforcement learning algorithm. The system will then:
Optimize for total reward defined by your weights, and
Continuously adjust underlying models to better match the behavior you care about.
Tell us what you think
We’d love feedback on how you’re using Linear Boost, what’s missing, and what you’d like to see next. Try in the console now.
👉 Reach out anytime at [email protected].