Redesigning Okkular: Turning a Cluttered AI Tool into a Seamless Workflow

Redesigning Okkular: Turning a Cluttered AI Tool into a Seamless Workflow

Redesigning Okkular: Turning a Cluttered AI Tool into a Seamless Workflow

Redesigning Okkular: Turning a Cluttered AI Tool into a Seamless Workflow

Before
After
Before
After

Live B2B Product

Live B2B Product

My Role

My Role

Solo Product Designer & Front-end Dev

Responsible for Research, UI/UX, Prototyping, and Implementation.

Timeline

Timeline

3 Weeks (Design to High-Fidelity Hand-off)

Tools

Tools

Figma

AI (for critique/analysis)

Angular (for dev)

Team & Context

Team & Context

Startup Environment

Working directly with the CTO and backend team.

I utilized AI as a critique partner to simulate a larger design team.

Meet Arjun. He has 600 products to upload by 5 PM

Meet Arjun. He has 600 products to upload by 5 PM

Meet Arjun. He has 600 products to upload by 5 PM

Meet Arjun. He has 600 products to upload by 5 PM

Arjun's life without Okkular

Arjun's life without Okkular

He decides to test the waters. Arjun searches the app store, finds Okkular, and tries it with just a single image.

He decides to test the waters. Arjun searches the app store, finds Okkular, and tries it with just a single image.

He decides to test the waters. Arjun searches the app store, finds Okkular, and tries it with just a single image.

He decides to test the waters. Arjun searches the app store, finds Okkular, and tries it with just a single image.

Arjun's life without Okkular

But he needs scale, not just speed. Realizing he can't do this 600 times, he discovers the 'Integrations' feature...

Arjun's life without Okkular

But he needs scale, not just speed. Realizing he can't do this 600 times, he discovers the 'Integrations' feature...

But he needs scale, not just speed. Realizing he can't do this 600 times, he discovers the 'Integrations' feature...

But he needs scale, not just speed. Realizing he can't do this 600 times, he discovers the 'Integrations' feature...

Arjun tries Okkular (New Design)

Arjun syncs his whole store in one click. Job done.

But wait... it wasn't always this easy.

But wait... it wasn't always this easy.

But wait... it wasn't always this easy.

But wait... it wasn't always this easy.

The videos above show the New User Experience I built. It’s fast, automated, and seamless.

The videos above show the New User Experience I built. It’s fast, automated, and seamless.

The videos above show the New User Experience I built. It’s fast, automated, and seamless.

The videos above show the New User Experience I built. It’s fast, automated, and seamless.

But that is NOT how it started.

But that is NOT how it started.

But that is NOT how it started.

But that is NOT how it started.

When I joined the team, the app was built around a single idea: generating product tags from images. It was simple and effective. But as the product grew, the design didn't keep up.

When I joined the team, the app was built around a single idea: generating product tags from images. It was simple and effective. But as the product grew, the design didn't keep up.

When I joined the team, the app was built around a single idea: generating product tags from images. It was simple and effective. But as the product grew, the design didn't keep up.

When I joined the team, the app was built around a single idea: generating product tags from images. It was simple and effective. But as the product grew, the design didn't keep up.

The Result? In the Old Version, this same journey was broken and frustrating. Arjun couldn't find the integrations, auditing tags required too many clicks, and he had zero confidence that the system was actually working.

The Result? In the Old Version, this same journey was broken and frustrating. Arjun couldn't find the integrations, auditing tags required too many clicks, and he had zero confidence that the system was actually working.

The Result? In the Old Version, this same journey was broken and frustrating. Arjun couldn't find the integrations, auditing tags required too many clicks, and he had zero confidence that the system was actually working.

The Result? In the Old Version, this same journey was broken and frustrating. Arjun couldn't find the integrations, auditing tags required too many clicks, and he had zero confidence that the system was actually working.

To show you what I mean, let's see what really would have happened to Arjun if he'd used the old app.

To show you what I mean, let's see what really would have happened to Arjun if he'd used the old app.

To show you what I mean, let's see what really would have happened to Arjun if he'd used the old app.

To show you what I mean, let's see what really would have happened to Arjun if he'd used the old app.

The old navigation was a mess. Key features like "Integrations" were split into two different, random places, making the app's core value impossible to find.

The old navigation was a mess. Key features like "Integrations" were split into two different, random places, making the app's core value impossible to find.

The old navigation was a mess. Key features like "Integrations" were split into two different, random places, making the app's core value impossible to find.

The old navigation was a mess. Key features like "Integrations" were split into two different, random places, making the app's core value impossible to find.

Why it's the worst: If Arjun cannot find the "Integrations" page, he never gets his big "Aha!" moment (Scene 10-11). He can't automate his 600 products. He will assume the app is just a single-upload tool (like in Scene 5) and abandon it because it doesn't solve his core problem. This is a total conversion-killer.

Why it's the worst: If Arjun cannot find the "Integrations" page, he never gets his big "Aha!" moment (Scene 10-11). He can't automate his 600 products. He will assume the app is just a single-upload tool (like in Scene 5) and abandon it because it doesn't solve his core problem. This is a total conversion-killer.

Why it's the worst: If Arjun cannot find the "Integrations" page, he never gets his big "Aha!" moment (Scene 10-11). He can't automate his 600 products. He will assume the app is just a single-upload tool (like in Scene 5) and abandon it because it doesn't solve his core problem. This is a total conversion-killer.

Why it's the worst: If Arjun cannot find the "Integrations" page, he never gets his big "Aha!" moment (Scene 10-11). He can't automate his 600 products. He will assume the app is just a single-upload tool (like in Scene 5) and abandon it because it doesn't solve his core problem. This is a total conversion-killer.

A simple, repetitive task like auditing a single tag was buried under multiple clicks, modals, and page loads, creating enormous friction.

A simple, repetitive task like auditing a single tag was buried under multiple clicks, modals, and page loads, creating enormous friction.

