A re-architecture of Salsify's data model

In 2023, my team embarked on a multi-quarter investment to restructure our data model from completely flat to infinitely nested. There were several factors driving the shift away from flat data, from technical scale issues to ongoing customer feedback around the usability of our platform.

As a designer, my challenge was to design a system that would scale across all levels of data nesting, accommodate all data types from digital assets to nutritional facts labels, all while addressing documented user problems head-on and simplifying the experience of interacting with data in our platform.

What's Salsify?

Salsify is a Product Experience Management software that allows brands to manage their product information and publish data to retailer websites to sell their products online.

Before (Digital Assets data flattened)

After (Digital Assets data structured)

My role

I served as the lead product designer working across two global teams: Platform Channels and Retailer Connections. These teams were responsible for the area where users mapped and assessed a product's "readiness" for publish to a retailer website.

UX strategy

Worked with PM & EM to maintain a predictable roadmap over multiple quarters of work.

Regularly presented UX progress to an executive audience

Research

Established objectives & hypotheses

Organized user interviews

Conducted usability testing

Worked with pilot users

Synthesized data and defined user needs

Design

Drafted user flows and user journeys

Led team alignment workshops

Rapid wireframing and prototyping

Worked with design systems lead to ensure compliance

Platform Channels team

Emalie Hermans, Product Manager

Chris Davies, Engineering Manager

Pattra Audcharevorakul, Front-End Lead

Tom Hulihan, Back-End Lead

Retail Connections team

Ashley Young, Product Manager

Carlos Fraga, Engineering Manager

Ana Santos, Back-End Lead

User problem

Users need a way to discover and successfully configure structured data in the new data model.

Business goal

Salsify needs a way to scale its ability to build & maintain connections to retailer sites while supporting all product categories customers sell online.

Technical constraint

Since there's no standardization of retailer requirements in the industry, the new data model needs to scale to an infinite number of nesting.

Design process

Given the complexity of the problem, our team structured our investment into 4 phases with the intention of delivering value and gathering feedback in each one. I dedicated approximately a quarter's time to each phase to conduct an end-to-end design cycle and research, ideate, and test our solution.

Incremental value delivery

We balanced a long investment timeline with a plan to deliver value to customers every quarter.

Proof of Concept

December 2022

Goal

Expand to new customer segments and enable Consumer Packaged Goods customers to publish nutritional data.

User

Users publishing product data in the Consumer Packaged Goods space.

Design Process

  1. Team workshop

  2. Design iteration 1

  3. Usability testing

  4. Design iteration 2

  5. User interviews

  6. Ship!

Phase 1 & 2

Feb - May 2023

Goal

Modernize existing front-end and back-end infrastructure in the channels product to accept future changes

User

Any user publishing data through a channel

Design Process

  1. Synthesize existing research

  2. Discovery calls w/ users

  3. Objectives and scope w/ PM

  4. Tech alignment & co-designing

  5. Iterate, iterate, iterate

  6. Stakeholder reviews (Engineering, product design, leadership)

  7. Usability testing

  8. Ship!

Phase 3

Jun - Aug 2023

Goal

Give users a way to map and troubleshoot structured data

User

Technical channel users, Salsify implementation consultants, implementation partners of Salsify.

Design Process

  1. Discovery calls w/ users

  2. Objectives and scope w/ PM

  3. Team workshop

  4. Iterate, iterate, iterate

  5. Stakeholder reviews

  6. Usability testing

  7. Set-up pilot program

  8. Ship!

  9. Pilot

Phase 4

Sep - Nov 2023

The rest of this case study will focus on the final phase of this project, Phase 4. In this phase, I was able to consider a broad set of users and design for all data use cases. It was the most challenging phase yet!

Goal

Create scalable patterns for nested and non-nested data

User

All Channels users

Phase 4 user interviews

In the previous phase, we organized a pilot program with 5 technical users working at partner organizations that help customers implement their retailer channels. To kick-off Phase 4, I interviewed users to ask them about their experience working with structured data. I wanted to understand the top needs these users and their clients have around mapping data.

What worked well

Users understood that structured data had been introduced into the table.

Users understood how data in a nested attribute related to each other.

Users loved the modernized and increased real-estate of the new mapping space.

Key opportunities for Phase 4

Even with onboarding materials available, technical users felt intimidated to begin mapping structured data.

Users struggled to complete their task. 0 out of 5 users completed the most complex use case in the channel.

Even with the increased real-estate, some mappings were hundreds of lines long, resulting in UI scale issues.

Given that mapping and their previews were often multiple lines long, users struggled to cross-reference the two and identify errors.

Why was this important?

Up until this point, my team prioritized solving for the most technical user with the assumption that this user would have a higher tolerance for complexity in the UI.

The findings of this research made it clear that simplicity and ease of use were still important to technical users. This was a big turning point of the project and allowed me to address common UX needs across all channel users.

Team workshop

