Work/Behavox · 2020–21
Complex query UI · 0→1

Advanced search for enterprise archiving

Boolean logic, wildcards and proximity operators across ten years of enterprise communications, built so a compliance analyst can trust the result.

Role

Senior Product Designer · sole designer on the product

Team

1 PM · 1 TPM · 1 designer · 2 FE · 4 BE · 2 QA

Timeline

Late 2020 into 2021

Outcome

100% task success in moderated testing

The situation

Behavox is an enterprise data insights platform: it aggregates, analyses and acts on a company's internal communications data. At the end of 2020 I was assigned to lead design on a brand new product, Behavox Archive, a centralized store for every channel a company communicates on.

The PM handed me thorough discovery documentation built from eight interviews with existing and prospective customers. Two pain points dominated. Data was scattered across repositories that had to be searched one at a time. And the search tools people had were not powerful enough for the job: wildcards, proximity operators and nested boolean logic were either missing or half-supported.

The first problem was solved by the platform itself. The second one was mine.

Problem definition

Discovery pointed at one primary user: the compliance analyst, the person who has to answer a regulator or a legal team with a defensible set of results.

How can we empower compliance analysts to build searches of different levels of complexity on their own, and to be confident in the results?

Setting direction

Before any interface existed I needed the cross-functional team to want the same thing. I wrote a narrative describing the gap between the tools analysts had and the experience we wanted to build, drew illustrations for it, and my manager helped me turn it into a short animated experience vision film.

It did what a spec could not. People could see the future without needing the implementation explained, and it got everyone excited about the same destination.

Tracking assumptions. In parallel I logged every assumption I noticed myself making, in an assumptions base in Airtable. It kept me honest about what I actually knew, and it became the source of the hypotheses we tested later.

Process

Learning the domain first. Search interfaces are their own discipline, so I read two books before ideating: Faceted Search by Daniel Tunkelang and Search User Interfaces by Marti Hearst. The most useful idea in them: search is not a goal, it is a multi-step process toward some other end. I mapped every step an analyst goes through and generated How Might We questions for each one.

Heuristic evaluation. I audited our own existing Compliance search interface, whose filters we planned to reuse, and catalogued what I had to avoid:

I also went through the advanced search interfaces available publicly. They split into two camps: flexible but essentially a line of code, or clear and approachable but incapable of real query complexity. I needed the middle.

Early explorations, and two assumptions proved wrong. After a great many paper sketches, two concepts emerged. Both split the work into building the search and reviewing the results. Testing them killed two of my assumptions:

Assumption 1: analysts build a query, then move on to review results. Wrong. They move back and forth constantly, and how much depends on whether the request came from a regulator or from inside the business.

Assumption 2: a visualization of how matches are distributed over the selected time frame would help. Wrong. Interesting, not useful. The total match count plus skimming a few content examples told them more.

The most valuable input arrived as a set of anonymized real search queries from several clients. It showed which parameters people actually reach for, and at what level of logical complexity.

Converging. Two insights from those real queries decided the layout:

So: query and results on one screen, which removes the back and forth entirely. The popular parameters that never join complex logic become facets down the left. The parameters that do join complex logic get a query builder in the centre.

Usability testing. With the research team we prioritized which assumptions to validate, and our senior UX researcher ran five remote moderated sessions. 100% task success, average subjective difficulty 2.3 on a 1 to 5 scale. Two changes came straight out of it: the "Request download" button set the wrong expectation, since people assumed the download started immediately rather than creating a request, and everyone expected facet filters to start fully selected, so they could exclude rather than assemble.

Handing off. The project was large enough that handoff needed its own design. A table of contents in Figma so developers could navigate every screen. A decisions log in Confluence that replaced scattered Slack and Zoom threads with one source of truth. And supporting sheets documenting the logic of each filter and of grouping and nesting. A separate component was built for every search parameter, each carrying its own rules.

Results