A simple, repetitive task like auditing a single tag was buried under multiple clicks, modals, and page loads, creating enormous friction.

A simple, repetitive task like auditing a single tag was buried under multiple clicks, modals, and page loads, creating enormous friction.

This is the exact opposite of the app's "automation" promise. It shows a total disregard for the user's time and makes the app fundamentally unusable for anyone with a real-world (i.e., large) product catalog.

This is the exact opposite of the app's "automation" promise. It shows a total disregard for the user's time and makes the app fundamentally unusable for anyone with a real-world (i.e., large) product catalog.

This is the exact opposite of the app's "automation" promise. It shows a total disregard for the user's time and makes the app fundamentally unusable for anyone with a real-world (i.e., large) product catalog.

This is the exact opposite of the app's "automation" promise. It shows a total disregard for the user's time and makes the app fundamentally unusable for anyone with a real-world (i.e., large) product catalog.

The app frequently failed to communicate its state. Blank pages, missing empty states, and no error messages left users completely in the dark.

The app frequently failed to communicate its state. Blank pages, missing empty states, and no error messages left users completely in the dark.

The app frequently failed to communicate its state. Blank pages, missing empty states, and no error messages left users completely in the dark.

The app frequently failed to communicate its state. Blank pages, missing empty states, and no error messages left users completely in the dark.

This is a total trust-killer. A blank page feels like a critical bug. It makes the app feel unreliable and unprofessional, immediately causing the user to lose confidence and contact support.

This is a total trust-killer. A blank page feels like a critical bug. It makes the app feel unreliable and unprofessional, immediately causing the user to lose confidence and contact support.

This is a total trust-killer. A blank page feels like a critical bug. It makes the app feel unreliable and unprofessional, immediately causing the user to lose confidence and contact support.

This is a total trust-killer. A blank page feels like a critical bug. It makes the app feel unreliable and unprofessional, immediately causing the user to lose confidence and contact support.

The design was completely uneven. Buttons, fonts, and spacing were random, which eroded user trust and made the app feel "stitched together"

The design was completely uneven. Buttons, fonts, and spacing were random, which eroded user trust and made the app feel "stitched together"

The design was completely uneven. Buttons, fonts, and spacing were random, which eroded user trust and made the app feel "stitched together"

The design was completely uneven. Buttons, fonts, and spacing were random, which eroded user trust and made the app feel "stitched together"

Inconsistency erodes user trust and makes the app feel unprofessional. Text overflows are literal bugs that make features unusable and suggest the product is abandoned

Inconsistency erodes user trust and makes the app feel unprofessional. Text overflows are literal bugs that make features unusable and suggest the product is abandoned

Inconsistency erodes user trust and makes the app feel unprofessional. Text overflows are literal bugs that make features unusable and suggest the product is abandoned

Inconsistency erodes user trust and makes the app feel unprofessional. Text overflows are literal bugs that make features unusable and suggest the product is abandoned

The old product view had lots of unnecessary wasted space. This forced users to scroll up and down repeatedly to compare the product image with its tags and description.

The old product view had lots of unnecessary wasted space. This forced users to scroll up and down repeatedly to compare the product image with its tags and description.

The old product view had lots of unnecessary wasted space. This forced users to scroll up and down repeatedly to compare the product image with its tags and description.

The old product view had lots of unnecessary wasted space. This forced users to scroll up and down repeatedly to compare the product image with its tags and description.

This is a core workflow failure. It creates massive cognitive load and makes a simple audit task 10x slower. It punishes users for trying to do their core job and makes the app feel unusable at scale.

This is a core workflow failure. It creates massive cognitive load and makes a simple audit task 10x slower. It punishes users for trying to do their core job and makes the app feel unusable at scale.

This is a core workflow failure. It creates massive cognitive load and makes a simple audit task 10x slower. It punishes users for trying to do their core job and makes the app feel unusable at scale.

This is a core workflow failure. It creates massive cognitive load and makes a simple audit task 10x slower. It punishes users for trying to do their core job and makes the app feel unusable at scale.

I had 3 weeks to turn this around. Here was my plan.

I had 3 weeks to turn this around. Here was my plan.

I had 3 weeks to turn this around. Here was my plan.

I had 3 weeks to turn this around. Here was my plan.

As you saw, the old app was a mess.

As you saw, the old app was a mess.

As you saw, the old app was a mess.

As you saw, the old app was a mess.

My goal was to fix those problems and build the smooth, 10-minute workflow you saw in the first video.

My goal was to fix those problems and build the smooth, 10-minute workflow you saw in the first video.

My goal was to fix those problems and build the smooth, 10-minute workflow you saw in the first video.

My goal was to fix those problems and build the smooth, 10-minute workflow you saw in the first video.

My Strategy, I was the solo product designer (and front-end dev) on this project, and I had about 3 weeks to design everything. I didn't have 6 months to build a perfect system. I had to find the quickest, smartest ways to solve these problems.

My Strategy, I was the solo product designer (and front-end dev) on this project, and I had about 3 weeks to design everything. I didn't have 6 months to build a perfect system. I had to find the quickest, smartest ways to solve these problems.

My Strategy, I was the solo product designer (and front-end dev) on this project, and I had about 3 weeks to design everything. I didn't have 6 months to build a perfect system. I had to find the quickest, smartest ways to solve these problems.

My Strategy, I was the solo product designer (and front-end dev) on this project, and I had about 3 weeks to design everything. I didn't have 6 months to build a perfect system. I had to find the quickest, smartest ways to solve these problems.

But before I could fix anything, I had to understand why it was broken.

But before I could fix anything, I had to understand why it was broken.

But before I could fix anything, I had to understand why it was broken.

But before I could fix anything, I had to understand why it was broken.

I knew I couldn't just rely on live calls. Since Okkular is a B2B tool, our users are busy professionals running retail businesses. Getting them on a call during work hours is difficult. Plus, many users just use the app quietly without complaining, so I risked missing their feedback .

