ERP implementation for a mid-market manufacturer
A custom ERP that unified inventory, production scheduling, and finance into one source of truth — replacing a decade of spreadsheets and bolt-on tools.
- Client
- Mid-market manufacturer (NDA)
- Industry
- Manufacturing
- Services
- Custom software, Digital transformation
- Inventory
- Stock by location, barcode receive and pick
- Production
- Work orders tied to the same count
- Finance
- AP, AR, and GL posted from operations
A manufacturer was running on a decade of spreadsheets, a legacy accounting package, and a warehouse system that did not talk to either. Every number that mattered — what was in stock, what was on the line, what had shipped — lived in a different place, and reconciling them was someone's full-time job.
Off-the-shelf ERP was on the table, but the quotes came with large license fees, long rollouts, and a hard requirement to bend their proven processes to the software. They came to Clixo for a third option: a custom ERP built around how they actually work.
The problem
The real problem was not any single tool — it was that nothing reconciled. A sales order entered at the start of the week might not reach the floor until a planner re-keyed it later. Inventory counts drifted because receiving, production, and shipping each kept their own tallies. Finance closed the month from exports that were already stale.
Three constraints shaped the build:
- No clean cutover. The business could not stop shipping for a migration, so the new system had to run alongside the old one and take over module by module.
- Years of dirty data. Inconsistent SKUs, duplicate vendors, and free-text fields had to be migrated without importing the mess.
- Operators, not analysts. The people on the floor needed something faster than the spreadsheets they already trusted, or they simply would not use it.
What we built
We built a single ERP with one shared data model behind every screen, rolled out as connected modules:
- Inventory & warehouse — live stock by location, barcode receiving and picking, and automatic reorder points that replaced manual min/max tracking.
- Production scheduling — work orders tied directly to inventory, so consuming materials and reporting output updated stock and costing in the same transaction.
- Finance integration — AP, AR, and a general ledger that posted automatically from operational events instead of from month-end exports.
- Reporting — one dashboard for the views leadership already checked: open orders, shipment status, inventory, and margin by product line.
The architecture decision that made the rest simple: every operational event — a receipt, a production report, a shipment — writes once to a shared ledger, and every module reads from it. There is no syncing because there is nothing to sync.
How we approached it
We sequenced the rollout to retire risk early. Inventory went first, because it was the foundation everything else depended on and the place dirty data would hurt most. We ran it in parallel with the old counts, reconciled the differences, and only then made it the system of record.
Data migration got its own dedicated phase rather than being treated as a final step. We built a staging pipeline that normalized SKUs, de-duplicated vendors, and flagged ambiguous records for a human to resolve — so the new system started clean instead of inheriting years of drift.
Throughout, we shipped in small increments and trained as we went. By the time a module went live, the people using it had already seen it more than once.
What we will not claim
No order-to-ship cut, no inventory-accuracy percentage, no data-entry reduction. Those figures are not in this repo. The public claim is the system: one shared ledger behind inventory, production, and finance, rolled out without stopping the floor.
Considering a custom ERP or a digital transformation of your operations? Start a build and we will map the first practical phase.
Built with
- Next.js
- Node.js
- PostgreSQL
- TypeScript
- AWS