A hybrid search engine makes Buglo’s 1,013-product catalogue searchable by meaning, in four languages
That catalogue, along with the technical norms behind it, could only be searched by exact keyword match, in Polish. Architects and sales staff querying in another language, or describing what they needed rather than quoting the catalogue's own wording, got nothing back.
Challenge
- Buglo’s 1,013-product catalogue could only be searched by exact keyword match, in Polish.
- Landscape architects and sales staff querying in English, German or other languages got no relevant results.
- Technical norms and specifications lived in separate PDF, DOCX and MD files, with no way to ask a question and get a sourced answer.
- The catalogue and its documentation needed to keep growing, and the brief required a design that would absorb that growth without an architecture rebuild.
Approach
- Building a hybrid retrieval engine combining BM25 keyword matching, OpenAI embeddings and a locally hosted BGE V2M3 reranker, with a configurable similarity threshold.
- Delivering multilingual search across four languages: Polish, English and German as contracted, plus Hungarian.
- Indexing the full 1,013-item product catalogue from Buglo’s own API through full, incremental and single-product reindex endpoints.
- Building a separate knowledge base for PDF, DOCX and MD documents, piloted on a dozen-plus technical norms, with versioning, an audit log and a newer-over-older precedence rule.
- Adding a natural-language question endpoint over the knowledge base that cites the specific source page behind each answer.
- Delivering the module as a stand-alone backend with a stable, documented API, token-based authentication and separate user and admin roles.
- Exposing search as a documented endpoint intended for reuse by Buglo’s other tools, with Buglo’s own developers building the front end and embedding it in their platform, as agreed in the scope.
- Keeping the pilot to text-based retrieval and external model APIs: image-based similarity search and on-premise model hosting were explicitly outside the agreed scope.
Outcome
| • Delivered in two weeks from kick-off, as contracted.
• Full catalogue reindex completes in under twenty seconds. • Knowledge-base question answering returns a cited answer in around eight seconds. • Multilingual coverage shipped in four languages, one more than the three contracted. • Client pilot testing over one week raised no blocking defects. Buglo’s technical lead rated the code, endpoints and documentation positively. • Repository and documentation handed over at close, with rights to the work built specifically for Buglo transferred as agreed. • Acceptance was defined as a final demo run against query sets prepared by Buglo – passed. • Buglo is scoping a second phase covering sales-team automation, with budget discussions under way from September 2026. |
Product growth outpaced Buglo’s keyword-only search
A catalogue that keeps expanding cannot stay tied to a search box built for its current size. Buglo’s own requirements set the bar at five times today’s volume, without an architecture rebuild.
The catalogue lives in a Postgres database behind Buglo’s own product API, with product photos hosted separately and pulled into the same JSON feed. New products and modifications are added every two to three months, so a system sized only for the catalogue’s current volume would have been out of date within a year.
The same pressure applied to the technical norms behind each product. Finding a specific clearance measurement or safety requirement meant opening the right PDF among dozens and searching it by hand, a task that only got slower as the document set grew alongside the catalogue.
Hybrid search matches meaning, not just exact words
A catalogue described in one language cannot be found by someone searching in another, and a single retrieval method rarely satisfies both a precise technical query and a loose, descriptive one. Both problems needed solving before search results could be trusted.
The core retrieval engine combines BM25 keyword matching with OpenAI embeddings, then re-ranks the combined result with a locally hosted BGE V2M3 reranker, for which a single small GPU instance is sufficient. It is the only model running locally rather than through an external API, with on-premise model hosting left out of scope for the pilot. Each result carries a similarity score between 0 and 1, with a configurable minimum threshold, so Buglo decides how strict a match has to be rather than have that decision fixed in code.
Multilingual coverage was contracted for Polish, English and German. The delivered build added Hungarian as well, translating queries into Polish before matching so the keyword layer, which performs best in Polish, still contributes to results in other languages — which also means a further language is a configuration change rather than a rebuild. Image-based similarity search was deliberately left outside the agreed scope, which is part of what kept the pilot to two weeks.
The product index is rebuilt from Buglo’s own API through three separate endpoints: a full reindex, an incremental sync for new or changed items only, and a single-product refresh. Under demo conditions, a full reindex of the 1,013-item catalogue completed in under twenty seconds, so Buglo’s administrators can refresh the index on demand rather than wait for a scheduled job. Search is exposed as a documented endpoint intended for reuse by Buglo’s other tools, which was a requirement in the original scope; the front end itself was built by Buglo’s own developers and embedded in their platform.
Norm documents answer questions with a citation
A search engine for products does not answer a question about a safety norm buried inside a PDF. That gap sat inside Buglo’s original brief from the outset: a knowledge base over its internal documentation, scoped alongside the product search itself.
The knowledge base module supports upload, update, versioning and deletion of PDF, DOCX and MD documents, piloted on a dozen-plus technical norm documents in Polish, German and English. Every change is written to an audit log recording who changed what and when, and a newer-over-older precedence rule means an updated norm outranks the version it replaced, rather than both surfacing side by side.
Two endpoints sit on top of that base. A search endpoint returns the matching document fragments directly; an ask endpoint answers the question itself, citing the specific source page rather than returning a raw excerpt, which narrows the model’s room to invent an answer that is not in the document. In testing on a developer machine, a question about the minimum clearance for a single-seat swing returned an answer sourced to the exact norm it came from in around eight seconds.
Access to both modules runs through token-based authentication with two roles: tokens issued on Buglo’s side are decoded by the backend, so any authenticated user can search, while document upload, updates and full reindexing are restricted to administrators. That separation was a specific requirement in the original brief rather than an afterthought, since the same backend now handles both a search feature and an administrative document pipeline.
Buglo’s technical lead signed off the backend after a week of testing
A pilot is only as good as what happens when the client tries to use it against real data. Acceptance was tied to a final demo on query sets prepared by Buglo rather than to a fixed accuracy threshold, and after that demo Buglo’s technical team spent a week testing the delivered backend before either side called the project finished.
Testing surfaced one infrastructure constraint rather than a defect: Buglo’s hosting setup would not run the search backend alongside its vector database on a single instance, so the two were separated. The reranker ran on CPU during that pass, with additional compute flagged as a possible next step rather than a blocker, and no blocking defects were raised. The repository and documentation were handed over to Buglo’s team at close, with rights to the work built specifically for Buglo transferred as agreed.
A second phase now targets sales-team automation
A pilot that works settles one question and opens another: what the next phase should cover. For Buglo, that answer arrived within days of the pilot’s close.
The next step under discussion is automation for the sales team. Buglo is consolidating its own product and pricing data across internal systems first, work already underway on its side, with the same product embeddings pipeline built for the search module set to be reused rather than replaced. Budget discussions for the wider programme are under way from September 2026.
The semantic search pilot resolved the immediate catalogue and document search problem, but it also built a shared vector index and API pattern. Both sides are planning the next phase around it, so the engineering work behind the search module carries forward into the next build rather than starting over.