library · opinion

Your stock will never be accurate.

Not because you count badly. Because the thing you are counting is alive: it grows, grades, dies and transforms while you write the number down. The fix is a different idea of what "accurate" even means.

the problem

Counting things that won't hold still.

Inventory software was built to count objects that sit on a shelf and wait. A nursery is full of stock that refuses to wait, and that mismatch is why your numbers feel wrong by lunchtime.

the inherited model

Stock as a widget on a shelf.

Almost every inventory system you have ever used carries the same hidden assumption: a unit of stock is a static widget. It has a SKU, a quantity and a location. You count the box of 200 bolts, you write down 200, and the number stays true until someone sells one. The object does not change between counts. That model is so familiar it feels like a law of nature.

It isn't. It is just an assumption that happens to hold for bolts, batteries and books — things that are finished the day they arrive and only ever leave by being sold or scrapped. Count them and you have the truth, frozen, until the next transaction moves it.

Horticulture breaks that model on day one. A plant is not finished when it arrives; it has barely started. The 9 cm liner you booked in this morning is, biologically, a different product by autumn: bigger, a grade up, worth more, possibly split into three, possibly dead. The widget on the shelf grew legs and walked off to become something else. So the moment you write down a single frozen "accurate stock number," you have written down a fiction — the thing you counted won't hold still long enough for the number to stay true.

A liner today is a 2 L plant by autumn.

it grows

A liner today is a 2 L plant by autumn.

Growth is the most obvious way the number lies. A tray of 9 cm liners is not the same stock six months on. It is a bench of 2 L plants, a different grade at a different price. Nothing was bought. Nothing was sold. Yet the value of that stock changed while it simply stood there and grew.

A static count cannot see this. It records what the plant was on counting day and quietly goes stale. Real accuracy has to expect the plant to size up, grade up and revalue itself as part of normal life, rather than treat change as an error to be reconciled away.

One batch becomes many. Many become one.

it transforms

One batch becomes many. Many become one.

Then there is everything growers actually do to stock. You take cuttings from a mother and a hundred new plants appear that no one bought. You pot on, and a batch changes grade and pot size overnight. You split and divide one container into three. You merge two part-trays into a clean line, or grade a single batch into firsts, seconds and culls that now travel separately.

Each of these is a transformation rather than a transaction: stock turning into different stock. A widget model has no language for it, so it gets recorded as an ad-hoc write-off here and a manual adjustment there, and the trail of what became what is lost.

the reframe

Stop counting. Start tracking change.

If the stock will not hold still, stop demanding a still photograph of it. Model the motion instead, and accuracy stops being a number that decays and becomes one that keeps up.

The trap is in the word "accurate." We inherited it meaning "the count matches the shelf right now" — a snapshot. For living stock that definition is unwinnable: the snapshot is out of date before the ink dries, so you are forever wrong and forever reconciling.

So change the definition. Treat stock as living batches with a history and a future: batches that grow, split, merge, transform, lose units and re-grade, each change written down as an event, each batch tied to the production cycle that drives it and the mother plant it came from. Now a "loss" is not a mystery variance; it is a logged culling, and a surplus is a logged propagation event. The number moves because the plants moved, and the record moved with them.

That is the difference between a count that is wrong by lunchtime and a record that is right all afternoon. The system keeps up with biological reality because it was built to expect change.

atlas core

How Atlas Core handles living stock

Atlas Core is built around the idea that nursery stock is alive and always in motion. Instead of chasing a snapshot, it models the plants themselves:

  • Living batches — each batch carries its own grade, age, location and lineage, so every number maps to a real, identifiable population of plants.
  • Transformations are first-class — pot-on, split, divide, merge and grade are recorded operations that carry history forward, never destructive write-offs that erase what became what.
  • Growth and re-grading are expected — a batch can size up, change grade and revalue itself as part of normal life, with no manual reconciliation.
  • Losses are events — cullings, deaths and disease are logged where they happen, so shrinkage is explained at source.
  • Every batch is tied to its production cycle and mother plant — two-way traceability from propagation through potting to dispatch, as one continuous thread.

Read further

Bolt-on translation always breaks Field guide · 2026

Bolt-on translation always breaks

Plants cross borders long before software does. Systems born speaking one language crack at the seams - the label printed in the wrong tongue. Why bolt-on translation always shows, and building multilingual from day one is the fix.

7 min read · Jul 2026 Read →

Stock that is alive needs a system that expects change.

Stop reconciling snapshots that are stale by lunchtime. See how Atlas Core keeps the record moving at the pace of the plants.