JSJorge Sebastián Soriano ES

Case study · Information retrieval

A catalogue that answers, without a language model

Internal search tool for customer service at a manufacturer of shower screens, shower trays and taps. It understands queries with typos, opening sizes and natural language questions, and gives the answer instead of a list.

Where it's used
Customer service at a shower screen and tap manufacturer
Status
In use by customer service
My role
Which questions to answer, rules, design, testing and maintenance. Code with AI
Technologies
Client-side JavaScript, Python for the data, BM25, edit distance
Direct answer with price and stock per variant
Demo: price and stock for the exact variant. Synthetic data.

The problem

Customers describe the product in their own way: with an incomplete code, the model misspelt, the size of their opening instead of the nominal size, or a sentence like “the tap is leaking”. The information needed to answer was spread across catalogues, spreadsheets, PDF product sheets and the management system, and finding it depended on each agent's experience.

The goal: a single text box that understands the query and, when it can, gives the answer.

What it does

Querywith typosExact code?goes to product pageInterpretermodel, size, finishDirect answerprice, spare part…Index + BM25safety net
  • Price and stock per variant, with buttons to narrow it down.
  • Opening instead of nominal size. A 118 cm opening is covered by the 120 size thanks to its adjustment range; if no size covers it, it suggests other models.
  • Spare parts with a finish wildcard: it shows only the finishes that exist, with price and stock.
  • Clickable exploded view and tray ↔ screen compatibility in both directions.
  • FAQ with industry synonyms and an assistant with memory that fills in what is missing from the previous question.

Answer before list

What it understood

You type “cierso 120 negor”. It replies: “Understood: price · model CIERZO · size 120 cm · finish matte black”, and shows that it corrected “cierso” and “negor”.

  • No backend, no language model. Everything runs in the browser. It is deterministic, costs nothing per query and works offline.
  • Explainability. Every answer says what it understood and which typos it corrected. The agent spots a misinterpretation instantly.
  • Simple techniques, well combined. An inverted index with field weights, bounded Damerau-Levenshtein for typos and BM25 with synonym groups. The FAQ threshold requires two terms or a recognised concept, so it does not answer on a single stray word.
  • Data separate from code. The catalogue is a generated JSON file; updating it does not touch the program.

What is real and what is demo

PartIn the demoDetail
Catalogue, prices and stockSynthetic270 products, 88 spare parts and 28 FAQs generated with a fixed seed.
Company, models and sales repsSyntheticFictitious brand; .test emails and 000 phone numbers.
Interpreter, index, FAQ and assistantRealSame logic, written from scratch for the demo.
ERP integration, real-time stock and usage loggingNot includedThey exist in the original.

Results

79automated testsdataset, engine, FAQ, answers and assistant
€0cost per queryno API or server
270synthetic productsdemo catalogue

I do not publish usage or performance metrics for the original tool.

Limitations and next steps

  • The interpreter is rule-based: a very different sentence falls back to general search.
  • Next step: evaluation with a set of labelled queries (intent precision and MRR) and synonyms learnt from queries with no results.
  • When it needs to go beyond the structured catalogue, add semantic search over documents.

Demo screenshots

All with synthetic data. The demo interface is in Spanish.

Price and stock per variant
Price and stock per variant
An opening that no size covers: it suggests another model
An opening that no size covers: it suggests another model
Clickable exploded view with variants and stock
Clickable exploded view with variants and stock
Tray ↔ screen compatibility with the rule shown
Tray ↔ screen compatibility with the rule shown
FAQ with industry synonyms
FAQ with industry synonyms
Assistant that remembers the context
Assistant that remembers the context
Mobile view
Mobile view
How it works, layer by layer
How it works, layer by layer