I knew I couldn't just rely on live calls. Since Okkular is a B2B tool, our users are busy professionals running retail businesses. Getting them on a call during work hours is difficult. Plus, many users just use the app quietly without complaining, so I risked missing their feedback.

I knew I couldn't just rely on live calls. Since Okkular is a B2B tool, our users are busy professionals running retail businesses. Getting them on a call during work hours is difficult. Plus, many users just use the app quietly without complaining, so I risked missing their feedback.

I knew I couldn't just rely on live calls. Since Okkular is a B2B tool, our users are busy professionals running retail businesses. Getting them on a call during work hours is difficult. Plus, many users just use the app quietly without complaining, so I risked missing their feedback.

So, I used a few different methods to get the full picture:

So, I used a few different methods to get the full picture:

So, I used a few different methods to get the full picture:

So, I used a few different methods to get the full picture:

Usability Testing

I sat with a few people (internally and externally) and watched them try to do simple tasks. It was clear right away that even basic things were slow and confusing .

1

Usability Testing

I sat with a few people (internally and externally) and watched them try to do simple tasks. It was clear right away that even basic things were slow and confusing .

1

Usability Testing

I sat with a few people (internally and externally) and watched them try to do simple tasks. It was clear right away that even basic things were slow and confusing .

1

Usability Testing

I sat with a few people (internally and externally) and watched them try to do simple tasks. It was clear right away that even basic things were slow and confusing .

1

Feedback Forms

For teams I couldn't meet, I sent short, open-ended surveys. This was great for capturing their frustrations in their own words.

2

Feedback Forms

For teams I couldn't meet, I sent short, open-ended surveys. This was great for capturing their frustrations in their own words.

2

Feedback Forms

For teams I couldn't meet, I sent short, open-ended surveys. This was great for capturing their frustrations in their own words.

2

Feedback Forms

For teams I couldn't meet, I sent short, open-ended surveys. This was great for capturing their frustrations in their own words.

2

Heuristic Review

I went through the app myself, looking for obvious design flaws : inconsistency, confusing labels buttons or missing feedback, etc.

3

Heuristic Review

I went through the app myself, looking for obvious design flaws : inconsistency, confusing labels buttons or missing feedback, etc.

3

Heuristic Review

I went through the app myself, looking for obvious design flaws : inconsistency, confusing labels buttons or missing feedback, etc.

3

Heuristic Review

I went through the app myself, looking for obvious design flaws : inconsistency, confusing labels buttons or missing feedback, etc.

3

Making sense of the data I gathered a lot of raw feedback from these steps. Instead of spending days sorting through it manually, I used AI to help me analyze it. It quickly clustered the feedback into common themes, helping me validate the biggest problems in hours, not days.

Making sense of the data I gathered a lot of raw feedback from these steps. Instead of spending days sorting through it manually, I used AI to help me analyze it. It quickly clustered the feedback into common themes, helping me validate the biggest problems in hours, not days.

Making sense of the data I gathered a lot of raw feedback from these steps. Instead of spending days sorting through it manually, I used AI to help me analyze it. It quickly clustered the feedback into common themes, helping me validate the biggest problems in hours, not days.

Making sense of the data I gathered a lot of raw feedback from these steps. Instead of spending days sorting through it manually, I used AI to help me analyze it. It quickly clustered the feedback into common themes, helping me validate the biggest problems in hours, not days.

From all this work, I created a rough "issue map" that showed all the breakdowns across the app. This map became my guide for every decision that came next.

From all this work, I created a rough "issue map" that showed all the breakdowns across the app. This map became my guide for every decision that came next.

From all this work, I created a rough "issue map" that showed all the breakdowns across the app. This map became my guide for every decision that came next.

From all this work, I created a rough "issue map" that showed all the breakdowns across the app. This map became my guide for every decision that came next.

You can read more about my general approach to Understanding User Problems and User Testing here

You can read more about my general approach to Understanding User Problems and User Testing here

You can read more about my general approach to Understanding User Problems and User Testing here

You can read more about my general approach to Understanding User Problems and User Testing here

I couldn't fix everything at once. I had to prioritize.

I couldn't fix everything at once. I had to prioritize.

I couldn't fix everything at once. I had to prioritize.

I couldn't fix everything at once. I had to prioritize.

The issue map showed me a huge list of problems. I couldn't fix everything at once, so I had to be selective.

The issue map showed me a huge list of problems. I couldn't fix everything at once, so I had to be selective.

The issue map showed me a huge list of problems. I couldn't fix everything at once, so I had to be selective.

The issue map showed me a huge list of problems. I couldn't fix everything at once, so I had to be selective.

To stay focused, I sorted the problems based on three simple things:

To stay focused, I sorted the problems based on three simple things:

To stay focused, I sorted the problems based on three simple things:

To stay focused, I sorted the problems based on three simple things:

Frequency

Frequency

Frequency

Frequency

How often did users complain about this?

How often did users complain about this?

How often did users complain about this?

How often did users complain about this?

1

1

Severity

How much did it slow down their work?

How much did it slow down their work?

How much did it slow down their work?

How much did it slow down their work?

2

2

Effort

How hard would it be to fix?

How hard would it be to fix?

How hard would it be to fix?

How hard would it be to fix?

3

3

This told me exactly what to tackle first: the big problems that blocked the user's flow.

This told me exactly what to tackle first: the big problems that blocked the user's flow.

This told me exactly what to tackle first: the big problems that blocked the user's flow.

This told me exactly what to tackle first: the big problems that blocked the user's flow.

Prioritization Matrix: Sorting user feedback by impact and effort to define a clear roadmap.

Prioritization Matrix: Sorting user feedback by impact and effort to define a clear roadmap.

I didn’t want to reinvent the wheel. I wanted to learn from the best.

I didn’t want to reinvent the wheel. I wanted to learn from the best.

I didn’t want to reinvent the wheel. I wanted to learn from the best.

I didn’t want to reinvent the wheel. I wanted to learn from the best.

Once I knew what to fix, I needed to figure out how. I didn't want to reinvent the wheel, so I looked at other successful SaaS web applications to see how they handled complex data.

