Stock That Is Yours, Counted, and Cannot Ship
On hand and available are two different numbers, and most systems only hold one of them. Where goods have to sit out a mandatory hold before they can move, that gap is not a rounding error — in a season that carries most of your year, it is the whole operation.
Ask an inventory system what you have and it will tell you a number. Ask it what you can ship and, in most cases, it will tell you the same number. That works — genuinely works — for most businesses most of the time, because for most goods on most days those two questions have one answer. The conflation survives because it is usually harmless.
It stops being harmless the moment something has to wait before it can move. Not wait for transport, and not wait for a customer: wait because a rule says it may not leave yet.
Somalia's livestock export trade is the sharpest version of this we have come across. Animals destined for export are held at a quarantine station before they may be shipped — a mandatory holding period, in a physical facility, under a veterinary requirement set by the receiving country rather than by the exporter. The animals are yours. They are counted. They are on your floor, or something very like it. And they cannot go anywhere.
Why there is no number in this post for how long the hold runs
Because we have not read the protocol, and the answer depends on the importing country's veterinary requirement and on the facility rather than on anything we could publish. It is also the sort of detail that makes a post look researched while being the one sentence in it that is wrong. What matters for the software argument is not the duration — it is that the period exists, that it is mandatory, and that during it the stock is simultaneously yours and unshippable.
The scale is what turns a nuisance into a structural problem
Two figures. Roughly 70% of small-ruminant exports move in the Hajj window, and at peak there are on the order of a million head across three quarantine stations. Read those together and the shape of the year becomes clear: this is not a business with a busy quarter. It is a business whose entire result is decided inside one window, with an enormous quantity of stock sitting in a state that most systems do not have a word for.
A holding period you can absorb in an ordinary month is not something you can absorb there. In that window, the difference between "we have 200,000 head" and "we can load 140,000 head" is not a reporting nicety. It is whether the vessel sails full.
One number for on hand and available is a simplification that costs nothing eleven months of the year and everything in the twelfth.
What breaks, specifically
The failures are not dramatic. Each one is a small wrong answer that gets acted on.
| The question asked | The answer a single number gives | What it causes |
|---|---|---|
| What can we commit to this vessel? | Everything on hand | Over-commitment. A commitment made against stock still under hold, discovered at loading rather than at booking |
| What do we have? | A total that silently includes held stock | A valuation that is right and an availability that is wrong, from the same figure |
| Why did we short the shipment? | Nothing in the system explains it | The reason lives in somebody's head and the same mistake is available next season |
| When does this batch clear? | No field holds it | Somebody walks to the station and asks. In peak week, somebody does that all day |
| Who released this? | Unrecorded | When a release is questioned there is no answer, only recollection |
The fix is a state, not a report
The instinct is to solve this with a report — a list of what is held, maintained beside the system. That fails for the same reason every parallel spreadsheet fails: it is correct and disconnected, and the moment the two disagree the system wins by default because it is the one the documents come out of.
What actually resolves it is holding held as a state on the stock itself, in a location that is real. Then "what can we ship" is a query rather than a conversation, and the answer moves when the stock does.
A holding location that is a real location
A quarantine station, a bonded store, an inspection bay — a place with stock in it that belongs to you and is counted as yours, not a flag on a row. Transfers into and out of it are movements with dates, so the position is auditable rather than asserted.
A held state that suppresses availability
Stock that is on hand and not available, so a commitment cannot be made against it by accident. This is the whole mechanism: the two numbers stop being one number.
Release recorded against a person and a date
Who released it, when, and what moved as a result. Not for blame — because in peak week the question "is this batch clear" gets asked twenty times and every answer should come from the same place.
Capture at the station, without a signal
A holding facility is not where the network is. Movements recorded offline on mobile and synced on return, because a count that waits for connectivity is a count taken from memory.
Any veterinary or certification rule
Not ours. We do not know your protocol, we do not enforce a dwell, and we will not compute a release date. The hold is a state you set and clear; the rule behind it is yours and your inspector's.
The boundary in the last row is the important one
It would be easy to build something that counts days and turns a batch green, and it would be worse than useless — because the moment a system appears to know the rule, people stop checking with the person who actually does. A hold you set and clear deliberately is a hold somebody is responsible for. Be suspicious of any vendor offering to automate the release itself.
This is not really about animals
Strip the livestock out and the shape is common. Goods awaiting inspection. A batch held pending a test result. Stock in a bonded store before duty is paid. Equipment quarantined after a failed check. Produce held for certification. Every one of them is stock that is yours, counted, and not yet permitted to move — and every one of them is misread by a system with a single availability figure.
The general test is one question, and it takes a minute: ask your system what you can ship, then ask a supervisor, and see whether the two agree. If they do not, the gap is not a data problem. It is a missing state.
- Can stock be on hand and unavailable, as a state rather than a note in a description field?
- Does a holding area exist as a location, with movements in and out that have dates?
- Is a release attributable to a person, after the fact, without asking anybody?
- Can the position be captured where the goods physically are, including where there is no signal?
- When your busiest week arrives, does the availability figure need a human interpreter? If it does, that is the finding.
What is built here, what is not, and what we would decline is set out on the Somalia market page. The cost side of the same season — why two consignments of one item can land at two different costs — is one item, two landed costs.