Feature · The action space · Issue No.02

Five decisions, one engine, zero collisions.

Every other personalisation stack is five plugins arguing. Osmo is one agent that decides the whole move.

No.
Decision
What the engine is choosing
Surface
Arms
A
Discounts
how much off · capped by your margin floor

Percent off or amount off, sized to the shopper, never below your margin floor. Never stacks with itself.

0% 5% 10% 15% 25%
Discount
at checkout
4
B
Upsell
which item · at what price

A matching item offered at checkout, priced to move slow stock without eating into the main item's margin.

scarf $22 beanie $14 gloves $19
Added to
the cart
3
C
Free gift
which gift · at what cart total

A small item added once the cart hits a threshold the engine learns for each kind of shopper — not one fixed line.

lint roller · $3 cotton tote · $5 sticker pack · $2
Added to
the cart
3
D
Free shipping
at what cart total

The engine picks the threshold per shopper, trading the cost of shipping against a bigger basket.

$50 $60 $75
Shipping
at checkout
3
E
Winback
when to send · with what offer

When to send the email and what offer to put in it, decided by the same model — no second tool, no second truth.

Day 14 · 5% off Day 30 · free gift Day 45 · 10% off
Email or SMS
via your tools
3
Total possible offers · before guardrails trim them
16
The collision problem

When five apps fire at once.

A classic failure: the discount app offers ten percent off, the upsell app nudges a $22 scarf, the gift app tips in a $12 pair of socks, the shipping app drops the threshold — and the checkout ends up below margin floor. None of them knew about the others. The next week, the merchant turns one off at random, revenue moves, and no one can explain it.

"Attribution is a research project. The only clean thing to do is pick one action and measure it."

Osmo internal memo · 2025‑11
Guardrails

Safety is a hard constraint, not a config screen.

The engine cannot break the rails, because the rails are inside its action space, not around it.

No. 01

Margin floor

Every offer is checked against a margin floor on each product. Below the floor, the offer is simply not on the table.

hard cap · pre‑score
No. 02

Brand guard

How deep the discount goes, how rich the gift is, how often you reach out — all capped per collection. Your luxury line never shows up at thirty percent off.

per collection · per channel
No. 03

Holdout

Five percent of traffic always sees no action. That is how we keep the counterfactual honest.

permanent · measurable
No. 04

Privacy

No third‑party data. No cross‑merchant training. Your model is yours.

per‑merchant weights · opt‑out, always
A decision in flight

Pruning happens first. Scoring happens second.

The left column is every offer the merchant turned on. The middle column is what survives the guardrails for this particular shopper. The right column is the offer Osmo picked, with the margin it expects to earn.

Every offer turned on
Show nothing
5% off
10% off
15% off
25% off
Free socks
Free luxury tote
Free ship over $50
Free ship over $60
Add a scarf
Add a beanie
Bundle: buy 3 get 1
After the guardrails
Show nothing
5% off
10% off
Free socks
Free ship over $60
Add a scarf
Add a beanie
12 offers → 7 · margin floor + brand rules
Picked
Add a scarf
+$8.40 expected margin
74% confidence
Next · The numbers

What the engine actually lifted.