Once I knew what to fix, I needed to figure out how. I didn't want to reinvent the wheel, so I looked at other successful SaaS web applications to see how they handled complex data.

Once I knew what to fix, I needed to figure out how. I didn't want to reinvent the wheel, so I looked at other successful SaaS web applications to see how they handled complex data.

Once I knew what to fix, I needed to figure out how. I didn't want to reinvent the wheel, so I looked at other successful SaaS web applications to see how they handled complex data.

I took screenshots of clean, scalable patterns and organized them in Figma. These real-world examples became my "design toolkit" to help plan my own layouts .

I took screenshots of clean, scalable patterns and organized them in Figma. These real-world examples became my "design toolkit" to help plan my own layouts .

I took screenshots of clean, scalable patterns and organized them in Figma. These real-world examples became my "design toolkit" to help plan my own layouts .

I took screenshots of clean, scalable patterns and organized them in Figma. These real-world examples became my "design toolkit" to help plan my own layouts .

Inspiration Moodboard: Analyzing industry patterns to build a design toolkit for complex data.

Inspiration Moodboard: Analyzing industry patterns to build a design toolkit for complex data.

The biggest problem I had to fix was the "Where am I?"

The biggest problem I had to fix was the "Where am I?"

The biggest problem I had to fix was the "Where am I?"

The biggest problem I had to fix was the "Where am I?"

The Problem

The Problem

The Problem

The Problem

The app was a maze. Features were hidden in random places because they were added in a rush over the years. For example, "Integrations" was split into two different pages, and tag settings were buried where no one could find them. This was the main reason users kept asking support, "Where can I find this?".

The app was a maze. Features were hidden in random places because they were added in a rush over the years. For example, "Integrations" was split into two different pages, and tag settings were buried where no one could find them. This was the main reason users kept asking support, "Where can I find this?".

The app was a maze. Features were hidden in random places because they were added in a rush over the years. For example, "Integrations" was split into two different pages, and tag settings were buried where no one could find them. This was the main reason users kept asking support, "Where can I find this?".

The app was a maze. Features were hidden in random places because they were added in a rush over the years. For example, "Integrations" was split into two different pages, and tag settings were buried where no one could find them. This was the main reason users kept asking support, "Where can I find this?".

The Solution

The Solution

The Solution

I didn't start by designing screens. I started by listing out every single page in the app. Then, I reorganized them based on how a user actually works, not how the code was written.

I didn't start by designing screens. I started by listing out every single page in the app. Then, I reorganized them based on how a user actually works, not how the code was written.

I didn't start by designing screens. I started by listing out every single page in the app. Then, I reorganized them based on how a user actually works, not how the code was written.

I didn't start by designing screens. I started by listing out every single page in the app. Then, I reorganized them based on how a user actually works, not how the code was written.

Information Architecture: Restructuring the app's navigation based on user workflows

Information Architecture: Restructuring the app's navigation based on user workflows

The Result

The Result

The Result

This created a clear, logical structure. Now, critical features like "Integrations" were immediately visible. This one change was the key to unlocking the bulk automation workflow for users like Arjun.

This created a clear, logical structure. Now, critical features like "Integrations" were immediately visible. This one change was the key to unlocking the bulk automation workflow for users like Arjun.

This created a clear, logical structure. Now, critical features like "Integrations" were immediately visible. This one change was the key to unlocking the bulk automation workflow for users like Arjun.

This created a clear, logical structure. Now, critical features like "Integrations" were immediately visible. This one change was the key to unlocking the bulk automation workflow for users like Arjun.

I didn't have 6 months to build a Design System. So I took a smarter route.

I didn't have 6 months to build a Design System. So I took a smarter route.

I didn't have 6 months to build a Design System. So I took a smarter route.

I didn't have 6 months to build a Design System. So I took a smarter route.

After fixing the navigation, I had to tackle the visual mess. The old app looked inconsistent, buttons were different on every page, and text was literally overflowing its boxes. It made the product feel untrustworthy

After fixing the navigation, I had to tackle the visual mess. The old app looked inconsistent, buttons were different on every page, and text was literally overflowing its boxes. It made the product feel untrustworthy

After fixing the navigation, I had to tackle the visual mess. The old app looked inconsistent, buttons were different on every page, and text was literally overflowing its boxes. It made the product feel untrustworthy

After fixing the navigation, I had to tackle the visual mess. The old app looked inconsistent, buttons were different on every page, and text was literally overflowing its boxes. It made the product feel untrustworthy

The Strategy

The Strategy

The Strategy

In a perfect world, I’d build a custom design system. But with only 3 weeks, that wasn’t realistic. I needed a way to fix the inconsistency fast.

In a perfect world, I’d build a custom design system. But with only 3 weeks, that wasn’t realistic. I needed a way to fix the inconsistency fast.

In a perfect world, I’d build a custom design system. But with only 3 weeks, that wasn’t realistic. I needed a way to fix the inconsistency fast.

In a perfect world, I’d build a custom design system. But with only 3 weeks, that wasn’t realistic. I needed a way to fix the inconsistency fast.

The Solution

The Solution

The Solution

I took an efficient route and created a "mini-system" by mixing two proven libraries:

I took an efficient route and created a "mini-system" by mixing two proven libraries:

I took an efficient route and created a "mini-system" by mixing two proven libraries:

I took an efficient route and created a "mini-system" by mixing two proven libraries:

Google's Material Design

Google's Material Design

Google's Material Design

Our frontend was built in Angular, so aligning with Google's Material Kit was a logical choice. It gave us a solid, ready-made set of components and rules. This choice directly reduced the gap between design and development, as our engineers already knew Material, which meant faster builds .

Our frontend was built in Angular, so aligning with Google's Material Kit was a logical choice. It gave us a solid, ready-made set of components and rules. This choice directly reduced the gap between design and development, as our engineers already knew Material, which meant faster builds .

