13s → <1sfirst paint
Time to first paint dropped from 13 seconds to under one through tabbed segmentation, dynamic filtering, and engineering collaboration.
ESAB's site search had been running on the same custom crawler for years. It knew one thing, the product catalog. The first time we plugged Bloomreach in, it threw up on the page, 13 seconds to first paint and every content type crammed into one view with no hierarchy. Nobody was going to use that.
Strategy
Training an internal model from scratch was a multi-quarter, six-figure bet with high failure risk. Bloomreach gave us a production-ready engine we could shape around our own content without starting from zero. The decision unlocked the timeline; design got to do the actual work.
I segmented the firehose into four buckets that mapped to how users actually think: Products, ESAB University (articles, videos, courses), Documents (catalogs, manuals, spec sheets), and Other for the long tail. Tabs replaced an unstructured infinite list. Cognitive load dropped instantly.
The sidebar shifts completely depending on which tab you're in. Product filters look nothing like document filters, which look nothing like university filters. The UI bends to the content instead of forcing every type through a single generic mold.
Sitting on top of search is E.V.A., ESAB's LLM-powered AI chat assistant, available site-wide for users who want to skip search entirely and just ask a question. Off-topic guardrails, prompt injection protection, and a content scope that's tightly bounded to what the knowledge base can actually answer. EVA flags missing topics; humans decide what to build next.
I worked side by side with the senior front-end dev through the entire process. Not handing off comps and hoping for the best, actually collaborating on what was buildable, what would perform, and where to cut. The 13-to-1-second improvement came out of those conversations as much as it did the design.
Results
Time to first paint dropped from 13 seconds to under one through tabbed segmentation, dynamic filtering, and engineering collaboration.
E.V.A. runs across 16 regional deployments globally in 12+ languages, handling thousands of conversations per quarter.
Factually incorrect responses sit below half a percent of all sessions. The hallucination problem becomes a rounding error with the right design constraints.
My role
Owned the UX and product design for both surfaces, from the IA decision on the four content buckets through the dynamic filter logic, the EVA conversation patterns, the off-topic and prompt injection guardrails, and the analytics taxonomy that classifies unresolved sessions into actionable signal. Partnered closely with the senior front-end dev on what was buildable and where to cut, and with the engineering team on the Bloomreach integration, the multilingual rollout, and the model evaluation loop.
Resolution rates well above three quarters of sessions handled without escalation. The largest unresolved bucket is missing content, things that simply aren't in the knowledge base yet, like spare-parts catalogs and consumable selection guides. The next is out-of-scope by design: pricing, inventory, distributor contacts. Things EVA was never built to handle. Those aren't failures, they're the next sprint's roadmap.
Gallery
Next project
Back to all work