Journal · Forensics

When the empty state is the product

Line chart on paper representing empty-state volume over time

Most in-app search dashboards treat a zero-result rate as a hygiene metric: keep it low, celebrate a dip, ignore the queries. That habit comes from web search, where an empty SERP often means the crawler failed. Inside an app, an empty state is frequently the most truthful screen you ship. It tells you the catalogue, the synonym table, or the language analyser could not do the job the advertisement implied.

At Agent Flowcore we spend a full week of Query Intelligence Lab on zero-result and low-result forensics. The method is deliberately unglamorous. You export the queries that returned nothing (or fewer than three items, if your catalogue is dense), you tag them by hand for a day, and only then do you open a chart. Teams that skip the tagging day produce beautiful “opportunity sizing” and still cannot tell merchandising what to relist.

Four buckets that actually decide the work

We insist on four buckets before anyone invents a fifth. Inventory hole: the user asked for a SKU, flavour, size, or route you advertised or once sold and do not currently hold. Synonym miss: the item exists under a name your analyser does not know — a brand spelling, a Thai nickname, a transliteration. Language coverage: mixed script, missing spaces, tone marks stripped, English stopwords deleting the only useful token. Junk or test: internal queries, bot-shaped strings, single characters. Junk should be small. If it is not, your instrumentation is capturing preview keystrokes or staff tools.

A fashion marketplace in our 2024 Signal Pair tagged 1,400 empty-state queries and found that almost half were colour-plus-size strings for SKUs still running on Instagram. Search was not “underperforming.” Acquisition was pouring demand into a hole. Ranking experiments would have been a costly distraction. That story is also on our alumni notes page; the forensic board is what made the argument land.

Low-result is not the same disease

Zero results and two results get averaged into one “unsuccessful search” rate far too often. Two results on a grocery app can be a successful known-item lookup. Two results on a fashion browse query can be a dead end. Split low-result by intent before you set a target. If you cannot name the intent, you are not ready for a target.

An empty state is a conversation. Read the query before you redesign the illustration.

A triage board you can actually run

Column one: query text, language, and count. Column two: bucket. Column three: owner — merchandising, search relevance, growth, or ignore. Column four: a date. We use paper in the Bangkok room because screens invite filtering instead of arguing. Digital copies follow. The owner column is the point. Search teams should not silently “fix” inventory holes with query rewriting that pretends a delisted dress is still in stock.

Presentation of the empty state still matters — a kind illustration, a category shortcut, a “notify me” — but it is secondary. If 40% of zeros are campaign leftovers, the honest product move is to stop the campaign or relist the SKU, not to A/B test the illustration’s sadness level.

What we do not claim

This forensic does not raise conversion by itself. It removes a class of self-deception. You may still have a ranking problem, a slow app, or a catalogue that is simply smaller than demand. Those are separate diagnoses. If you want the full sequence — instrumentation, taxonomy, empty states, ranking bias — sit the Lab or start with our framing of in-app search analytics.

Back to the journal