Our frontend was built in Angular, so aligning with Google's Material Kit was a logical choice. It gave us a solid, ready-made set of components and rules. This choice directly reduced the gap between design and development, as our engineers already knew Material, which meant faster builds .

Our frontend was built in Angular, so aligning with Google's Material Kit was a logical choice. It gave us a solid, ready-made set of components and rules. This choice directly reduced the gap between design and development, as our engineers already knew Material, which meant faster builds .

1

Atlassian's Design System

Atlassian's Design System

Atlassian's Design System

Material was great for components, but I felt it sometimes lacked a "human touch" for a complex B2B tool. Atlassian's system has really clear, user-friendly rules for typography, spacing, and feedback messages. I borrowed these patterns to solve our "Black Hole" problem and bring more clarity to the app

Material was great for components, but I felt it sometimes lacked a "human touch" for a complex B2B tool. Atlassian's system has really clear, user-friendly rules for typography, spacing, and feedback messages. I borrowed these patterns to solve our "Black Hole" problem and bring more clarity to the app

Material was great for components, but I felt it sometimes lacked a "human touch" for a complex B2B tool. Atlassian's system has really clear, user-friendly rules for typography, spacing, and feedback messages. I borrowed these patterns to solve our "Black Hole" problem and bring more clarity to the app

Material was great for components, but I felt it sometimes lacked a "human touch" for a complex B2B tool. Atlassian's system has really clear, user-friendly rules for typography, spacing, and feedback messages. I borrowed these patterns to solve our "Black Hole" problem and bring more clarity to the app

2

By mixing these two, I built a "sticker sheet" in Figma that brought all our new rules together.

This included our new components (a mix of Material + Atlassian), color tokens, typography scale, and feedback messages .

By mixing these two, I built a "sticker sheet" in Figma that brought all our new rules together.

This included our new components (a mix of Material + Atlassian), color tokens, typography scale, and feedback messages .

By mixing these two, I built a "sticker sheet" in Figma that brought all our new rules together.

This included our new components (a mix of Material + Atlassian), color tokens, typography scale, and feedback messages .

By mixing these two, I built a "sticker sheet" in Figma that brought all our new rules together.

This included our new components (a mix of Material + Atlassian), color tokens, typography scale, and feedback messages .

Sample of Component Sticker Sheet

Sample of Component Sticker Sheet

Brand Color System: To maintain consistent and WCAG-compliant across every screen

Brand Color System: To maintain consistent and WCAG-compliant across every screen

Defining standard color variables in Figma to bridge the gap between design and code

Defining standard color variables in Figma to bridge the gap between design and code

Defining standard typography variables in Figma to bridge the gap between design and code

Defining standard typography variables in Figma to bridge the gap between design and code

The goal wasn't to force a giant design system on the company. The goal was to stop making random design choices. The result was cleaner screens, a product that finally felt consistent, and a faster handoff to our developers.

The goal wasn't to force a giant design system on the company. The goal was to stop making random design choices. The result was cleaner screens, a product that finally felt consistent, and a faster handoff to our developers.

The goal wasn't to force a giant design system on the company. The goal was to stop making random design choices. The result was cleaner screens, a product that finally felt consistent, and a faster handoff to our developers.

The goal wasn't to force a giant design system on the company. The goal was to stop making random design choices. The result was cleaner screens, a product that finally felt consistent, and a faster handoff to our developers.

You can read more about my full design system methodology here.

You can read more about my full design system methodology here.

You can read more about my full design system methodology here.

You can read more about my full design system methodology here.

With the foundation set, I was ready to fix the core workflow.

With the foundation set, I was ready to fix the core workflow.

With the foundation set, I was ready to fix the core workflow.

With the foundation set, I was ready to fix the core workflow.

With a solid structure and a design system in place, I could finally attack the biggest problem: the auditing workflow was painful and slow.

With a solid structure and a design system in place, I could finally attack the biggest problem: the auditing workflow was painful and slow.

With a solid structure and a design system in place, I could finally attack the biggest problem: the auditing workflow was painful and slow.

With a solid structure and a design system in place, I could finally attack the biggest problem: the auditing workflow was painful and slow.

The Problem

The Problem

The Problem

The "Broken User Journey" showed this clearly:

The "Broken User Journey" showed this clearly:

The "Broken User Journey" showed this clearly:

The "Broken User Journey" showed this clearly:

The Marathon Scroll: Users couldn't see the image, tags, and description at the same time.

The Marathon Scroll: Users couldn't see the image, tags, and description at the same time.

The Marathon Scroll: Users couldn't see the image, tags, and description at the same time.

The Marathon Scroll: Users couldn't see the image, tags, and description at the same time.

Death by 1,000 Clicks: Auditing a single tag took 4-5 clicks and multiple page loads.

Death by 1,000 Clicks: Auditing a single tag took 4-5 clicks and multiple page loads.

Death by 1,000 Clicks: Auditing a single tag took 4-5 clicks and multiple page loads.

Death by 1,000 Clicks: Auditing a single tag took 4-5 clicks and multiple page loads.

The Approach

The Approach

The Approach

I sketched rough layouts to find the best way to fit the Image, Tags, and Description on one screen without clutter.

I sketched rough layouts to find the best way to fit the Image, Tags, and Description on one screen without clutter.

I sketched rough layouts to find the best way to fit the Image, Tags, and Description on one screen without clutter.

I sketched rough layouts to find the best way to fit the Image, Tags, and Description on one screen without clutter.

Once the layout was set, I used our new "mini-system" to build the final UI. This included designing a "workflow-in-a-box" layout and, just as importantly, redesigning the tag components themselves to be 1-click interactive elements, not links to a side-nav.

Once the layout was set, I used our new "mini-system" to build the final UI. This included designing a "workflow-in-a-box" layout and, just as importantly, redesigning the tag components themselves to be 1-click interactive elements, not links to a side-nav.

Once the layout was set, I used our new "mini-system" to build the final UI. This included designing a "workflow-in-a-box" layout and, just as importantly, redesigning the tag components themselves to be 1-click interactive elements, not links to a side-nav.

