Case study - Niagara - 2023

Making factory-machine data usable

Designing a standard data-model layer for an industrial platform, and what it taught me about designing for a role that doesn't exist yet.

Role

Sole Product Designer - Niagara (industrial data platform, acquired by Vitesse Automation)

Scope

Discovery, user research, wireframes, hi-fi design, interactive prototype, user testing. Worked directly with the CEO on strategy and with the engineers on feasibility.

In short: Niagara pulled live data off factory machines, but the raw data was unusable for the people who needed it most. We designed a reusable model layer to standardize it. The feature tested well, almost too well, and that reaction turned out to be the most useful result: I had designed for a user role that didn't fully exist yet. It never shipped: it was part of what Vitesse Automation bought. This use case is about making technical complexity legible, and about knowing when the honest next step is to ship and learn rather than polish.

Context

Niagara is a data platform for industrial hardware. It gives a no-code connection to legacy machines, and a place to transform that data and send it to the operational software that needs it. The hard part is the reality of a factory: the machines are often old, and all different from one another.

That variety created the central tension of this project. The feature I worked on lived in a gap between three roles: the IT managers who own the data infrastructure, the business users who actually analyze the data, and the automation engineers who program the machines. Depending on the company, I could be designing for any one of the three.

A programmable logic controller wired into a legacy factory machine. A packaging machine on the factory floor, one of the heterogeneous data sources.
The factory floor reality: old, heterogeneous machines all sending data differently.
Diagram: machines feed databases feed apps, with IT, business owner and automation engineer around them.
The three roles around the feature: IT managers, business users, automation engineers.

The problem

The data is siloed. Every use case rebuilds its own funnel, from the machine to the IT databases to the operational software. Niagara makes each of those funnels easier to build, but it doesn't stop them from multiplying: the same data gets pulled several times, and nothing is standardized along the way. IT ends up doing the same normalization work over and over, and ops end up with data they can't fully trust.

Inside Niagara, when a new data stream arrived, it technically worked, but:

The question I framed: how do we get these different users to converge, and make factory data genuinely usable?

The incoming data stream shown with the machine's raw variable names.
What users saw when a new data stream arrived: raw variable names, straight from the machine.

Research

I ran two tracks in parallel.

User feedback, over 50+ interviews, confirmed the pain and showed it had two levels:

What they couldn't tell me was who owned the problem.

Secondary research shaped the constraints:

The bet

A feature to create standard data models and apply them to data sources, to standardize them.

We chose a reusable model layer over simpler fixes like renaming variables one by one. Renaming would have stayed manual and machine-specific, exactly the repetition users were drowning in.

A model layer solved three things at once:

That last point mattered most for growth: without a model, scaling just meant a bigger mess. With one, the more data came in, the more organized it got.

Diagram of the bet: standard data models applied to data sources, feeding databases and operational software.
The bet: standard data models, applied to data sources to feed databases and operational software.

Design

I worked the structure out with the engineers on a whiteboard before touching Figma. Designing straight with the devs is how I usually work: fast, throwaway, and it surfaces the real constraints early. Based on the Unified Namespace, the structure came down to three levels, model, instance, asset, and I mapped which user could do what, and where.

From there I moved to hi-fi: a data-model library on one side, and the instance, the live twin of a real machine, on the other, with the mapping between them. I built it as an interactive prototype so users could react to something real rather than static screens.

Whiteboard sketch of the three-level structure: model, instance and asset, with each role's permissions.
The three-level structure: model, instance, asset, with each role's permissions mapped.
Hi-fi screen of a data model: constant data, dynamic sensor data and the resulting hierarchy.
Hi-fi design: the data-model library on one side, the live instance on the other.
Hi-fi screen of a live machine instance with its normalized data and live values.
The interface where the user can browse the normalized data of an asset.
The mapping screen: raw machine inputs on the left linked by curves to the model's expected fields on the right.
Details of the mapping between a model's expected data and the machine's real data.

Testing

I tested the prototype with users from our target audience, and also asked questions about their maturity on the topic: the state of the art on digital twins, then reactions to the prototype, and the use cases people saw for it. The mapping tested well. The users were excited about the idea of having a shared language to work from, and the interactive prototype was a success. But the users did not buy it: "it's too good to be true". That red flag taught us we had missed something. I had run out of options for further research, so the next step would have been to ship and learn.

Walkthrough of the interactive prototype, in French.

What happened, and what I learned

Even if this feature never shipped, Niagara was acquired by Vitesse Automation, and this work was part of what was bought.

The lesson I carry: it took 50+ interviews to learn that interviews were the wrong instrument. You can't interview your way into a role that doesn't exist yet, because people can't describe a job they don't hold. You build it, you put it in their hands, and you let the role form around it. That is exactly the kind of problem I want to work on, designing the products that make emerging, technical work legible to the humans who do it.