SL
SemiLayer · Live Demo
ask anything. no backend.

Three feeds. One lens. No backend.

Each feed is a config block — similarity, recency,engagement, diversity — composed declaratively and served by one endpoint. Click a card to see its “more like this” relatives; like items to shift the shape of your feed.

What's happening?

Your likes don't pin to the top

Liking doesn't move liked items up — it shifts the direction the feed leans. Each like adds to context.liked_names; on the next page-load the server builds a context vector from that list and ranks candidates by cosine similarity to that vector. Items semantically close to your taste float up. You haven't liked anything yet, so context is empty — everything scores equally on similarity and the rank falls through to pure recency (weight 0.1).

Why this page's scores look so close

The demo dataset has no engagement lens attached, and similarity is 0 without context. That leaves only recency (weight 0.1), and every product in the seed shares anupdated_at timestamp — so recency gives the same contribution to every row. Like a few items and watch the similarity axis wake up — the scores will fan out.

Try this

Hop to Latest, like a few obviously related products (e.g. two different olive oils). Come back to Discover. The top rows should now lean toward olive oils — the exact ones you liked might or might not be at #1, because similarity ranks neighbors in embedding space, not the originals.