Once the layout was set, I used our new "mini-system" to build the final UI. This included designing a "workflow-in-a-box" layout and, just as importantly, redesigning the tag components themselves to be 1-click interactive elements, not links to a side-nav.

AI as a Critique: As a solo designer, I didn't want to wait for formal reviews to find flaws. I used AI as a design critic. I'd feed it my new screen designs and ask it to find usability gaps or suggest better-known industry patterns. This let me iterate faster and come to team reviews with stronger, more validated designs

AI as a Critique: As a solo designer, I didn't want to wait for formal reviews to find flaws. I used AI as a design critic. I'd feed it my new screen designs and ask it to find usability gaps or suggest better-known industry patterns. This let me iterate faster and come to team reviews with stronger, more validated designs

AI as a Critique: As a solo designer, I didn't want to wait for formal reviews to find flaws. I used AI as a design critic. I'd feed it my new screen designs and ask it to find usability gaps or suggest better-known industry patterns. This let me iterate faster and come to team reviews with stronger, more validated designs

AI as a Critique: As a solo designer, I didn't want to wait for formal reviews to find flaws. I used AI as a design critic. I'd feed it my new screen designs and ask it to find usability gaps or suggest better-known industry patterns. This let me iterate faster and come to team reviews with stronger, more validated designs

The Solution: From "Side-Navs" to "In-Place" Editing

The Solution: From "Side-Navs" to "In-Place" Editing

The Solution: From "Side-Navs" to "In-Place" Editing

I designed a new 3-column layout that completely fixed the broken workflow. I also replaced the clunky side-navs with interactive components that let users edit tags directly on the screen.

I designed a new 3-column layout that completely fixed the broken workflow. I also replaced the clunky side-navs with interactive components that let users edit tags directly on the screen.

I designed a new 3-column layout that completely fixed the broken workflow. I also replaced the clunky side-navs with interactive components that let users edit tags directly on the screen.

I designed a new 3-column layout that completely fixed the broken workflow. I also replaced the clunky side-navs with interactive components that let users edit tags directly on the screen.

Tab 1 of 2: After

Old UI: Audit one tag

Old UI: Audit one tag

Old UI: Audit one tag

Click the tag

Click the tag

Click the tag

Click the tag

Wait for a side-nav to open

Wait for a side-nav to open

Wait for a side-nav to open

Wait for a side-nav to open

Click "Provide Feedback"

Click "Provide Feedback"

Click "Provide Feedback"

Click "Provide Feedback"

Select "Wrong Tag"

Select "Wrong Tag"

Select "Wrong Tag"

Select "Wrong Tag"

Click "Submit"

Click "Submit"

Click "Submit"

Click "Submit"

This was 4+ clicks for ONE tag audit.

This was 4+ clicks for ONE tag audit.

This was 4+ clicks for ONE tag audit.

This was 4+ clicks for ONE tag audit.

New UI: "2-Click" Audit

New UI: "2-Click" Audit

New UI: "2-Click" Audit

Click on the tag.

Click on the tag.

Click on the tag.

Click on the tag.

Select an option to mark as 'wrong' or Change Tag.

Select an option to mark as 'wrong' or Change Tag.

Select an option to mark as 'wrong' or Change Tag.

Select an option to mark as 'wrong' or Change Tag.

The new 3-column layout has:

  1. A persistent product list

  2. A large, clear image

  3. Interactive tag, description, and shop the look components

The new 3-column layout has:

  1. A persistent product list

  2. A large, clear image

  3. Interactive tag, description, and shop the look components

The new 3-column layout has:

  1. A persistent product list

  2. A large, clear image

  3. Interactive tag, description, and shop the look components

The new 3-column layout has:

  1. A persistent product list

  2. A large, clear image

  3. Interactive tag, description, and shop the look components

The Result

The Result

The Result

This design killed the "Marathon Scroll" and slashed the audit process from 5 clicks down to 1. This was the final piece that turned the "Broken Journey" into the seamless, automated workflow we saw in the beginning.

This design killed the "Marathon Scroll" and slashed the audit process from 5 clicks down to 1. This was the final piece that turned the "Broken Journey" into the seamless, automated workflow we saw in the beginning.

This design killed the "Marathon Scroll" and slashed the audit process from 5 clicks down to 1. This was the final piece that turned the "Broken Journey" into the seamless, automated workflow we saw in the beginning.

This design killed the "Marathon Scroll" and slashed the audit process from 5 clicks down to 1. This was the final piece that turned the "Broken Journey" into the seamless, automated workflow we saw in the beginning.

How the new design system rebuilt user trust?

How the new design system rebuilt user trust?

How the new design system rebuilt user trust?

How the new design system rebuilt user trust?

The Problem

The Problem

The Problem

As we saw earlier, the old app was a "Black Hole." It gave zero feedback, leavingIt users staring at a blank screen, wondering, "Is it broken? Is it loading? Is there no content?". This was a trust-killer.

As we saw earlier, the old app was a "Black Hole." It gave zero feedback, leavingIt users staring at a blank screen, wondering, "Is it broken? Is it loading? Is there no content?". This was a trust-killer.

As we saw earlier, the old app was a "Black Hole." It gave zero feedback, leavingIt users staring at a blank screen, wondering, "Is it broken? Is it loading? Is there no content?". This was a trust-killer.

As we saw earlier, the old app was a "Black Hole." It gave zero feedback, leavingIt users staring at a blank screen, wondering, "Is it broken? Is it loading? Is there no content?". This was a trust-killer.

The Solution

The Solution

The Solution

Using the new components from our system, I implemented a complete feedback loop. I didn't just add generic messages; I designed context-aware states for every situation.

Using the new components from our system, I implemented a complete feedback loop. I didn't just add generic messages; I designed context-aware states for every situation.

Using the new components from our system, I implemented a complete feedback loop. I didn't just add generic messages; I designed context-aware states for every situation.

