Case study · Custom ERP · Production planning
Production planning that calculates reliable delivery dates.
A wood processor planned six processing lines using Excel, Python scripts and a Monday board — a very laborious, manual process at this order volume. Kitun built a custom planning module that mathematically optimises the weekly plan, calculates achievable dates and docks cleanly onto the existing Sage Classic Line — instead of rip-and-replace.
- Client
- SME in the timber industry
- Industry
- Wood processing
- Module
- Production & delivery date control
- Status
- In production since summer 2026
- Core
- Optimisation solver · capable-to-promise
- Bridge
- Sage Classic Line · 5-minute export
- Stack
- FastAPI · Vue 3 · PostgreSQL
- Hosting
- EU / on-premise · GDPR
- 6 lines
- Processing lines for a constantly changing order book
- Continuous profiles
- Sage items condensed into plannable production profiles
- −10% setup time
- The same changeovers, batched more intelligently
- ~€34,000/year
- Modelled benefit, calculated conservatively
01 · Starting point
Six lines, a constantly changing order book.
A wood processor plans six processing lines for a constantly changing order book — many parallel orders that reshuffle with every rush order and every machine fault. Until now planning worked like this: export order data from Sage Classic Line, prepare it with home-grown Python scripts, then sequence it by hand in Monday.com. The result was a static board that had to be updated manually with every change — which made it hard to derive reliable delivery dates from actual capacity.
The real lever is making capacity conflicts visible early: as soon as the first system run calculated the dates against real machine capacity, bottlenecks and critical orders became transparent — early enough to take countermeasures before a date turns into a problem. Purely manual planning cannot provide that foresight at this order volume.
02 · The foundation
Item master data becomes a production model.
Before anything can be optimised, the production process has to be modelled cleanly in the system — and that is where the real work lies. The many Sage item numbers are too many, and the wrong data, for planning. Kitun condenses them into far fewer production profiles: length-specific items become continuous items (the profile, independent of length), enriched with the production data relevant to planning — routing (which machines in which order), feed rate (processing speed per machine) and raw material.
This model does not emerge from master data alone. A modern, web-based UI blends the existing Sage data with the knowledge of the production managers — the work preparation that previously lived in people's heads and in spreadsheets. Only this foundation makes optimisation possible. All of it built consistently around the user, along the real working day.
03 · The solution
Tens of thousands of simulated plans — the best one wins.
At the core is a purpose-built optimisation algorithm. It builds a work sequence for every machine, runs it through the real shift calendar in a minute-accurate simulation — with sequence-dependent changeovers, breaks, machine eligibility and dependencies — and scores the plan that actually results. From tens of thousands of simulated plan variants (several search processes in parallel across all CPU cores) it picks the best: lowest setup time, best on-time delivery, a stable plan. The result is deterministic — the same inputs produce the same plan, traceable at any time.
Reliable promises (capable-to-promise)
For every incoming order the app calculates the achievable delivery date on the current plan — directly from actual capacity. Kept separate from the commercial promise, which never moves automatically.
Decision support for sales
If a requested date for a rush order is not feasible, the system shows not only that it cannot be done, but which specific other order would have to move to free up the slot — candidates for negotiation instead of arguments.
The system was set up by engineers with a clear architecture (FastAPI, Vue 3, PostgreSQL) and extended with AI assistance under fixed quality gates and tests. The speed comes from the agents, the maintainability from the discipline — not the other way around.
Instead of rip-and-replace
The bridge to Sage Classic Line.
The inside sales team keeps entering orders where they are used to — in Sage Classic Line. An automatic export (every 5 minutes) feeds the orders into the app. Sage remains the commercial book of record (order, order confirmation); the app is the planning and scheduling brain. The calculated date flows back to Sage. Commodity with an established process gets integrated, not rebuilt; the differentiator — optimised planning — gets custom-built.
In the long run Sage is to be replaced entirely — but step by step and during live operations. The result is a smooth transition without the weeks of training that classical ERP roll-outs demand: no big bang, no retraining shock, immediate benefit.
Results
What has measurably changed.
Re-planning at the push of a button
A complete re-plan is an automated run — triggered with one click, repeatable at any time. On a rush order, machine breakdown or material delay the whole plan is re-optimised instead of being shuffled by hand on a board for days.
Setup time batched ~10% better
The same changeovers, sequenced more intelligently. The most expensive manual step in wood processing becomes an optimisation target, not a product of chance.
Better on-time delivery at the bottleneck (~90%)
The sequence is optimised for weighted tardiness — promised dates carry the most weight.
Delivery dates that hold
Calculated on the current plan from actual capacity; promise and plan cleanly separated, unachievable dates visible before the promise is made — not at the customer.
What it is worth (modelled calculation)
Operational metrics, cautiously translated into money.
Assumptions deliberately conservative; contribution margin per bottleneck machine hour set at €100.
| Lever | Model | ~ Value / year |
|---|---|---|
| Planning & sales time | ~9 hrs/week of automated planning and date-finding × €45 | ~€18,000 |
| Setup time −10% (better batching) | bottleneck hours freed up × €100, calculated conservatively | ~€6,000 |
| On-time delivery & reliable promises | avoided express/special shipments, promises kept, customer relationships protected — soft | ~€10,000 |
| Total | ~€34,000 / year |
Set against this is a one-off project investment in the low five-figure range — no subscription, no per-user pricing. Payback: a few months. Kitun takes care of maintenance and further development.
The monetary values are modelled and chosen conservatively; the underlying operational metrics come from production runs and simulations.
Outlook
From module to full ERP.
The planning module was the beginning, not the goal. On the same codebase the system is currently growing into one coherent whole — purchasing, inventory and stocktaking, sales and incoming invoices, accounting including e-invoicing. Step by step this replaces the patchwork and turns the one system into the company's operating backbone.
A custom system, built exclusively for one company — data sovereignty included, hosted in the EU or on-premise.