Trust & safety

Three guardrails. One rule: never break your floor.

The engine's job is to move prices, but it's specifically not allowed to move them anywhere you don't want them. Here's exactly what it won't do — and exactly what we do when the market tries to push past it.

What this page is

Below sits the engine's whole safety contract — the three guardrails, what they constrain, and what happens when the data underneath them is messy. No marketing, no asterisk — the same rules every merchant sees in their dashboard.

The three layers

What the engine is hard-wired not to do.

Floor, ceiling, and aggressiveness are independent controls. You can move any one of them on any SKU without affecting the others.

Floor

Never pushes below the line you set.

Every rule starts with a hard floor — a number below which the engine will not move, full stop. You can layer a per-SKU guardrail on top of that floor for clearance merchandise, MAP-locked lines, or anything sold against a contracted minimum. If a competitor drops below your floor, the move is skipped, not silently overridden — and the Monday report flags every skipped move so you can see exactly where the market tried to pull you under.

Concrete example

competitor price$36.99
below floor — skip
your floor$38.50
Floor $29 on SKU-1042 — competitor crashes to $0 → engine holds at $29, logs the skip, Monday report flags.
Ceiling

Stays inside the competitive band.

The engine keeps recommended prices within a band you configure above the market median — wide enough to chase a competitive move, narrow enough to defend margin. If a competitor blows past the upper edge, the engine does not ping-pong across the band on the next poll — it skips that move, re-checks at the next hourly read, and quietly notes the outlier in the report so you can decide whether the band is too tight.

Concrete example

competitor price$58.40
above band — hold
your ceiling$52.00
Band $41–$52 on SKU-3304 — competitor spikes to $58.40 → no move, no overreaction, report flags outlier.
Aggressiveness

Three speeds, same guardrails.

Aggressiveness controls how quickly the engine reacts inside the band — not whether the engine obeys the floor or the ceiling. Low waits for a second confirming signal; Balanced moves on the first qualifying trigger; Aggressive moves on the first signal but never beyond the guardrails. You can set aggressiveness per rule and per SKU — and shift a product up or down a tier without redeploying anything.

Concrete example

Lowconfirms twiceBalancedmoves on first readAggressivefirst signal, never past guardrails
Low → waits for confirm; Balanced → moves on first read; Aggressive → first signal, never past guardrails.

Anatomy of a single move

Floor, recommended price, ceiling — every move lives inside this band.

The engine picks a price inside the band you set. A request to go below the floor or above the ceiling is a skip, not an override. Aggressiveness controls how quickly the engine moves among the bands.

ceiling$52.00
$45.00
floor$38.00
LowBalancedAggressive

What happens when…

The messy cases — and how the engine refuses to guess.

Three scenarios where a less-careful engine would invent a price. Here's what Marginate actually does instead — and what shows up in your dashboard.

When the engine can't read a competitor

The poll returns a partial read — the competitor's product page is gone, geoblocked, or behind a login. The engine logs the miss, surfaces it in the Monday report, and does not act on partial data. Your existing price holds until the next clean read.

What the merchant sees

A skipped row with reason "partial read" — no silent price change.

When a competitor price looks stale

A listing hasn't moved in 30+ days while every other source disagrees. The engine treats stale reads as a single data point, not a baseline — it weighs them against fresh reads from the same week and only anchors to the median of the live cohort. The stale listing is downgraded in the signal pack and excluded from any future move until it updates.

What the merchant sees

A footnote on the move: "competitor X excluded as stale."

When demand spikes mid-session

Your conversion rate jumps on a single SKU — a viral post, a press mention, anything outside the model's training window. Aggressiveness does not widen the band and the ceiling still caps the move. The engine treats the spike as a single-session signal, holds the move, and waits for a second confirmation before committing a price that bet on the spike holding.

What the merchant sees

Hold-then-confirm — a deferred move shows up in the next hourly report.

Merchant objections

The five questions merchants ask before turning it on.

The questions we hear on every onboarding call — answered in plain language, with the 5am-Monday version of what actually happens to the catalog.

Can it price below my cost?

No. The floor is a hard line — the engine refuses to write any price below it, no matter what a competitor is doing. If a competitor undercuts your floor, the move is skipped, not overridden, and the Monday report flags every skip so you can see exactly where the market tried to pull you under.

Concrete example

Floor $29 on SKU-1042 — competitor drops to $0 → engine holds at $29, logs skip, Monday report flags.

What happens when a competitor breaks the market?

The engine ignores the spike. A move triggered by a single out-of-band read is refused, not chased — and the next hourly read re-evaluates with that read included or excluded as a single data point. You'll see the outlier flagged in the Monday report so you can decide whether the band is too tight.

Concrete example

Band $41–$52 on SKU-3304 — competitor spikes to $58.40 → engine skips the move, re-reads next hour, reports the outlier.

What if my floor is higher than the competitor?

The floor always wins. The engine will never chase a competitor below your floor — it writes a skip instead and keeps the catalog price where it is. That's the whole point of a floor: it's the line below which the engine is not allowed to move, full stop.

Concrete example

Floor $29 on SKU-1042 — competitor at $18 → engine skips and never lowers the catalog price; the floor wins.

Will the engine ever push above my own MAP ceiling?

No. The ceiling is a hard upper edge on the band — the engine will not write a price above it, even if a competitor is pricing higher. Any recommended move that would breach the ceiling is dropped, and the move shows up as a skipped row in the next report.

Concrete example

Ceiling $52 (MAP-driven) on SKU-3304 — engine recommended $54.25 → skip, no update, report flags.

Does aggressiveness change the floor or ceiling?

No. Aggressiveness controls how fast the engine moves inside the band — never whether the band is respected. Low waits for a second confirming signal, Balanced moves on the first qualifying read, and Aggressive moves on the first read, but all three still refuse to cross the floor or the ceiling.

Concrete example

Floor $29 / ceiling $52 — Aggressive still respects both; only the reaction speed changes.
Trust the guardrails

Watch the engine decide — without giving up the wheel.

Floor, ceiling, and aggressiveness ship on by default, on every rule. Connect a Shopify sandbox, set the band on one SKU, and let the Monday report show you what the engine would have done with last week's competitor moves.