Design and engineering for manufacturing operations
An operations cockpit, where today fourteen spreadsheets, a Telegram group, and a paper kanban hold the system together. The line becomes visible in real time, with OEE per station. Shortages travel up the bill of materials before the order stops at assembly, and andons land in the maintenance queue as tracked events.
The problems we hear most
Fourteen spreadsheets on SharePoint and a Telegram group for shift handover
The shortage caught at assembly on a Tuesday is the same one anyone in purchasing could have read off the bill of materials three days earlier. Nothing connects, and the operators carry the system in their heads.
An OEE figure that lives in a monthly PDF
By the time the line manager sees the 41 percent line, the shift that produced it is over. The number is correct, and useful only for the Monday meeting.
A maintenance log that lives in a paper notebook by the press
Andons raised verbally, breakdowns noted by hand, and the team that follows reads the notebook if they remember to look. The same breakdown next week looks like a coincidence to everyone except the operator on shift.
A planning sheet that nobody updates and nobody trusts
The Gantt is from last Friday, the actual production lives in someone's head, and customer service is calling purchasing for due dates.
Industria, the cockpit a six-line plant was waiting for
An operations cockpit built for a six-line plant in Brescia. One product replaces the spreadsheets, the Telegram handover group, and the paper kanban tacked to the wall by the press.
How we built Industria
The plant runs six lines and a warehouse out of Brescia. When we walked in, the digital tooling was a SharePoint of fourteen spreadsheets, a Telegram group for shift handover, and a paper kanban tacked to the wall by the press. The shortages caught at assembly stage every other week were the same shortages anyone in purchasing could have read off the bill of materials three days earlier. The brief opened with one line: rebuild the cockpit the plant had been imagining for years.
The scope grew as we went
The first week we shipped the live line view with OEE. By week two it had grown an orders pipeline with a kanban and a Gantt. By week four a multi-level bill of materials with shortage propagation. By month two, a warehouse section with a bin map, a quality module, a maintenance log, and a reports surface on top. Every request was absorbed and shipped, and nothing came back marked "out of scope".
Down to the cycle, station by station
The line detail page reads like the operator's own checklist. The OEE for the current shift, throughput against target in real time, the running cycle in seconds, uptime since shift start. Beneath it the station strip, where every cell on the line carries its own cycle time, its target, and the operator on it.
Pushing past the dashboard tier was deliberate. A line at 41 percent is one piece of information. A line at 41 percent with station S4 idle, no operator, and S2 pulling 26 seconds against a 25-second target is a different conversation. The "Raise Andon" button on the line header writes a real event into the maintenance queue, with the cell, the cycle anomaly, and the active order pre-filled. The operator never re-types what the system already knows.
The shortage shows up before the order
The bill of materials is multi-level. Every product carries its own tree of sub-assemblies, parts, and raw materials, with revision tracking and supplier lead times at every node. Shortage flags don't stay on the part where the gap shows up. They walk up the tree to the assembly that needs them, and into the orders pipeline that depends on the assembly.
A coil running short upstream now reaches the production planner before the order on the floor reads zero. The week the plant caught five shortages at assembly stage on the old system was the week we wrote the propagation. The same week, two of those shortages would already have been visible on the live bill of materials, with three days of lead in front of them.
Mobile for the floor, desktop for planning
The mobile floor app puts the actions an operator repeats a hundred times a day within two taps of the home tab: line health, the running cycle, logging a quality issue, raising an andon. The desktop carries the planning side, where the production planner and the plant manager spend their day. Neither is a thinned version of the other. The same component library renders both, and the light and dark themes were designed together from the start, so the line lead on the night shift doesn't squint at a white screen to read the plan.
Why this matters for a manufacturer
An operations cockpit isn't a business intelligence dashboard with prettier colours. It's the andon the operator raises when station three falls behind, the work order the planner moves from one line to another at 9.40am because the order book changed, the bill of materials the buyer reads on a Tuesday so the shortage doesn't catch assembly on Friday, and the report the plant manager reads on Monday so the conversation with the customer is informed before the call. Industria does all of that from one product, with one team working in the same codebase.
The same product is what the second plant inherits when the company moves to another site. The component library, the bill-of-materials logic, the andon flow, the report templates don't get rebuilt, they get configured. That's the part that compounds over time, and the part the spreadsheet stack never gave anyone.
What we deliver for this vertical
Live line view with OEE per station
Availability, performance, and quality in real time, down to the single cycle. Anomalies surface while the shift is still running, not at the end of the day on the post-shift report.
Multi-level bill of materials with shortage propagation
Every sub-assembly, part, and raw material lives on a tree. When a coil runs short upstream, the flag walks up the tree to the orders depending on that sub-assembly, and reaches the planner before the line reads zero.
Orders pipeline in kanban and Gantt
One dataset feeds two views. Drag a card and the Gantt updates, move a date and the kanban moves with it. Planning stops living in a PDF from last Friday.
Andon from the floor to maintenance in one tap
The operator presses, and the maintenance queue receives a tracked event with the cell, the cycle anomaly, and the active order pre-filled. The breakdown stops living in someone's voice, and every fix enters the asset history.
Mobile floor app for the people who run the machines
Line health, the running cycle, logging a quality issue, raising an andon. All reachable in two taps from the home tab. The line lead on the night shift doesn't wait to walk back to the office to record what happened.
Integrations with the ERP and the floor controllers
Work orders originate in the ERP and arrive in the cockpit; production reports back to the ERP at end of shift. On the floor side, cycle data comes up from the industrial controllers, and order-start commands go back down. We have worked with SAP, Dynamics, and Sage X3 on the ERP side, and with controllers from the main vendors on the plant side.
A stack that holds for the floor, not just the office
Every layer here pays for itself twice. Once when you bring the first plant online. Once when you roll out to the second site, or when you survive an audit on the first. We pick the stack that holds in that second moment.
The office side lives in one Next.js project. The planning, the bill of materials, the reports, the scheduling: the pages the production planner and the plant manager spend their day in. Responses are served from the edge nodes closest to the office, and the same routes render to mobile for the line lead who wants to check the plan between rounds.
Each plant's data stays separated inside the database, and the separation is enforced on the row, not in application code. The reason is simple. The second plant doesn't want to share data with the first by accident, and that's also the first question the auditor asks. On work orders the system runs on events: every change is replayable, every trace from raw material to shipped unit is reconstructable by query rather than by spreadsheet forensic.
The line updates in real time without a polling cadence that drowns the plant gateway. Cycles, andons, station status, line health all arrive on a channel that the operator's mobile app and the planner's dashboard read the same way. Operator and planner see the same line in the same second.
To talk to the industrial controllers, a small gateway sits on a plant server. Where a standard protocol exists (OPC-UA), we lean on it. Where it doesn't, we write a thin translation layer with a documented contract. The gateway is the only piece on customer hardware. Everything else lives in the cloud and updates without a plant visit.
Traceability documents (quality non-conformance photos, machine manuals, batch documentation, regulator reports) sit in an object storage encrypted at rest with plant-managed keys. Access is signed-URL only, and when the auditor asks for two years of non-conformance reports in one zip it doesn't turn into a surprise on next month's bill.
Every line of code is written in TypeScript, from the message definitions coming off the controllers down to the UI components. When the shift lead who built the rules for line four leaves the team, the cockpit doesn't lose what line four had learned to do well.
Questions founders ask
Do you replace our existing MES?
Usually we sit beside it. The MES stays the source of truth for work orders and recipes, and the cockpit is the product the floor and the office actually look at. If the MES is a five-year-old install nobody defends anymore, we've replaced one. Either path stays on the table.
How do you connect to industrial controllers?
Where the controller speaks a standard protocol, we lean on it. Where it doesn't, we write a small translation layer running on a plant server, with a documented and version-pinned contract. The gateway publishes events to the cockpit and accepts work-order commands back.
Does the cockpit work if the plant WiFi drops?
The plant gateway keeps writing to a local log during an outage, and replays when the link comes back. The mobile floor app caches the last state and queues actions. Nothing on the operator's side blocks on a server response.
How do you handle a multi-site rollout?
Each plant is separated by default inside the database, with one identity provider in front. The shared catalogue (parts, suppliers, recipes) lives in one schema, and the operational data (work orders, cycles, andons) per site. The second plant gets the cockpit the first one has, not a fork.
Does this integrate with our ERP?
Yes. Work orders originate in the ERP and arrive in the cockpit; production reports back to the ERP via a scheduled job or a webhook, depending on what the ERP exposes. We've already done it with SAP, Dynamics, and Sage X3.
Tell us about your plant
A scoping call, a concrete number in the first reply, no pitch deck of look-alike case studies.