

The first step was working through a series of questions with the product team that might seem simple but had real implications for how the feature would behave.
With the structural decisions made, I worked through every data field from first principles — applying UX best practices to turn a rough list into a fully considered data model.
example:
Defining granular requirements and conditions for the username input field
The cLOTO platform has six roles in a defined hierarchy - each with its own permission level:
Revising the role structure itself was out of scope, but it was obvious that platform users were in the dark about what their role actually meant. The roles were platform-specific rather than industry-standard, with no reference point for users to understand their own permissions. I studied the full role permission matrix thoroughly and created a simplified visual reference that made the hierarchy and capabilities of each role immediately clear — linked contextually throughout the platform wherever cLOTO roles were mentioned.
before:
What the role matrix was
assumption:
With platform-specific cLOTO roles, users were in the dark about what their role actually meant, and didn't have a way to check that

after:
What the role matrix became
easily accessible:
The role matrix is now cross-referenced throughout the platform whenever user roles are mentioned



dependencies:
Early UI explorations for the user management flows helped shape the design system
With a high-fidelity interactive prototype built in ProtoPie, I ran usability testing sessions with target users. The sessions confirmed the core design decisions:
prototyping:
The high-fidelity prototype allowed for an "immersive experience" during usability testing
data synthesis:
Affinity mapping helped to see trends
Testing also surfaced a clear set of unmet needs that went beyond the original product scope — all of which were accommodated in the final design.
example:
When deactivating a user, the EHS managers wanted to be able to add a note specifying the reason, which was accommodated in the design iteration
The most prominent unmet need was training and compliance tracking — users wanted to see statuses pertaining to compliance training and audit - who is due, whose training is expired etc. Training status, they explained, directly determines whether a user is authorized to execute lockout procedures. It was a legitimate and important request. However, our legal department determined that surfacing this information would introduce liability for MasterLock, and there was no time within the project timeline to develop the necessary legal protocols. The feature was scoped out, with the intention of revisiting it in a future phase.
descoped:
Statuses pertainign to compliance training - for legal reasons

Across every screen, field, and interaction, I meticulously crafted the UX copy — status labels, form field names, placeholders, and supporting text — ensuring that every word was clear, consistent, and purposeful. In a platform where a misunderstood status or an ambiguous field label can lead to the wrong person being authorized for a safety-critical procedure, language isn't a finishing touch. It's a design decision.
handoff example:
Location dropdown conditions & labels for when it's expanded, collapsed, has or doesn't have a search bar, scroll behavior, empty state, error handling etc.
documentation:
Sorting and filtering behavior established was documented and applied as a cross-platform pattern for other areas
EHS manager:
“I think what I have seen is very simple in a good way - it takes you where you need it to. It's very easy.”
The decision to exclude training and audit information was driven by a legal constraint we didn't anticipate early enough in the process. In hindsight, I would have pushed to design a placeholder or forward-looking message within the UI — acknowledging that this capability was on the roadmap and setting expectations accordingly. Users who surfaced this need in testing had a legitimate and important use case, and leaving it completely unaddressed in the interface missed an opportunity to build trust and signal that their feedback had been heard.