Stock counts from three days to one afternoon
Replacing a nightly POS-to-accounting export with one Odoo system, then fixing the habits that made the numbers wrong in the first place.
- Client
- National retail chainNamed once permission is confirmed
- Year
- 2025
- Duration
- 16 weeks
- Stack
- OdooPostgreSQLMikroTikZebra scanners
3 days → 1 afternoon
Full stock count duration
Same day
Branch stock visible at head office
0
Closed trading days for counting
Per SKU
Margin visibility, previously per category only
The situation
Head office and the branches reported different stock figures every month. A nightly CSV export moved sales from the POS into the accounting package, and anything that failed was reconciled by hand. The annual stock count took three days of closed trading and the variances it produced were never investigated.
What we did
- 1Ran a two-week discovery across head office and four representative branches, including a full-day observation of an actual stock count
- 2Migrated sales, purchase, inventory and accounting onto a single Odoo instance, removing the nightly export entirely
- 3Introduced barcode discipline on every movement — including inter-branch transfers, samples and wastage, which had never been scanned
- 4Replaced the annual count with rolling cycle counts owned by each branch, with variance reports going to the branch that produced them
- 5Added a cellular backup link per branch after discovering two branches had lost trading days to line faults in the previous quarter
The software mattered less than being told our counting process was the actual problem. Nobody had said that before.
The finding that changed the project
The brief we were given was "replace the accounting system". The discovery found something else.
Sitting through a real stock count made it obvious that the numbers were not wrong because of the software. They were wrong because roughly a fifth of stock movement was never recorded at all: inter-branch transfers done on a phone call, samples handed out at the counter, damaged goods binned without a movement.
No system, however good, produces accurate stock from incomplete input. We said so in the discovery report, and it changed the shape of the engagement: less custom development, more operational change, and a much better outcome.
What we built
A single Odoo instance replaced both the POS integration layer and the accounting package. Sales, stock and payments now land in one place with no export step, which removed an entire category of monthly reconciliation work.
The custom development was smaller than expected: inter-branch transfer handling and a variance dashboard by branch. Everything else was standard Odoo configured properly.
The unglamorous part that produced the result
Barcode discipline and cycle counting. Every movement scanned, counts on a rolling schedule, variances investigated where they happened, within the week.
That is a process change, not a technology one. It is also why the stock figures are now trusted, and it would have worked less well without the system change underneath it.
What we would do differently
We under-estimated branch training. Four branches were straightforward; the two with high staff turnover needed a second round and a laminated one-page guide at each till. On the next rollout of this shape, that guide exists before go-live.
Services involved
More work
- Manufacturing
Rebuilding a plant network without stopping the line
Segmenting plant and office traffic, fixing warehouse Wi-Fi that failed once the racking was loaded, and documenting an estate nobody had a diagram for.
FMCG manufacturer · 2025Read - Logistics & Trade
Customs paperwork generated instead of retyped
One shipment record generating the commercial invoice, packing list and customs declaration — removing a senior administrator's entire morning per consignment.
Import and distribution company · 2024Read
Something like this, for your business?
We will say whether the same approach applies.
- A reply within one working dayFrom an engineer.
- We look before we quoteA call, and a site visit if needed.
- The recommendation is yoursYours to take elsewhere.
- Or call +20 109 777 8090


