From 14-day close to 2-day close: ERP for Acme Manufacturing
Replaced 6 disconnected systems with a unified Odoo deployment, cutting month-end close from 14 days to 2.
- Client
- Acme Manufacturing
- Published
- March 2026
The setup
Acme Manufacturing had grown from $40M to $180M in revenue across four years and ten product lines. Their finance team was closing the books with the same stack they'd used at $40M: QuickBooks for the books, a homegrown PostgreSQL inventory table, three regional Excel rollups, an aging Sage for receivables, and Box folders full of supplier invoices.
The CFO told us closing the month took two weeks. We watched it happen and counted closer to seventeen days, including the reconciliation tail.
What we replaced
The play was a single Odoo deployment as system of record for finance, inventory, procurement, and CRM, with two thin custom modules for the workflows Odoo doesn't ship out of the box: multi-warehouse FX handling and consignment inventory.
Before
- 6 systems of record, 0 of truth
- 17-day average close
- 4 FTE on manual reconciliation
- Inventory accuracy: 71%
- No standard reporting layer
After
- Single Odoo instance + a thin analytics layer
- 2-day close, audit-ready
- 0.5 FTE on reconciliation
- Inventory accuracy: 98%
- Self-serve dashboards for ops + exec
How the cutover ran
We don't do big-bang go-lives for finance systems. The risk-reward is wrong. Acme's cutover ran in three slices over twelve weeks, each one validated end-to-end against a parallel run of the old system before we cut traffic:
- Procurement + inventory (weeks 1–4) — the riskiest module, deployed first so we'd have the longest tail to find edge cases.
- AR + AP (weeks 5–8) — once procurement was stable, the receivables and payables ledgers came over with a clean cutover date.
- GL + reporting (weeks 9–12) — last, with full historical replay from the old systems so opening balances were defensible to the auditors.
Orion.up didn't just deploy software — they rebuilt our financial operations from the procurement order to the close. Twelve weeks in, our auditors actually trusted our numbers.
The analytics layer
Odoo's built-in reporting handles operational dashboards. For executive reporting and forecasting, we put dbt models on top of Odoo's Postgres, materialized nightly, served to Metabase. The finance team owns the SQL — we trained them and they edit the models themselves now.
-- A representative dbt model: monthly close health
SELECT
date_trunc('month', date) AS month,
COUNT(*) FILTER (WHERE state = 'reconciled') AS reconciled,
COUNT(*) FILTER (WHERE state = 'pending') AS pending,
MAX(updated_at) - MIN(date) AS close_lag
FROM accounting_entries
GROUP BY 1
ORDER BY 1 DESC;
Where Acme is now
Nine months post-cutover, the finance team closes the books in two business days. The two FTEs previously stuck on reconciliation now run forecasting and supplier negotiation. The CFO renegotiated three of their largest supplier contracts using the new inventory and lead-time data.
The ROI calculation got back to "yes" in nine months — about half what we'd projected. The rest is compound.
Orion.up didn't just deploy software — they rebuilt our financial operations from the procurement order to the close. Twelve weeks in, our auditors actually trusted our numbers.