Skip to main content
Bonsai Software
All field notes
Field Note26 August 20266 min read

Custom production software data model: when the system blocks your growth

The data model of custom production software is rarely the first topic of conversation, but it is almost always the real cause when a system grinds to a halt. The software itself still functions, but underneath it sits a structure designed for a simpler world: fewer variants, fewer layers in an order, fewer exceptions. Once the operation grows, everyone notices except the system.

By Yeslin Beljaars

How do you recognize that the data model is the problem?

The signals are recognizable once you know what to look for. Orders are duplicated because the system has no concept of suborders, so someone creates two separate orders and tracks the connection in their head. Spreadsheets appear alongside the system: one for the current status of an order, one for the deviations that do not fit in a field, one for the exceptions the planner tracks manually. Reports no longer match the shop floor, because the reality of a production order now has three layers that the system treats as a single line. These are not user problems. They are design problems. The data model describes an order as a flat object: item number, quantity, delivery date. But a production order in practice has subassemblies, semi-finished goods, intermediate steps with their own lead times, dependencies per machine or shift, and revisions that change the schedule without the system recording them. If the model cannot handle that, the organization starts working around it.

Why is the data model in custom production software set up too narrowly?

The cause is almost always the same: the system was built around the production process as it existed at the time. At the start, an order was straightforward. Five years later, ten product lines have been added, the company supplies customers who demand specific configurations, and orders are sometimes changed mid-process. But the data model has not kept pace with that development. Every time a new need arose, someone resolved it with an extra field, a workaround, or a link to a second table. This produces a model that functions technically but no longer makes conceptual sense. The order table now contains fields that are empty for eighty percent of orders, and exceptions are stored in free-text fields that cannot be searched. That is not a software defect. It is the result of incremental adjustments made without redesigning the underlying structure.

When does an AI layer help, and when does it not?

An honest answer: an AI layer helps when the problem lies in processing incoming information, such as documents, emails, or customer orders that you want to read in and match. An AI Worker can handle that flow and connect it to the existing system. But if the problem lies in what the system does with that order afterward, an AI layer solves nothing. If the data model cannot split an order into suborders, does not maintain a revision history, and has no awareness of dependencies between processing steps, you can build an AI layer around it and still face the same problems. The workarounds simply move from a spreadsheet to an API call that still gets no meaningful answer. An AI layer is valuable on top of a model that reflects reality. It is not a fix for a model that no longer does.

What principles help when redesigning the data model for production software?

The good news: you do not have to throw everything away. Redesigning a data model starts with mapping the real entities in your process. What is an order in the reality of your production environment? Is it a single object or a hierarchy? What statuses exist, and do they depend per phase on a different entity? From that description, you build a new model that reflects reality. Three principles that help. First: model the hierarchy as it exists in the operation, not as it was structured in the old system. If an order consists of suborders, make those explicit as a separate entity with a relationship. Second: store mutations as events, not just the end state. An order that changes must have a revision history that you can reconstruct later. Third: keep free-text fields out of the operational model. If something is relevant enough to track, it is relevant enough to have its own field or entity. What has historically been stored as free text indicates which entities are missing from the existing model. Those missing entities are precisely where the redesign must begin.

Is a completely new system needed, or can the existing one be extended?

That depends on how far the current model deviates from what is needed. If the core still holds and the extensions required are limited, you can refactor the existing system: add new tables, restructure relationships, adjust the application layer. That is a technical effort, but achievable without starting from scratch. If the foundation itself is wrong, meaning the central entities are incorrectly named or relationships are structurally absent, then refactoring is a patch that will hit the same wall in two years. In that case, a rebuild is the more honest choice. Not everything has to happen at once: you can start with the core of the data model, the most critical entities and their relationships, and migrate the application layer step by step. What you want to avoid is layering a new model on top of an old one. That leaves you with two models that contradict each other, and the workarounds return in the synchronization layer.

Seeing this in your own operations?

Book a call

Frequently asked questions

What is a data model in custom production software?

The data model is the underlying structure that determines what information the system tracks and how it relates. It describes entities such as orders, suborders, processing steps, and materials, along with the relationships between them. A data model that is too narrow cannot accommodate the reality of complex production orders, which causes people to work outside the system.

When should you redesign the data model of your production software?

When employees structurally maintain spreadsheets alongside the system, when orders are duplicated because the system has no concept of suborders, or when reports no longer match the shop floor. These are signals that the model no longer reflects reality and that extensions and workarounds are making the problem worse rather than smaller.

Can I extend the data model without rebuilding everything?

Sometimes. If the core of the current model is still sound and the missing entities are limited, refactoring is feasible. But if the central entities are structurally set up incorrectly, a rebuild is the more honest path. Layering a new model on top of an old one results in two models that contradict each other.

Does AI help to work around a poor data model?

No. AI Workers help with processing incoming information, such as documents or emails, and can connect that to the existing system. But if the data model does not track order hierarchy or revision history, an AI layer does not fix that. The workarounds simply move into the integration layer.