Semantic Search
Engine
A 3-stage multi-agent pipeline that turns natural language into structured product catalog filters. Built as my CS bachelor thesis in collaboration with Stylib.
Why catalog search is hard

Searching a product catalog for architectural materials means wading through hundreds of facets: species, finish, width, thickness, color, supplier. Keyword search fails people who don't know the exact terminology, and filter forms with dozens of dropdowns mostly get ignored.
&meta.optionset.type::Species[io]:oak
&meta.optionset.type::Width[ge]:150
&meta.price[le]:50)
Natural language is the better interface. Users describe what they need the way they would to a colleague, and the system figures out the filters. The hard part is doing that reliably across a taxonomy of thousands of product variants.
This thesis builds and benchmarks a multi-agent solution: one LLM extracts the search intent, a second maps it to catalog filters, and a third validates the result. If the filters are wrong, the pipeline corrects itself and tries again.
3-stage multi-agent pipeline
General flow of the multi-agent system
Entity Agent
Reads the query against an augmented product taxonomy and returns a product category plus a list of logical conditions. Each condition is a concept paired with an expression, like "Color" / "red OR blue".
Filter Agent
Takes each logical condition and maps it to a canonical filter key from the product catalog facets. Runs in a loop: if the Validator finds issues with the key resolution, it gets another attempt.
Validator Agent
Checks whether the generated filters actually answer the original query. When they fall short, it routes the issue back to whichever agent is responsible: the Filter Agent if a key mapping is wrong, the Entity Agent if the intent was misread. Up to 3 retries.
Validator routes issues to Filter Agent or Entity Agent depending on error source · max 3 retries
See it in action
UI walkthrough: natural language query to filtered catalog results