I once watched an experienced operations user search for a customer by copying an invoice number into the customer-name field. It failed, naturally. They removed the spaces, tried the booking reference, opened another system and eventually asked a colleague. The product team’s response was that the search box was working as designed.
It was. That was the problem.
Search is often specified as a small interface component: field, icon, results. In complex products it is a workflow for recovering context. Users may remember a fragment of a name, an airport, a reference from an email or the person who handled the job. A good search experience accepts the imperfect clue, helps the user narrow the possibilities and supports the next action.
People remember clues, not schemas
Databases have fields. People have memories. The two rarely line up politely.
A user may know that a request involved Frankfurt, happened last month and belonged to “that automotive customer”. They may not know which identifier the system considers canonical. Forcing them to choose the correct field before searching makes the product’s data model their problem.
Start by researching the clues people actually use. Support queries, copied references, browser history and observed work all reveal the vocabulary of retrieval. Then decide which identifiers can be searched together and which filters genuinely help.
This is recognition over recall in practical form. The Nielsen Norman Group guidance on recognition and recall explains why visible options reduce memory load. Search should turn partial memory into recognisable candidates rather than demanding perfect input.
Retrieval is only the first step
A result is useful because of what the user can do with it. If somebody searches for an invoice, they may want to check payment, download the document or understand a discrepancy. If they search for a quote, they may want to duplicate, revise or compare it.
Design results around those likely continuations. Show the information needed to distinguish similar records: customer, date, route, status, owner and perhaps value. Provide direct actions when they are safe and common. Do not make users open five identical records to discover which one contains the useful surprise.
In the Aerios carrier marketplace, the object of work carried commercial and operational context. Search could not simply return a title. It needed to help charter teams recognise the right request and move into the correct stage of work.
Filters should answer real questions
Filters are frequently added because the data has fields, producing panels that resemble a tax return. A useful filter corresponds to a question users ask: show me my overdue quotes, requests for a particular region, contracts awaiting signature or invoices created this month.
Use language from the work. “Creation timestamp greater than” may be technically precise, but “Created in the last 30 days” is more likely to survive contact with a human. Provide sensible ranges and allow advanced precision where it adds genuine value.
The order matters too. Put high-value filters close to the results and hide specialist options behind an obvious expansion. Progressive disclosure is not about concealing complexity; it is about preventing uncommon detail from charging rent on every search.
Empty results are part of search
No results is not a dead end. It is evidence. The query may be too specific, mistyped, restricted by permissions or filtered into oblivion.
Tell users which conditions were applied. Suggest removing a filter, checking an identifier or searching a broader date range. Preserve the original query while they adjust it. If permissions may explain the absence, say so carefully without exposing sensitive records.
Avoid cheerful copy such as “Nothing here yet!” when the user is trying to find a missing £80,000 invoice. Tone should respect the job. Calm specificity is more useful than confetti.
Ranking needs an explanation
Simple products can sort exact matches first. Operational products often need more: recency, status, ownership and business priority may influence relevance.
Ranking should still feel predictable. If a less obvious result appears first, provide enough matching context to explain why. Highlight the matching customer or reference. Offer alternative sorts. Do not build an invisible relevance system that causes two colleagues to see different truths without understanding the difference.
Personalisation can help, but shared work needs shared logic. Recent items and owned records are useful boosts. They should not bury exact matches or make historical records effectively disappear.
Search and navigation work together
Search is not compensation for poor information architecture. Users should be able to navigate common areas and search across uncertain ones. Saved views can bridge the two: a well-used query such as “My quotes awaiting response” becomes a durable workspace.
This is especially valuable in products where users repeat monitoring tasks. Let them save filters, share views where appropriate and return to the same operational question. A saved view is not merely search history; it is a lightweight workflow definition.
Be explicit about whether saved views are personal or shared. Few things create office intrigue faster than a filter changing because a colleague helpfully “fixed” it for everyone.
Design for scale and delay
Search behaviour changes as data grows. A prototype with 40 records may tolerate instant filtering; a production system with millions may not. Design loading, partial results and failure states before scale arrives with a clipboard.
Show when results are still updating. Keep the query visible. Allow cancellation of expensive searches. If indexing delays mean a newly created item will not appear immediately, explain that and provide a direct route to it.
The GOV.UK guidance on service monitoring is broader than search, but the principle applies: teams need to understand performance and failure as part of the service. Search latency is user experience, not an infrastructure anecdote.
Measure successful recovery
Counting searches tells you that search exists. Better measures ask whether users recovered the right item and completed the next task.
Look at reformulation rates, filter changes, abandoned result pages and repeated searches. Pair analytics with observation because a clicked result may still be wrong. Track time to locate common records and the number of records opened before success. Review zero-result queries for missing vocabulary and indexing gaps.
Search logs can contain sensitive information, so handle them with appropriate privacy and retention controls. Useful evidence does not require turning every frustrated query into permanent organisational folklore.
Build the retrieval journey
Good search accepts imperfect clues, exposes recognisable context, helps users refine and supports the action that follows. It understands that finding is not the job; continuing the work is.
So design beyond the box. Study the clues people remember. Rank transparently. Make filters answer real questions. Treat no results as a recoverable state and measure whether the user reached the right outcome.
If the search works only when somebody knows the exact database field, it is not a search experience. It is a password challenge with better typography.



