Customers Searching For M10-50 Bolts Were Told We Did Not Sell Any

by Serguey Shinder

In February 2025 one of our branch managers forwarded a complaint from a steel fixer who had spent his lunch break trying to order bolts on our website. He had typed M10-50, the way everybody in the trade writes a ten millimetre bolt fifty millimetres long, and been told nothing matched. About forty products matched, and most of them were on the shelf in his nearest branch.

The search engine behind our website has its own small query language. A word with a minus sign in front of it means leave out anything containing this word. So M10-50 meant everything containing M10 except anything mentioning 50, and since every bolt he wanted had 50 in its description, every one of them was excluded. A customer typing 1/2" for a half inch fitting fared worse. The inch mark is a quotation mark, an unclosed quotation is a syntax error, and our page caught the error and reported no results.

Nobody had written this on purpose. Our code took whatever was typed in the box and handed it to the engine as a query, and the engine did exactly what its documentation says. The box looked like a place to type words. Underneath it was a language, and our customers had been writing in it for years without knowing it existed.

When we went to the search logs, 8.6 per cent of searches in the previous quarter had returned nothing. We had always read that number as the share of things customers wanted that we did not sell, and it had sat on a buying dashboard for three years. Of those empty searches, thirty one per cent contained a hyphen, a slash, a quotation mark or a plus sign. The people most likely to hit it were the ones who knew exactly what they wanted.

We changed how the text crosses into the engine. Whatever a customer types is now passed as plain text, with every character the query language treats specially escaped, so it can only ever be searched for and never obeyed. The features that language offered, excluding words and matching exact phrases, are available as filters on the page for anyone who wants them, which so far has been almost nobody. Sizes are recognised as single terms, so M10-50 and M10 x 50 find the same bolt. And every release is run against five hundred real queries from the logs, chosen because they are awkward, each with its expected first result written down.

Empty searches fell to just under three per cent within a month. The buyers, who had spent years treating the old figure as gaps in our range, lost about two thirds of their evidence overnight.

Anything a customer types ends up inside somebody's language. The only question is whether it arrives there as words or as instructions.

– Serguey Asael Shinder

Leave a Reply