Now Fermenting

TasteZero-shotDiscovery.

Search and recommendations that work on request one. The same model reads your text, looks at your images, and ranks the catalogue — in 60 ms, on the 86% of sessions with no history at all.

RUS_ID:SOLENYA|
Fig_1.0: the_source
Solenya — the pickle jar
Jaguar Enabled
v.3.1.4

Built on the shoulders of giants

MilvusPostgreSQLGraphQLNixFastAPIGCPHelmMCPPrefectTemporalKafkaBunClickHouseNext.jsPyTorchMilvusPostgreSQLGraphQLNixFastAPIGCPHelmMCPPrefectTemporalKafkaBunClickHouseNext.jsPyTorch

One ranker, every surface

Recommendations - but everywhere.

The carousel, the listing, the search bar, the agent. One model ranks all of it - no second vendor, no second pipeline.

Fig 4.0: recommendations_everywhereSame ranker
The status quo
Recommended for you · Top 3
#1
Brine Trail boot£128
#2
Salt Pier hiker£139
#3
Pickle Ridge boot£146

k = 3 · the rest of the catalogue is invisible here

Solenya
Listing · /boots
AllBootsUnder £150WaterproofIn stock
Brine Trail boot£128
Salt Pier hiker£139
Pickle Ridge boot£146
Dill Marsh chukka£124
Caraway Crag£152
Fennel Field£118
Mustard Mile£134
Tarragon Trek£141
Saffron Slope£129
Coriander Cove£148
Juniper Junction£137
Rosemary Reef£155
Scroll ↓

Same ranker, same model, every surface — no second vendor for "recommendations," no frozen list waiting for next week's re-train.

Legacy Problem

0%

of session are anonymous

>0%

of products are hidden by legacy algorithms

<0%

of users have the data for personalisation using existing solutions

0 wks+

needed to collect data and continually retrain batch CF models

Zero-shot · per request · per user

Every click reshapes the next page. Yours, not the cohort's.

Global sorts hand every shopper the same five top picks - and they're the first to sell out. Solenya re-ranks per request, so what surfaces first is what's in *your* size, in stock, right now.

Fig 5.0: live_rerank · per_requestSame catalogue
Everyone else
Global sort · /boots
#1
Brine Trail bootOut of stock
#2
Salt Pier hikerOut of stock
#3
Pickle Ridge boot1 left
#4
Dill Marsh chukka£124
#5
Caraway Crag£152
#6
Fennel Field£118

top picks sell out first · same list for everyone

Solenya
Re-rank · /boots · 38 ms
Brine Trail boot£128
Salt Pier hiker£139
Pickle Ridge boot£146
Dill Marsh chukka£124
Caraway Crag£152
Fennel Field£118

re-rank #N · per request · per anonymous session

Same catalogue, same second - different ranking. No segment, no cookie, no nightly retrain. One click reshapes the next page; the anonymous visitor next to you gets a different one.

The day-zero gap

Legacy never catches up. Every new SKU resets the clock.

New stock, new brands, new categories - each one knocks a click-history ranker back down. We rank from request one and don’t flinch when the catalogue moves.

Fig 2.0: cold_start_curve
SolenyaLegacy
Cold-start curvew0w6w12w18w24w30w360.00.51.0WEEKS →NDCG@10day-zero gap≈ 86% of sessions land herelegacy: 12-week train

Click-history rankers warm up over weeks — then every new SKU, brand, or category resets the clock. Solenya starts at par on request one and stays there.

The Solenya Difference

0%

Revenue Uplift

>0M

Unique Shopper Journeys

0 rps

Sustained Throughput

More than a wrapper

Multimodal discovery, designed for multimodal agents.

Seamless hand-off. Agents - but personalised. Eval-led at every step.

Fig 3.0: agent_calls_solenyaMCP
user
find me a warm waterproof boot under £150
agent · tool_call
solenya.search()POST /mcp
{
  "query": "warm waterproof boot under £150",
  "modality": [
    "text",
    "image"
  ],
  "top_k": 4
}
response · 4 results · 58 ms
Brine Trail boot£128
Salt Pier hiker£139
Pickle Ridge boot£146
Dill Marsh chukka£124

Why we can do this

From separate jars to one kitchen.

Discovery has been stuck in separate jars - text in one vendor, images in another, behaviour in a third, products in a silo. We unified them to unlock a new generation of e-commerce experiences.

Text
Image
Behaviour
Products
One model1024-d

Same space. One ranker. Sub-60 ms P50.

Fig 1.0: unified_embedding_space

What that unlocks

Search by photo. Rank by intent. Recommend by both.

More than a thousand words. One model that reads, sees, and remembers the catalogue means the same query works in every modality - tap a pill to see it on a real listing.

Image
Product
Text
User
Solenya

Composed Image

Pair a reference image with a text edit — “like this, but in red” — and retrieve real SKUs from inventory.

Fig 9.5: modality_playgroundReverse Image
Listing · /boots · 60 ms
textimageproductuser
Brine Trail boot£128
Salt Pier hiker£139
Pickle Ridge boot£146
Dill Marsh chukka£124
Caraway Crag£152
Fennel Field£118

Show me what looks like this.

