Every vendor says “flexible”. This page shows what that word means in Linari, with the production configuration of three live warehouses — the philosophy behind the rules, the trade-off each one carries, and how a rule actually changes after go-live.
The clearest way to understand per-warehouse rules is to look at two real buildings that made opposite choices, and are both right.
High-value stock, expiry liability, zero tolerance for a wrong box. Its configuration reads like a checkpoint:
Stock turns in hours, not months. Scanning every crate would cost more than it saves — so its configuration gets out of the way:
Same codebase. Same release. Same database. Different building, different physics.
Eleven operating rules, three buildings, one system.
| Operating rule | Ambient DC | Fresh produce | Third site |
|---|---|---|---|
| Pick-plan cut-off time | 15:00 | not used | 12:45 |
| Delivery-plan validated on receipt | required | off | off |
| Expiry threshold before stock is held back | 30 days | not used | 12 days |
| Rotation strategy | expiry-first, including across alternative barcodes | site default | simpler rule |
| Picker must scan the location | mandatory | off | off |
| Picker must scan the item | mandatory | off | off |
| Short pick behaviour | allocate what is available, flag the rest | site default | hold the line |
| Over-receipt tolerance | none | allowed | none |
| Case / box quantity handling | off | off | on |
| Stock held by weight | yes | yes | no |
| Point at which available stock is deducted | earlier stage | later stage | later stage |
Read from the production database on 2026-08-17 — not from a brochure. In the demo, ask us to open two of these side by side and change one rule while you watch.
Rules are not free. Each row below is the honest version of the conversation we will have when we configure your building: the problem, the rule, and the trade-off you accept when you turn it on.
Newer stock ships while a pallet with an earlier expiry sits on the rack — and the write-off lands on you.
Expiry-first rotation with a hold-back threshold. One live site also rotates across alternative barcodes, so the oldest stock goes first even under a different barcode for the same product.
The picker walks to where the oldest stock is, not the nearest face. You trade steps for shelf life — usually a good trade for anything with a date on it.
Wrong item or wrong shelf: the box that reaches the customer is not the box on the order.
Mandatory location scan and mandatory item scan — each independently switchable per warehouse.
Every scan costs a second. A strict DC pays it on every pick; a fast fresh site may honestly be better off without it.
One missing product blocks a forty-line order, and the truck leaves late.
Partial allocation: allocate what is available, keep the order moving, and hold the shortfall as a visible exception. Paired with a replenishment report that names which locked location to empty and which orders it releases.
Someone must own the exception queue — flagged shortfalls that nobody works are just a prettier form of chaos.
The supplier delivers more than ordered, and the overage becomes untracked stock.
Over-receipt tolerance per warehouse: reject anything above the order — or accept a defined overage where that is normal business.
Zero tolerance means trucks occasionally wait while a discrepancy is resolved at the dock. Decide per building which costs you more.
Orders promised for today were never physically shippable today.
Pick-plan cut-offs per warehouse — 15:00 in one live site, 12:45 in another. An order that misses the cut-off is planned for the day it can genuinely leave.
Sales sees a later promise date. That is not the system being slow — that is the system refusing to lie.
A check before dispatch would catch errors — but checking everything everywhere would halve throughput.
Checking as a per-warehouse gate, with a separate QC stage and a configurable delay on pallet confirmation so QC has time to intervene. Live in two warehouses, off where it is not needed.
A hard gate stops orders — including, sometimes, orders a manager wanted to push through. That is what a gate is for.
Your process will change on a Monday. Here is what happens between “we need this changed” and the floor working differently — for every change, every time.
“From Monday, warehouse 2 must scan locations too.” It becomes a tracked ticket, not a phone call.
Configured on your own data, connected to your ERP — not on a slide.
Supervisors and operators run the changed flow on real handhelds and sign it off.
A written record of what changed and why — one you can read, and point to later.
The rule goes live in the building it belongs to. The other warehouses do not move.
Ask us in the demo to show the last ten changes we shipped for a live customer — the ticket, the test and the release note for each one.
The rules on this page are configuration on one shared codebase — the same release and the same database serve all three warehouses in the table. When a customer’s process is fundamentally different, the operational layer can be adapted while the same inventory model, audit trail and integration layer hold underneath.
The operating rules above are per warehouse. Several behaviours are naturally finer-grained — barcodes are per product and per supplier, rotation reads each product’s batch and expiry, and tolerances apply order by order. Where your operation needs a distinction the configuration cannot express, that becomes a tracked change, tested in your environment first.
Nobody flips production settings casually — including us. A change follows the lifecycle above: ticket, test environment, your sign-off, release note, production. That is slower than a checkbox and much faster than a quarter-long change request.
Nothing. That is the point of per-warehouse configuration: warehouse 1’s scan mandate does not leak into warehouse 2, and both keep running the same release.
Open two live warehouse configurations side by side in the demo, pick a rule, and watch the behaviour change. It is the fastest way to find out whether a vendor’s “flexible” means anything.