On a daily basis most of us use some form of search - searching through social feeds based on specific people, phrases, words, and even using google to specifically find the best air purifier under $200, for medium-sized rooms, and cheap replaceable filters. Search has become so prominent in our lives, even easy, that it is expected that algorithms should predict what we are actually looking for.
Searching for design inspiration, I looked at established product design companies Apple, Linkedin, Airbnb,.. to see how they handle boolean search. Our specific use case at ringDNA provided a unique challenge and it was a matter of reconciling our goals and keeping brand and functionality in mind. I began to wonder, are there visually engaging ways to make boolean search functional for both tech savvy users, and others that have basic needs when it comes to search?
It’s a challenging design problem when your customers are in need of highly specific and complex answers, but don’t have time to define complex questions.
Tom Slade, Product Manager - Conversation AI, ringDNA
But first, what exactly is boolean was the first thing that crossed my mind after I was first told to redesign our boolean functionality. Because English is not my first language, I tried to do some quick keyword searches by typing it phonetically, ‘bulien’ ‘buelien’ ‘boolian’ and so on. When one of my managers eventually typed it in slack as “BOOLEAN”, I had an “a-HA” moment. So, from google: a binary variable, having two possible values called “true” and “false.” Ideally, users will also have the ability to “include” and “exclude” keywords and phrases as well as “and” and “or.”
In our Conversation AI product, a boolean function is created when a user creates search that combines a string of keywords and/or phrases and can even link them together. The primary boolean terms that we use in Conversation AI are “And”, which means both items have to be found; “Or” which means either one of the items have to be found; “Exclude’, exclude any result that mentions that term, and last but not least “Include.”. By combining these terms, the user can create an extremely complex string containing logical operators that will pull specific data or no data at all (which is very common).
For users, boolean search is something that can be very powerful when used correctly, on the other hand, it can be disadvantageous when a user doesn't understand what exactly is happening. I think the biggest challenge in designing for boolean search is making sure that we account for power users and infrequent users of what is essentially advanced search functionality. Most of the time, some power users do not know what they are searching for, and the result they expect can be something that has a completely different outcome with what the boolean logic is outputting.
At the end of the project, we decided to make boolean a feature in Conversation AI as an advanced setting that can be easily toggled on or off. With this approach, it does not disrupt users who have no intention of using advanced and granular search. In addition to the standard boolean, we also add the ability for users to search a specific item and include other parameters like time, as part of that search. Is that the best? For now, this is a clear and usable solution and hopefully, future user feedback will reflect that boolean search has added value to our users.
With the primary needs of our users in mind, like navigating large teams with large datasets, boolean search is going to play a critical function in Conversation AI. What we can continue to do as designers is to make informed hypotheses and decisions and make it usable for everyone. Boolean search can get very complex quickly, even the simplest design can stretch the flexibility of the feature to the point that a user might not end up finding what they’re looking for. But it doesn’t mean we cannot iterate, conduct user tests and research, and always strive to improve it. Have you recently designed boolean search in your product/s and how did you solve it for your use case? Did the complexity get the best of you or did you bully the boolean?