Shipped enterprise UX. How I redesigned a complex form and configuration system using systematic thinking about validation, error states, and user confidence. This ensures users feel guided and in control through complex tasks.
Note: Due to NDA constraints, this case study focuses on problem framing, decision-making, and system design rather than UI artefacts.

The original brief was limited to visual modernisation. I identified deeper UX failures during my audit and advocated to expand scope, turning a cosmetic refresh into a meaningful experience improvement.
Restore clarity, predictability, and trust across a complex configuration system, while working within real technical and delivery constraints.
Forms was one of our legacy products. Functional, but visually and experientially out of step with the rest of our platform. While newer products like Omni and AI Quality had evolved with our design system, Forms had not been touched in years. It looked like it belonged to a different company.
The brief was straightforward: modernise the UI to match our current design language. But as I audited the product, I found deeper problems. The UX was failing users in ways that went far beyond visual polish. Configuration workflows were confusing, validation was invisible, and even our own QA and engineering teams struggled to understand how the system behaved.
I advocated to expand the scope beyond a visual refresh and shift the roadmap. If we were going to touch Forms, we should fix the underlying experience problems that were causing support overhead, slowing down implementations, and undermining confidence in the product. Leadership agreed to prioritise these foundational issues over purely cosmetic updates.
Users could build advanced configurations, but small mistakes frequently led to silent failures that only surfaced much later when something downstream broke. My role was not to redesign individual screens in isolation. It was to restore clarity, predictability, and trust across a complex configuration system, while working within real technical and organisational constraints.
Forms did not fail because users lacked skill. It failed because the system assumed too much implicit knowledge.
Across the platform, users were expected to mentally simulate backend behaviour. Validation often happened too late or not at all. UI elements sometimes looked editable when they weren't, or behaved inconsistently across builders. Success states visually implied correctness even when configurations were incomplete or invalid.
This created real risk. Users could unknowingly build broken configurations that silently failed and disrupted workflows downstream. Even internal teams struggled to debug issues without inspecting backend logs.
This wasn't a traditional usability issue. It was a system legibility problem.
As I dug deeper, a consistent pattern emerged. The most painful issues were not caused by missing features, but by invisible rules.
I began using a simple diagnostic lens across Forms:
My goal was not to add more UI. It was to externalise system behaviour so users could understand what was happening, when it was happening, and what to do next.
This lens shaped every design decision that followed.
The API Mapper was the most complex and fragile part of the platform, and where my UX skills were tested the most.
It supported POST, GET, and PATCH requests, dynamic variables, mapped paths, and response handling. From a technical standpoint, it was powerful. From a UX standpoint, it was opaque.
Failures often occurred silently. A configuration could be saved successfully, yet still be invalid. Users only discovered problems later, when the mapped API failed during form submission or testing.
Before redesigning anything, I partnered closely with engineers to understand:
Only after understanding the system end-to-end did I begin redesigning the experience.
One small but critical issue exposed a deeper UX problem.
The API Mapper displayed a single green success indicator after saving a configuration. Users interpreted this as "this will work," even when the endpoint URL was invalid or incomplete. In reality, "saved" only meant the configuration was stored, not that it was usable.
Green success states created false confidence. Users believed the system had validated their setup when it hadn't.
True validation would have required making live API calls, which wasn't always feasible due to authentication complexity, rate limiting, and environment differences.
I split the state into two distinct concepts:
Where full validation wasn't possible, the UI made that limitation explicit, with inline explanations of what "validated" did and did not guarantee.
This prevented false confidence and shifted discovery of issues from late-stage testing to the point of configuration.
This pattern, making system guarantees explicit, became foundational across Forms.
As forms grew larger, inherited horizontal page tabs broke down:
I challenged carrying this pattern forward during the redesign, even though it existed in the previous UI.
The invisible rule was clear: "page structure exists, but you must hold it in your head."
I redesigned page management to prioritise visibility and manipulation over continuity with legacy patterns. Page structure became visible as a vertical sidebar where users could see all pages at once, drag-and-drop to reorder, and edit pages. This is especially useful for multi-page enterprise forms.
Pages become increasingly hidden as the list grows
All pages visible and directly manipulable
I also redesigned configuration panels for form nodes such as text inputs, dropdowns, date/time fields, multi-selects, media, navigation, and links.
Previously, settings were dense, inconsistently grouped, and often mismatched user intent. I restructured these panels to:
This significantly improved testability and reduced misconfiguration, especially for complex forms.
In the PDF Builder, several elements looked interactive but weren't. Page reordering felt unpredictable, and actions lacked clear feedback.
Here again, the issue wasn't missing functionality. It was mismatched affordances.
I clarified what was actionable, what wasn't, and when changes took effect. Interactions became more predictable, and users no longer had to "try things" to understand behaviour.
This work required deep collaboration across disciplines:
Design work was paced ahead of implementation so flows were reviewed, validated, and ready for development and testing when the sprint began.
For complex interactions and edge cases, I created interactive prototypes to demonstrate behaviour, state changes, and transitions where static specs weren't sufficient.
Not everything could be redesigned perfectly. Some improvements would have required major backend rewrites, and we made conscious trade-offs where the cost outweighed the benefit.
Designing within constraints wasn't a compromise. It was part of the responsibility.
The redesign shipped and remains in production today. While I do not have access to formal metrics, the impact was evident in measurable shifts in team behaviour and product reliability:
Forms has since been deprioritised as a product, but the design work remains in use. Solid UX decisions outlast shifting business priorities.
This isn't just about better UI. It's about better systems, judgment, and collaboration, not just screens.