
Blog · FreightPlan
One bad row should not stop the freight plan.
Freight planning teams often blame the spreadsheet. We think the spreadsheet is fine. The problem is that one broken row is allowed to stop everything else.

Freight planning teams often blame the spreadsheet. We think the spreadsheet is fine. The problem is that one broken row is allowed to stop everything else.
A logistics analyst we would recognise anywhere keeps the rate cards for a plant-to-depot network in several spreadsheets: one per carrier, one for fuel surcharges, another for tolls, plus a demand file from sales. Every month the plan is rebuilt from these. And most months, something breaks. A depot name is spelled differently in two files. A rate is typed as text. A new lane appears with no carrier. The model stops, the analyst spends days hunting, and the business ends up running on last month’s plan.
It is tempting to say the answer is to stop using spreadsheets. In practice, carriers send rate cards as spreadsheets, finance shares demand as spreadsheets, and people are fast with them. The format is not the issue. The issue is how a planning system treats a file with one bad row in it.
Most homemade models are all-or-nothing. Either every row is clean and the plan runs, or one row is wrong and nothing runs. That makes the whole plan hostage to the worst row in the worst file, which is why the plan is so often late.
Think of a bakery chain whose central kitchen sends bread and cakes to a dozen outlets each morning, using two or three local transporters. The person planning the vans keeps a sheet of outlet addresses, a sheet of transporter rates and a sheet of daily orders. If one new outlet is missing its rate, the sensible thing is to flag that outlet and plan the other eleven, not to stop planning altogether. Nobody would hold back the whole morning’s dispatch over one missing cell. Yet that is how many monthly freight models behave.
FreightPlan loads eight datasets as CSV: plants, depots, lanes, carriers, fleet, rate cards, demand and the trip log. Each is validated row by row. A bad row is rejected with the reason and the fix; the rest of the file loads. Before anything is committed, a staged upload shows row counts, missing columns and the effect of upserting versus replacing the existing data. Every upload is kept in the audit trail.
| All-or-nothing model | Row-by-row validation |
|---|---|
| One bad row stops the run | The bad row is rejected; the rest loads |
| The error is found by hunting | The reason and the fix are named |
| Replacing data is a leap of faith | The effect of upsert vs replace is shown first |
| Nobody knows which file changed | Every upload is in the audit trail |
| The plan is last month’s | The plan runs on this month’s data |
The philosophy carries through to the plan itself. In FreightPlan, unserved demand is a penalised slack, so you always get a plan back, plus the exact shortfall. If a plant cannot make enough or the fleet cannot cover every lane, the result does not simply fail. It tells you which depot is short and by how much, and the shortfall is reported, never hidden. That is the planning equivalent of loading the good rows and naming the bad ones.
None of this is glamorous, and that is the point. The optimiser and the variance analysis get the attention, but they are only useful if this month’s data reaches them. For how the budget is built once the data loads, see freight budget planning for plant-to-depot networks; for what happens at month-end, freight variance analysis. Everything else is on the FreightPlan guides page.
Often because the model is all-or-nothing: one bad row in a rate card or demand file stops the run, and the fix takes days. Row-by-row validation lets the good rows load while the bad ones are named.
Eight CSV datasets: plants, depots, lanes, carriers, fleet, rate cards, demand and the trip log, each validated row by row with uploads kept in an audit trail.
FreightPlan treats unserved demand as a penalised slack, so it still returns a plan and reports the exact shortfall by depot.
See it on your own data. FreightPlan — Budget freight, explain the gap. Book a 30-minute working session with an engineer.