01Case study · Manufacturing

Our own project: software we built and operate ourselves.

Millwright

A system that shows the whole shop floor in one panel and assigns tasks across 8 machines on its own: CNC, assembly, a test station. The MCT-S algorithm is designed to compute each task's assignment in under 200 ms. See also the project page: the problem and the savings (ROI) explained without clicking through panels.

Open the live demoGet my free audit
Millwright panel: 8-machine schedule, task queue, and shop-floor OEE indicatorsLive demo
02Challenge

A shop floor with no shared picture of the situation

Orders and machine status live in spreadsheets, on whiteboards, and in foremen's heads. When a machine breaks down or a rush order lands, nobody sees right away where to move the work or what it will cost. Millwright shows the whole floor in one place and decides where every task goes before a person can work it out by hand.

03How it works

Setup awareness built in: the MCT-S algorithm

Task sorting

Priority (Critical → Rush → Normal) sets the order, constraint tightness bumps up tasks with fewer capable machines, and LPT (longest task first) arranges the rest for optimal bin-packing.

Machine scoring

Score = (completion time − preference bonus) × priority weight, where more urgent tasks get a lower weight. Lowest score wins; ties are broken in favor of no setup required.

Work stealing

Idle machines scan overloaded queues themselves, check task compatibility, and take it over when it pays off. Zero manual intervention.

Priority-aware insertion

A new task lands in a machine's queue at the position its priority actually earns, not always at the tail. A critical order can jump ahead of work that's already waiting instead of sitting behind it until that finishes.

An in-house heuristic called MCT-S (Minimum Completion Time with Setup Awareness): greedily pick the lowest-scoring machine, break ties with LPT, and bake the setup cost directly into the formula. A product name, not a formal optimality proof from a scheduling-theory textbook.

04Performance

Performance targets of the system

<200 ms

design target: time from a task entering the pool to its machine assignment.

<500 ms

design target: a full re-shuffle of the queue after a machine breakdown is reported.

500+/h

design target: maximum tasks assigned per hour across 8 machines, under optimal conditions.

By design, work stealing is meant to move about 15% of tasks dynamically between machines, and grouping similar operations is meant to cut setup time by roughly 40%: design targets, not a measured benchmark. The analytics panel does compute real OEE (Availability × Performance × Quality) from each machine's actual downtime and run time, not a canned formula for show.

Check these numbers yourself in the live demo
05Stack

Every choice has a reason

Frontend
Next.js 16 (React 19)
UI that reacts to state changes in real time
State
Zustand 5
Lightweight state management without reducer boilerplate
Styling
Tailwind CSS 4
Utility-first, consistent with the rest of the Tenzan Logic stack
Animation
Framer Motion
Transitions and micro-interactions for the Control Room Console theme
Charts
Recharts
Real-time hall-load and task-volume trends, without a custom SVG engine
Export
ExcelJS
Multi-sheet .xlsx reports generated straight in the browser
06Contact

Got a nagging problem? Describe it, I'll code the rest.

One sentence is enough to start. Tell me what's bothering you. Within 48 hours I come back with a clear answer: can it be done, and at what fixed price.

No obligation: describing your problem costs nothing
Free intro audit: you keep the report either way
Fixed price agreed upfront or we don't start: no surprises on the invoice
A limited number of projects at a time, each with full attention: reach out early if the deadline matters
We reply within 48 hours