Normalise
Parse the request. Build slot and surface context.
On every page load: eleven signal families generate candidates, eligibility filters them, weighted scoring ranks them. One wins per slot — in under a hundred milliseconds.
Book a demo→Every Flockr request runs the same pipeline. Read the demand state of every product on the page, generate candidates from eleven signal families, filter, score, allocate. Render, return, emit analytics — all inside a p50 of around 62ms.
Parse the request. Build slot and surface context.
Fetch demand state from DynamoDB.
Create candidates from 11 signal families.
Eligibility: placement, journey, freshness.
Two passes. Best message, then best products.
Assign slots. Apply diversity. Rotate ranks.
Render messages. Return. Emit analytics.
Same pipeline. Every request.
Every signal family has a surface-fit score per surface — the first filter every candidate passes through. Scarcity makes sense in cart drawer; less so on a category browse. Intent is strong on listing pages; weak on PDP. Rank messages qualify by category position, not by score.
The engine knows where each shopper is in their journey — browsing, comparing, deciding. The same set of candidate messages gets scored differently depending on the stage. Cart pressure wins at decision time. Best-seller proof wins during early exploration.
Same engine. Different moments.
The first pass picks the best message for each product. The second picks which products earn slots across the page. Separating them keeps the page commercially balanced — a strong product with a moderate message can still earn a slot ahead of a weak product with a strong message.
Picks the best message for each individual product.
Picks which products earn slots on multi-slot surfaces.
Picking the best message for one product (pass 1) and picking which products earn slots across the page (pass 2) are different decisions. Separating them means a strong product with a moderate message can still earn a slot ahead of a weak product with a strong message — which keeps the page commercially balanced, not just message-led.
Three rules sit on top of raw scoring. Slot budgets per surface. Diversity gates to prevent one signal type monopolising a page. Rank-message rotation so shoppers see both a rank claim and a scored signal — never just one.
Each surface has a slot budget — PDP gets one primary slot, PLP gets one per tile. A diversity tolerance prevents a single signal family from monopolising the page when multiple candidates share that family.
Best Seller, Most Viewed, and Most Reviewed messages qualify by category position — not by score. When a product is eligible for both a rank message and a scored signal, they rotate — each shown for a few seconds — so shoppers see both proofs.
Every threshold, weight, and eligibility rule above is configurable per client. Sensitive on a small catalogue, stricter on a large one. Defaults are reasonable; tuning earns the last few percent.
Every weight, eligibility value, and journey-stage score on this page is a starting default. From go-live, Flockr observes which messages drive engagement on which surfaces and in which journey stages, and adjusts continuously. AI and ML close the gap between sensible defaults and the right values for your catalogue.
30-minute walkthrough. We'll trigger a live request on a catalogue like yours and walk through every step of the selection — eligibility, journey-stage scoring, allocation, rotation.
Book a demo→