Using the new components from our system, I implemented a complete feedback loop. I didn't just add generic messages; I designed context-aware states for every situation.

Contextual Empty States: Instead of one generic "empty" message, I designed different states based on the user's specific situation. For example, the "Product Insights" page shows one message if you have no products yet, and a completely different, guiding message if your data connection is lost.

Contextual Empty States: Instead of one generic "empty" message, I designed different states based on the user's specific situation. For example, the "Product Insights" page shows one message if you have no products yet, and a completely different, guiding message if your data connection is lost.

Contextual Empty States: Instead of one generic "empty" message, I designed different states based on the user's specific situation. For example, the "Product Insights" page shows one message if you have no products yet, and a completely different, guiding message if your data connection is lost.

Contextual Empty States: Instead of one generic "empty" message, I designed different states based on the user's specific situation. For example, the "Product Insights" page shows one message if you have no products yet, and a completely different, guiding message if your data connection is lost.

Ex: Same page with No Products Yet

Ex: Same page with No Products Yet

Ex: Same page with No Products Yet

Ex: Same page with No Products Yet

Before
After

When no products exist, the UI guides the user to the clear next step: importing their inventory.

Before
After

When the connection drops, the UI explains why data is missing and provides a direct action to fix it.

Ex: Same page when Data Connection Lost

Before
After

When the connection drops, the UI explains why data is missing and provides a direct action to fix it.

Ex: Same page when Data Connection Lost

Ex: Same page when Data Connection Lost

Ex: Same page when Data Connection Lost

Before
After

When the connection drops, the UI explains why data is missing and provides a direct action to fix it.

Flags (Snackbars): For quick, temporary confirmation of an action (like "Settings saved successfully"), I added snackbars that don't interrupt the user's flow.

Flags (Snackbars): For quick, temporary confirmation of an action (like "Settings saved successfully"), I added snackbars that don't interrupt the user's flow.

Flags (Snackbars): For quick, temporary confirmation of an action (like "Settings saved successfully"), I added snackbars that don't interrupt the user's flow.

Flags (Snackbars): For quick, temporary confirmation of an action (like "Settings saved successfully"), I added snackbars that don't interrupt the user's flow.

Using distinct color tokens (Green for success, Orange for warning) to communicate the message type instantly.

Using distinct color tokens (Green for success, Orange for warning) to communicate the message type instantly.

Using distinct color tokens (Green for success, Orange for warning) to communicate the message type instantly.

Using distinct color tokens (Green for success, Orange for warning) to communicate the message type instantly.

Inline Flags: For errors or info inside a form (like "Shopify API key is required"), I used inline flags to show the user exactly where the problem is.

Inline Flags: For errors or info inside a form (like "Shopify API key is required"), I used inline flags to show the user exactly where the problem is.

Inline Flags: For errors or info inside a form (like "Shopify API key is required"), I used inline flags to show the user exactly where the problem is.

Inline Flags: For errors or info inside a form (like "Shopify API key is required"), I used inline flags to show the user exactly where the problem is.

Using distinct error states to highlight form validation issues directly at the source.

Using distinct error states to highlight form validation issues directly at the source.

Section Messages: For more permanent, page-level information (like "Shop The Look results can be viewed..."), I used section messages to give important context.

Section Messages: For more permanent, page-level information (like "Shop The Look results can be viewed..."), I used section messages to give important context.

Section Messages: For more permanent, page-level information (like "Shop The Look results can be viewed..."), I used section messages to give important context.

Section Messages: For more permanent, page-level information (like "Shop The Look results can be viewed..."), I used section messages to give important context.

Using bold, distinct containers to elevate important page-level context above the content.

Using bold, distinct containers to elevate important page-level context above the content.

Using bold, distinct containers to elevate important page-level context above the content.

Using bold, distinct containers to elevate important page-level context above the content.

Lozenges (Status Indicators): I used color-coded tags to show status at a glance. For example, "Verified" is green, while "Unverified" is red. This lets users scan a list of 100 products and instantly see which ones need attention.

Lozenges (Status Indicators): I used color-coded tags to show status at a glance. For example, "Verified" is green, while "Unverified" is red. This lets users scan a list of 100 products and instantly see which ones need attention.

Lozenges (Status Indicators): I used color-coded tags to show status at a glance. For example, "Verified" is green, while "Unverified" is red. This lets users scan a list of 100 products and instantly see which ones need attention.

Lozenges (Status Indicators): I used color-coded tags to show status at a glance. For example, "Verified" is green, while "Unverified" is red. This lets users scan a list of 100 products and instantly see which ones need attention.

Using distinct color tokens (Green for Verified, Red for Unverified) to communicate status.

Using distinct color tokens (Green for Verified, Red for Unverified) to communicate status.

The Result

The Result

The Result

This feedback loop was the key to rebuilding trust. Instead of guessing, users now have clear visibility into the system's status. Whether it’s a success message or an error alert, the UI empowers them to make informed decisions based on clear, actionable information.

This feedback loop was the key to rebuilding trust. Instead of guessing, users now have clear visibility into the system's status. Whether it’s a success message or an error alert, the UI empowers them to make informed decisions based on clear, actionable information.

This feedback loop was the key to rebuilding trust. Instead of guessing, users now have clear visibility into the system's status. Whether it’s a success message or an error alert, the UI empowers them to make informed decisions based on clear, actionable information.

This feedback loop was the key to rebuilding trust. Instead of guessing, users now have clear visibility into the system's status. Whether it’s a success message or an error alert, the UI empowers them to make informed decisions based on clear, actionable information.

Finally, I tackled the visual inconsistency.

Finally, I tackled the visual inconsistency.

Finally, I tackled the visual inconsistency.

Finally, I tackled the visual inconsistency.

The Problem

The Problem

The Problem

The old UI felt "stitched together." Buttons, spacing, and fonts were random on every page, and text often overflowed its boxes. This made the app feel unprofessional.

The old UI felt "stitched together." Buttons, spacing, and fonts were random on every page, and text often overflowed its boxes. This made the app feel unprofessional.

