A robust web portal for the conversational AI serving the finance industry
Working as a UI developer isn't just about taking designs and materializing them. As one advances in their career, it's often expected to be familiar with different UI design patterns and to be able to contribute to the evolution of designs along with the product and design teams. I covered a lot of ground at Kasisto during my time there. Most of it was spent rearchitecting the project and creating a custom component library, but there was one instance where my design experience in particular directly led to the resolution of a troubling UX problem.
Wrong Tool For The Job
Without getting too much into the business logic, this feature was highly trafficked and vital when it came to configuring how and when a conversational model would deliver a response to particular user queries. These responses where configured using a list of accordion UI elements where each accordion featured a series of potential responses linked to a particular query type.
The contents of each accordion however, featured a conditional form that could be used to add one or more responses for that particular query. With many different response types, the accordion could quickly fill up with multiple viewports worth of content. Not to mention there was no limit on the number of query types. So not only could the accordion list grow quite long, but the contents of each could also get even longer.
What made this problem particularly acute was that, not only were the accordions reorderable but their responses within them were too! You can imagine how cumbersome and frustrating it would be to work between multiple different accordions.
Designing With Heads Down
In addition to all of the rearchitecting going on with the web portal, a design team had audited the application and was working to deploy a new design system with vital features getting the first treatment. While there were some UX improvements throughout, it was all mostly a fresh coat of paint. The product and design team couldn't ignore the problem with this response page however and was working to make the experience more intuitive. Unfortunately, both product and design teams became too fixated on the existing accordion pattern and instead of considering different UI components altogether were simply exploring ways to reinvent and improve the accordion pattern.
If you've ever worked with drag and drop elements in a UI you'll know that it has its limitation when moving beyond the fold. Given how many viewports worth of content there could be for any particular query type, direct manipulation of these accordions (or the responses within them) could involve dragging content vertically for an unreasonable amount of time. The design teams solution to this was to eliminate this feature and have it be controlled by anchor points that showed the position of the response and a drop down of positions to reorder to...
Mind you that the reordering applied to both the query types (accordion items) and the content within them (responses). So this anchor-dropdown feature was present on two levels! On top of this, vertical lines were added to connect the anchor points to help a user differentiate between elements and levels. The feature began to smell of overengineering.
As a developer, I was beginning to get a lot of anxiety looking at this -- aside from the design not really feeling like a genuine improvement in terms of UX, it was looking to be a convoluted and costly implementation.
Taking a Step Back
After some time trying to make the new design work, I expressed to the team that I wasn't feeling confident in the design and was going to explore an alternative myself.
I took a look at my previous role at Hubcap where I faced a lot of design challenges as well. The bulk of the development work I did there was for a vendor side web portal that featured a car wash menu creation page. I went through several iterations of designing this page and faced similar UX issues. In this instance, we were trying render a series of menus alongside a form used to create/edit them.
Regardless of my efforts, I just couldn't find a design that wasn't a compromise to either the form or menus. Similar to my team at Kasisto, I was transfixed on accommodating this design. I took a break for a day or two and when I came back to it, had an epiphany -- I don't need to render all of these menus at once. In fact, there really wasn't even a point in rendering a polished looking menu at all.
After another day of considering an alternative, I landed on a far more intuitive design that was more scaleable -- abstracting the subject and content to a side panel and rendering the form to the right of it. This opened up so much screen real estate to the user and made working through the form far more comfortable.
A Fresh Perspective
After considering what I had learned from my previous work at Hubcap, I took some time to see how I could adapt the design to the Kasisto work. The thought was to take the query types and abstract them to a side panel. From there, selecting any particular query type would load the related content beside it. Recall that reordering these query types and their respective responses was also a requirement. Not only could responses be represented in a nested tree list within the side panel, but the reordering could take place there as well. The result was a far cleaner UI that was much easier to reason about.
In order to sell this I had to present it to the team with more than just words. I happened to be working in a popular documentation tool at the time and to my surprise, the UI was basically what I was aiming for -- nested document titles in the left side panel and the content of the page that was selected in the main body beside it. The documents were even reorderable! I decided to mock up a dataset we had in this tool along with some cropped screenshots from the UI designs. I pitched it to the team very similarly as I did here -- recalled Hubcap experience and resolution and then solidified it with a crude reproduction using a tool that also utilized this UX pattern. By the end of the next day, the design team had produced some new designs and all of the awkwardness had been thwarted.
Come implementation time I had a much better idea of how to go about it and it proved to be far simpler. Aside from getting positive recognition from the greater team and company, initial customer feedback for the redesign was very positive with an emphasis on improvements to this feature.
This anecdote feels like such a classic example of 'thinking outside the box' or 'taking a step back'. Some times you just need to pick your head up, take a breather, and come back to the problem with a clear mind. While I earned another experience under my belt, the best part was that the outcome was overwhelming positive -- designers felt more confident and could put their efforts elsewhere, I had a much better time implementing the feature, and users were much less frustrated.