Pretraining, post-training, exploration.

0M+

products in the midtraining corpus

0

shoppers in the dress rehearsal

0%

catalogue reachable on day one

Mise en place · before your data arrives

Your catalogue is a teaspoon. Pretraining is the supermarket.

Internal datasets are too small. A single public benchmark isn’t much bigger. Solenya understands every new brand, trend and category. From day zero.

Fig 3.0: pretraining_mix
YoursPublicSolenya
Your catalogueone merchant
RetailRocketbenchmark
YOOCHOOSEbenchmark
Taobao User Behaviorbenchmark
Amazon Reviews 2023benchmark
Solenya midtraining mixwhat you walk in with

Each public benchmark is one ingredient. Your catalogue is another. We pretrain on the whole pantry - your shoppers’ clicks just pick the recipe.

Post-training · the staff tasting

Discovery in the Post-training era.

Pretraining stocks the pantry. Post-training plates it. Before service the kitchen tastes its own work — seasoning it to perfection. Your shoppers are diners, not test subjects.

Fig 3.1: post_training_deltas
Printed recipeRehearsed edits
Legacy · pretrained, then frozenone global recipe · every storefront
no rehearsal
  1. 01
    rank candidates by intent
  2. 02
    weight by behavioural signal
  3. 03
    diversify the top-k
  4. 04
    serve top-k
Solenya · rehearsed per storefrontsynthetic palates · before doors open
staff tasting · synthetic
  1. 01
    rank candidates by intentsize > brand at browse
  2. 02
    weight by behavioural signaldemote 'sale' for premium
  3. 03
    diversify the top-k
  4. 04
    serve top-k+ outfit pairing on PDP

same printed recipe, every kitchen — only one of them tastes its work before service

Service · freshness, not yesterday’s hits

Recommendations that stay fresh. Catalogues that don’t feel smaller over time.

Freshness isn’t a campaign — it’s the willingness to keep exploring. Rankers that only double down on yesterday’s hits look like they’re optimising while the catalogue gets quietly smaller. Ours keeps reaching past the obvious, so the long tail, the re-emerging picks and the brand-new arrivals stay in play — and the storefront keeps feeling whole.

Fig 4.0: rut_vs_freshness
regimelegacy_loop
metric ↑ · catalogue ↓
Bestseller #1served yesterday
Bestseller #1served today
Bestseller #1served tomorrow
Bestseller #1served next week
reward_estimatelooks great, isn’t
metric climbs — the catalogue gets quietly smaller
regimesolenya_fresh
tracks shifting taste
StaleFresh
sku · 01
sku · 02
sku · 03
sku · 04
sku · 05
sku · 06
what people want now

tastes shift — the catalogue stays whole

Cause big uplift, needs big scale

0M

Peak Day Requests

0ms

P50 Response Time

0%

Uptime

Every channel · one model

Same model, every level. Not just the search bar.

Inside Listings View, traffic splits across Browse, Search, Top-k Rec and Chat. Doubling the chat bubble shifts purchase by a chat bubble's worth. Solenya lifts the whole mix. Drag the sliders - or watch the demo run itself.

Fig 3.1: funnel_lift_simulatorMix-weighted conversion

Shopper funnel · Listings View runs on four channels

100.00%Sessions80.00%Listings View44.00%Product Page View15.00%Add-to-Cart2.10%PurchaseBrowse82%Search 13%Top-k Rec 3%Chat 2%
Session → purchase2.10%Baseline 2.10%
Δ vs baseline+0.00%+0.0% relative
Solenya master · lift every channel+0%
  • Browse(82% of listings)+0%
  • Search(13% of listings)+0%
  • Top-k Rec(3% of listings)+0%
  • Chat(2% of listings)+0%

Drag a slider, or watch the demo.

Lifting one bubble lifts the dial by a bubble's worth. Solenya lifts every bubble — same model, every level.

Source: anonymised production telemetry; Solenya ranks every channel with the same zero-shot model.

Every request · ranked fresh

Your CDN hides 86% of your traffic. Personalising wakes it up.

Storefront origins only ever see the unique 14% - the rest gets cached at the edge. Personalise everything and that 86% has to be ranked on every hit. Roughly 7× the load your stack handles today. We absorbed the 7× - delivering a new, personalized experience to users in real-time.

Fig 3.1: traffic_mosaicTop strip = what your origin sees · The rest = what your CDN hides
≈ 7.2×What you’d take on to rank it yourselfUnique · 14%Search · 13%Unique · 14%Cacheable · 86%Browse87% of listings trafficSearch13% oflistings traffic
  • Solenya — ranks fresh, every request
  • Legacy — cacheable or search-only

Same model, every request. The cache no longer hides the hard part.

Source: Solenya production telemetry. Multiplier = 1 / origin-visible share; assumes uniform per-request ranking cost.

Ship Discovery That Earns Its Numbers

Personalized results from day one: the moment a new user arrives, the moment a new product arrives, the moment a new category is launched, the moment you integrate.

Read the Research

Plugs into your stack

ShopifyGraphQLMCPOAuthOIDCShopifyGraphQLMCPOAuthOIDC

Blogs

Open-notebook research. Methods, confidence intervals, and the experiments that didn't work.