The old UI felt "stitched together." Buttons, spacing, and fonts were random on every page, and text often overflowed its boxes. This made the app feel unprofessional.

The old UI felt "stitched together." Buttons, spacing, and fonts were random on every page, and text often overflowed its boxes. This made the app feel unprofessional.

Old UI Screens and Components

Old UI Screens and Components

The Solution

The Solution

The Solution

This is where the "sticker sheet" paid off. By building every screen from the same set of components, I eliminated the inconsistencies instantly.

This is where the "sticker sheet" paid off. By building every screen from the same set of components, I eliminated the inconsistencies instantly.

This is where the "sticker sheet" paid off. By building every screen from the same set of components, I eliminated the inconsistencies instantly.

This is where the "sticker sheet" paid off. By building every screen from the same set of components, I eliminated the inconsistencies instantly.

New UI

New UI

Applying defined color tokens to specific UI elements to maintain a consistent visual hierarchy and ensure accessibility.

Applying defined color tokens to specific UI elements to maintain a consistent visual hierarchy and ensure accessibility.

Systematic Consistency

Systematic Consistency

Systematic Consistency

Every page now follows a strict grid and uses the same button and form components. This makes the app feel solid, modern, and trustworthy.

Every page now follows a strict grid and uses the same button and form components. This makes the app feel solid, modern, and trustworthy.

Every page now follows a strict grid and uses the same button and form components. This makes the app feel solid, modern, and trustworthy.

Every page now follows a strict grid and uses the same button and form components. This makes the app feel solid, modern, and trustworthy.

consistent grid structure across all pages to ensure elements align perfectly, reducing visual noise and cognitive load.

consistent grid structure across all pages to ensure elements align perfectly, reducing visual noise and cognitive load.

So, did the redesign work?

So, did the redesign work?

So, did the redesign work?

So, did the redesign work?

The main goal of this redesign wasn't just to make the app look better. It was to make it easier to understand, cut down on confusion, and stop the flood of support questions.

The main goal of this redesign wasn't just to make the app look better. It was to make it easier to understand, cut down on confusion, and stop the flood of support questions.

The main goal of this redesign wasn't just to make the app look better. It was to make it easier to understand, cut down on confusion, and stop the flood of support questions.

The main goal of this redesign wasn't just to make the app look better. It was to make it easier to understand, cut down on confusion, and stop the flood of support questions.

After launch, both the data and the feedback confirmed that the new design worked.

After launch, both the data and the feedback confirmed that the new design worked.

After launch, both the data and the feedback confirmed that the new design worked.

After launch, both the data and the feedback confirmed that the new design worked.

15% Drop in Support Tickets

15% Drop in Support Tickets

15% Drop in Support Tickets

Within the first month, support tickets dropped by 15%. Most of the reduction came from the exact issues we targeted:

Within the first month, support tickets dropped by 15%. Most of the reduction came from the exact issues we targeted:

Within the first month, support tickets dropped by 15%. Most of the reduction came from the exact issues we targeted:

Within the first month, support tickets dropped by 15%. Most of the reduction came from the exact issues we targeted:

Where can I find this feature?

Where can I find this feature?

Where can I find this feature?

Where can I find this feature?

Did my settings actually save?

Did my settings actually save?

Did my settings actually save?

Did my settings actually save?

Are all my products imported? How many were rejected?

Are all my products imported? How many were rejected?

Are all my products imported? How many were rejected?

Are all my products imported? How many were rejected?

By making the new IA clear and adding feedback, we stopped these problems from ever becoming support tickets.

By making the new IA clear and adding feedback, we stopped these problems from ever becoming support tickets.

By making the new IA clear and adding feedback, we stopped these problems from ever becoming support tickets.

40% Jump in User Satisfaction

40% Jump in User Satisfaction

40% Jump in User Satisfaction

An internal survey showed a 40% jump in user satisfaction with the new usability and navigation. Users specifically said:

An internal survey showed a 40% jump in user satisfaction with the new usability and navigation. Users specifically said:

An internal survey showed a 40% jump in user satisfaction with the new usability and navigation. Users specifically said:

An internal survey showed a 40% jump in user satisfaction with the new usability and navigation. Users specifically said:

They felt more confident about the system status ("I can see when something is still importing").

They felt more confident about the system status ("I can see when something is still importing").

They felt more confident about the system status ("I can see when something is still importing").

They felt more confident about the system status ("I can see when something is still importing").

They understood the next step more clearly ("I know exactly what to do next").

They understood the next step more clearly ("I know exactly what to do next").

They understood the next step more clearly ("I know exactly what to do next").

They understood the next step more clearly ("I know exactly what to do next").

~20% Faster Development

~20% Faster Development

~20% Faster Development

The new "mini-system" (our sticker sheet and shared rules) acted as a shared language between me and the developers. As a result, front-end build time for new features went down by around 20%, which the developers themselves confirmed.

The new "mini-system" (our sticker sheet and shared rules) acted as a shared language between me and the developers. As a result, front-end build time for new features went down by around 20%, which the developers themselves confirmed.

The new "mini-system" (our sticker sheet and shared rules) acted as a shared language between me and the developers. As a result, front-end build time for new features went down by around 20%, which the developers themselves confirmed.

The new "mini-system" (our sticker sheet and shared rules) acted as a shared language between me and the developers. As a result, front-end build time for new features went down by around 20%, which the developers themselves confirmed.

“I don’t need to ask support where things are anymore — I can see it right there.”

“I don’t need to ask support where things are anymore — I can see it right there.”

“I don’t need to ask support where things are anymore — I can see it right there.”

The best feedback came from an informal chat with one of our users, which perfectly summed up the entire project

The best feedback came from an informal chat with one of our users, which perfectly summed up the entire project

The best feedback came from an informal chat with one of our users, which perfectly summed up the entire project

The best feedback came from an informal chat with one of our users, which perfectly summed up the entire project

Create a free website with Framer, the website builder loved by startups, designers and agencies.