tasnif.krafta.uz
All articles

How we taught an IKPU search to understand everyday words

Published September 28, 2026

cappuccino
Official search · suggestionbiscuits with a cappuccino filling
Tasnif by Krafta · coffee drinks, made in a café10202001010000002

Every receipt and electronic invoice in Uzbekistan must carry the IKPU code (MXIK in Uzbek) of what was sold. The national catalog holds more than 441,000 codes, and the official search finds the right one only if you type the name exactly the way the catalog writes it. We built Tasnif by Krafta, a free search that understands everyday words in Russian, Uzbek and English. Here is how it works, and how we check that it gets the code right.

Why the official search comes up empty

We collected 155 searches from everyday work: a coffee shop owner adding a cappuccino to the till, a barber adding haircuts, a shop adding sugar and diapers. For each one we found the right code in the catalog, then ran all of them through the official search at tasnif.soliq.uz (September 2026).

  • The right code was among the first three results 23% of the time.
  • 70% of the time the search found nothing at all.
  • Of 40 dishes and drinks made in cafés, it found the right code for one.

The official search looks for the catalog's own words. It finds «подгузники» (diapers), because that is what the category is called. It does not find «капучино», «плов», «шаурма» or «стрижка» (cappuccino, plov, shawarma, a haircut): the catalog files a café cappuccino as «Безалкогольные напитки, кофе и кофесодержащие напитки, приготовленные в заведении общественного питания», roughly "soft drinks, coffee and coffee-based drinks made in a catering establishment". Its suggestions missed too: for cappuccino, biscuits with a cappuccino filling and a baby bodysuit; for a haircut, washing powder; for plov, a plov spice mix and dry floor screed.

A product, or something you make yourself

The most common mistake is using a product code for something you make or do yourself. A cappuccino made by a barista and a box of cappuccino sachets on a shelf have different codes: the first is 10202001010000002 in the catering section, the second is a product. The same goes for a haircut and hair clippers, a massage and a massager, fresh orange juice and oranges.

The mistake costs money: the Tax Code sets a fine of 1% of the goods' value on the document for a code that doesn't match what was sold. So Tasnif by Krafta labels every result as a product, a service or a dish made in a café, and weighs that when it picks the first result.

How the search works

The search works in layers, and each one handles part of the problem.

Words, typos and keyboard layouts

Queries and catalog names are reduced to one common spelling. Cyrillic and Latin script, «ё» and «е», and the apostrophes in «oʻ» and «gʻ» all count as the same, so "kapuchino" and «капучино», "koʻk choy" and «кўк чой» find the same things. The search also reads the new letters of the Uzbek alphabet: ö, ğ, ş, ç.

It also handles the mistakes people really make:

  • a word spelled the way it sounds: «плоф» finds «плов» (plov), «ноудбук» finds «ноутбук» (laptop);
  • a wrong vowel: «алкаголь» (alcohol), «падгузники» (diapers);
  • the keyboard left on the wrong layout: "cnhb;rf" is «стрижка», "vjkjrj" is «молоко» (milk);
  • a Russian word typed in Latin letters: "strizhka", "moloko", "khleb".

A correction only happens for a word the catalog doesn't contain, and only towards a common catalog word, so a correctly spelled search works exactly as before.

Everyday words for every category

The catalog has 14,500 categories, named in classifier language. For each one we used AI to list the words people actually use: for coffee drinks in a café that means cappuccino, latte, raf and americano, in Russian, Uzbek and English. That came to about 167,000 words.

A second AI pass then reviewed every word and removed a fifth of them: the ones that sent people to the wrong place. Ground coffee, for example, carried «растворимый кофе» (instant coffee), and coriander seeds carried «кинза» (fresh cilantro), though instant coffee and fresh herbs each have their own category in the catalog.

Search by meaning

When no words match, the search looks for meaning. The query and every category are turned into a list of numbers, an embedding, and texts with similar meanings end up close together. That way the search finds a category even when its name shares no word with the query.

Answers decided in advance

One word often fits several categories: «стрижка» (haircut) fits both barber services and hair clippers. For each such word, AI decided once which category a business typing it most likely means, and the search puts that category first: a haircut leads to barber services, plov to meat dishes made in a café. Almost 8,000 shared words were settled this way. The answers are stored in the database, so no AI runs while you search.

When a word is genuinely ambiguous (French fries can be a side dish in a café or a frozen product in a shop), the search shows both and leaves the choice to you.

How we check accuracy

Every change is first checked on the same 155 searches and on 37 more that were never used for tuning, which protects against fitting the search to the test. A change goes live only if the results don't get worse. The right answers were chosen from the catalog's descriptions and checked by AI, with disputed cases marked as disputed; they are not a licensed accountant's opinion.

155 searches, September 2026Official searchTasnif by Krafta
Right code first22%84%
Right code in the first three23%95.5%
Nothing found70%0%
Café dishes and drinks: right code in the first three1 of 4040 of 40

On the 37 searches it had never seen, the right code came first 92% of the time and was in the first three 97% of the time. On 29 searches with typical mistakes (typos, the wrong keyboard layout, Latin letters) it came first 83% of the time.

The catalog is updated every day

We load the Tax Committee's official exports every day. New codes usually appear in the search within a day, together with their package codes for the receipt. Switched-off codes are kept too: paste an old code and the search says it has been switched off and suggests active codes from the same category.

What's next

Understanding Uzbek searches better. In our tests, a different search-by-meaning model finds the right category for an Uzbek search 2.5 to 3 times as often as the one we use now.

Important

Tasnif by Krafta is an unofficial service. Before you issue a receipt, check the code against the official catalog at tasnif.soliq.uz. If no code fits, you can request one from the Tax Committee.

Try the search or browse the catalog by group.