Denovers learned reinforcement learning, the SCADA stack, and the way an industrial operator thinks faster than I expected. They turned a wireframe-grade MVP into a launch-ready platform, and we hit the date. The self-guided connection flow they shipped during the trial alone made it clear who I wanted to partner with, and the cohesive design system keeps every new module feeling like one product as we add to it.
We designed industrial AI Interface to optimize Machine Plants.
Imagine a plant that learns its own controls.
RL Core Technologies is reinventing industrial control with reinforcement learning. Their engine, RL Tune, talks to SCADA / DCS plant systems over OPC UA, learns process behavior from live sensor data, and continuously optimizes controls to hit plant-level KPIs, energy, chemicals usage, product quality, throughput. The engine was real. The interface was wireframes.
From wireframe-grade MVP to a launch-ready industrial AI platform.
RL Core Technologies is reinventing industrial control with reinforcement learning, making every plant self-optimizing. Their engine, RL Tune, connects to SCADA / DCS plant systems over OPC UA, learns process behavior from live sensor data, and continuously optimizes controls to hit plant-level KPIs. They came to us with the engine working and the interface unfinished: basic wireframes, MVP-grade flows, and a launch date that wasn’t moving. The brief had three asks: revamp the entire UX before launch, replace manual on-site setup with self-guided in-app flows, and ship a cohesive design system to carry the platform past launch into scale.
We worked hardest-flow-first. The single biggest pain on the MVP was the OPC UA connection from RL Tune into a plant’s SCADA / DCS, the workflow every customer hits on day one. We tackled that during the trial, before the engagement was even formalized, so the riskiest workflow had a working interface before anything else got designed around it. Then 2×-weekly working sessions with PM Basak Mutlum and the engineering team, building tokens, table primitives, modal shells, and status semantics alongside the production work. The dark-theme industrial-control language landed early; every chapter after assembled from the same kit. Configuring an Optimize or Stabilize agent went from side-panel forms requiring engineers on-site to a self-guided full-screen modal customers can stand up themselves. We hit the date.
What we walked into.
An MVP that ships engineers to plants to set up a connection isn’t broken, it’s ungrown. The engineering was real; the interface hadn’t caught up. The audit named four heaviest costs: a wireframe-grade MVP, agent setup that required on-site engineers, safety zones that were implied not visible, and no way to read the system at a glance.




Connection flow: RL Tune meets the plant.
Every RLCore deployment starts the same way. RL Tune has to talk to the plant’s control system over OPC UA, capture live sensor data, and start learning. The MVP required an engineer on-site to clear that handshake. We rebuilt it as a self-guided in-app flow that walks the customer from server URL through certificate exchange, namespace browse, and tag selection, and shipped it during the trial period so customers were standing up RL Tune on their own before the rest of the engagement opened.

TagDB: tags as semantics, not numbers.
The MVP treated tags as raw rows, name, value, units, and showed safety thresholds as a placeholder rainbow gradient. We rebuilt TagDB so each tag carries explicit zone bands (red / yellow / grey) tied to engineering limits, decoupled the schema from the RL engine itself, and made the data structure speak the safety language so the UI could. A reading at the edge of yellow stops being arithmetic; the zone is the status.


Agents: Optimize and Stabilize, self-guided.
Optimize agents push process performance toward a goal (cost, energy, throughput, quality); Stabilize agents keep operations within tolerance when conditions shift. The MVP buried both in side-panel forms that required specialist help. We rebuilt agent setup as a self-guided full-screen modal, same shape for both types (general setting → agent tags → guardrails → objective), with edits opening directly to the affected step.


Diagnostics + Dashboard: reading the system at a glance.
Two surfaces close the platform out, and both are about visibility. Diagnostics is the engineering view. CPU, cores, DB state, agent health, system warnings, brought onto a single page with a clear hierarchy of what matters when something is wrong. The Dashboard is the operator view: plant KPIs, recent agent activity, alerts, announcements. A platform that runs on autonomous AI has to be readable for anyone to trust it.


Wireframe MVP in. Launch-ready platform out.
RLCore launched on the date that didn’t move, with a self-guided UX, a cohesive design system shipped alongside, and an interface that finally speaks the language of industrial control. Connection flow during the trial; TagDB, agents, diagnostics, and dashboard through the engagement. The team kept their launch and a foundation that holds up as the platform scales.
Book a free sprint