In order to align on a design direction, define deliverables, and plan a UX timeline, I organized a workshop with members of both product teams.

User story mapping

When I shared about my project in a design team meeting, another designer offered to work with me to introduce User Story Mapping to my team, a workshop format he uses often. Together, we organized and led meetings with stakeholders to define the user journey, scenario, goals, and stories.

Thanks Leo Vroegindewey for introducing me to this workshop format and supporting me in facilitating it on my team!

Weaving stories from user goals and steps

With all team members, we mapped out our user's goals (blue stickies) and imagined the different steps they take in our product (green stickies). From there, we crafted more granular user stories (yellow stickies) that directly informed my deliverables for Phase 4.

Prioritizing work

With my PM and EM, we prioritized stories based on what we would address Now, Next, and Later. We then numbered our "Now" stories based on the order I was going to work on each one.

Plotting a timeline

Using the stories we drafted and prioritized, I estimated which stories I'd work on each engineering sprint and created a timeline. Throughout the rest of the project, I was able to refer back to this timeline to set expectations and plan collaboration sessions.

Design iterations

With user stories and expectations defined, I met with my engineering partners every sprint to share context and co-design. This helped immensely to get technical input regularly, build user empathy, and ensure there were no surprises once the designs were handed-off.

Navigating different levels of data

A key user story and persistent theme of Phase 4 was addressing how users would navigate across different levels of nesting in the new structured data mode. This was both a challenge and key opportunity as navigation and discovery were top user needs based on previous discovery work.

Wireframes

My first step was to ideate through sketching and wireframing. I initially envisioned a wizard-like experience users clicked into from the main table. Using the wizard, users could focus on one data group at a time.

From wizard to table

After sharing my initial idea, I realized a focused experience in a wizard didn't allow for communication across data groups which could be required by the new structured data model.

In the next iteration, I chose to display the new structured data model directly on the table.

In the image on the left, you can see the difference between how Contact Information was displayed with flat v. structured data model.

Clear visual hierarchy

I focused the next few iterations on the display of nested data and streamlining navigation at different levels.

During usability testing sessions, users responded positively to seeing their data groups in a new lefthand sidebar. They also understood the new organization of content and discovered where to take action with ease.

In the image on the left, you can see how the table evolved over time.

Final design solution

Rethinking how all data is presented

At the start of the project, there was a strong focus on how nested data would be presented, but less consideration for non-nested data. As a result, there was a world where the experience of mapping nested data could have been completely different and separate from mapping non-nested data.

I feared supporting two disjointed experiences and pushed my team to view the problem wholistically. Iteration after iteration, I showed how it would be possible to maintain the same base experience for all data and layer on additional capabilities that pertained to nested data use cases.

Complex use cases

A persistent concern was scaling the table to high levels of nesting. I approached my designs for data depths of 1, 2, and 3 almost as components with the aim of combining them for more nested and complex data. With this framework, I was able to scale the designs to accommodate a the use case that initiated this project in the first place, Nutritional data.

Business impact

Loading speeds increased by more than 90% in all channels with the new solution, reducing time-to-value significantly and allowing customers to reach a publish-ready state more quickly.

The new solution accommodated the majority of data use cases, enabling all retailer connections to benefit from lower maintenance costs.

Furthermore, the new solution allowed Salsify to support the majority of its most complex data use cases, which unlocks new customer segments and increases the business' total addressable market.

Several months after the hand-off of my designs, Salsify held a conference with customers to introduce their new pricing and packaging model. My team was able to present this solution and received overwhelming positive feedback on the new updates to the Channel product. Our solution became a featured selling point and parts of it were chosen for early release to customers.

User responses

"What I like about this is that it feels so simple"
-Channel implementation user at Salsify

"This sidebar gives the visibility into my [dataset] that I've been wanting for a long time"
-Pilot user at a partner organization

According to pilot users:

User perception of usability increased by 43%

User perception of ease of use increased by 51%

Overall, users were excited by the new presentation of data, felt it addressed long-standing usability and navigation issues, and best of all, shared our vision for the additional opportunities it could open for their work. I found our conversations with users to be generative and collaborative.

Final thoughts

This project started with an almost impossible goal: How do you scale nested data in your product to an infinite number of depths?

We responded by taking an incremental approach: Let's start by supporting a great experience at depth 1, depth 2, depth 3, etc…

With each phase of work, our team learned more about our problem and became more informed when designing a solution. Sometimes the more we learned, the more overwhelmed I would feel with all the new complexities I'd have to take into consideration. Additionally, there was a high level of visibility and pressure on our team to deliver predictable and consistent results, even through large (and disruptive) organizational changes.

Through this project, I learned how to take an idea and execute it against all the unpredictable events that come up in a year's time. I got more experience representing my contributions as a UX designer to multiple audiences, setting proper expectations, managing my work against external pressure, and delivering on a predictable timeline.

Next: How might we allow Salsify to expand to new customer segments?