Bloomreach Grid Editor
Bloomreach Grid EditorMaking AI merchandising visible and safe

Bloomreach Grid Editor

Redesigning Bloomreach's Product Grid Editor so ranking logic, visual merchandising, content placement, and real-time preview lived in one operational workspace — an interface where algorithmic ranking and human merchandising judgment could work together.

Role
Senior Product Designer
Client
Bloomreach
Timeline
July 2022 – February 2023

Bloomreach's search engine could rank and personalize thousands of products automatically. But ecommerce teams still needed to intervene. Campaigns change. Inventory moves. New products launch. Business priorities shift. Sometimes the product a merchandiser needs to promote isn't even part of the result set the algorithm would naturally return.

The challenge wasn't replacing automation with manual control. It was building an interface where algorithmic ranking and human merchandising judgment could work together. I led the redesign of the Product Grid Editor, bringing ranking logic, visual merchandising, content placement, and real-time preview into one operational workspace.

The editor in motion — start from a query, move a product, lock its position, and watch the grid settle around it.

Role & Impact

Led the end-to-end design process, from defining the problem and success metrics in close collaboration with PMs and engineers.

Interaction Model
Defined the interaction model and streamlined workflows for creating, previewing, and refining product rules with ease.
Design System
Created the visual language and scalable design system that unified the merchandising suite and accelerated development.
Conflict Resolution
Designed visual indicators and conflict-resolution tools to bring clarity and transparency to AI-driven decision-making.
Interaction Specs
Led detailed handoff documentation and interaction specs to ensure accurate, high-fidelity implementation with engineering.
Merchandising Controls
Designed the controls that balance human intent with algorithmic ranking — position locks, boosting, and Add to Recall.

The grid became the control surface

The redesign started by changing the relationship between configuration and result. Instead of asking merchandisers to configure logic in one place and inspect its consequences somewhere else, I made the product grid itself the primary workspace — the result set became the thing you edited directly.

Merchandisers could work with the grid the way they thought about the page: boost or bury a product, exclude it, lock it into an intentional position, add a missing product into recall, or apply a product- or attribute-based rule — and see the effect immediately.

Attribute-based boosting — an “if brand = X, boost” rule expressed against the live grid instead of a separate rules console.
One workspace, whatever the catalog — ranking logic, placement, content, and preview in a single view.
One workspace, whatever the catalog — ranking logic, placement, content, and preview in a single view.

One page. Three different systems.

What that replaced was a workflow split across three legacy environments. Ranking Rules was engine-level and largely text-driven — conditional rules like if Brand = X, boost by 1.5 that shaped the whole grid but lived apart from the page itself. Visual Merchandising gave the opposite: you could drag tiles and pin positions, but the global ranking logic wasn't visible beside those moves. And a third, slot-based environment handled banners and inline marketing content as a parallel system — even though shoppers experienced products and content together.

A merchandiser had to hold ranking logic, product placement, and content placement across three interfaces in their head and reconcile them mentally. I wanted the product to behave like the page they were actually building.

The old Product Grid Editor — ranking, boosting, and layout in separate views
The old Product Grid Editor — ranking, boosting, and layout in separate views
An earlier iteration of the same — disconnected surfaces a merchandiser had to jump between
An earlier iteration of the same — disconnected surfaces a merchandiser had to jump between

Different ways in, one intent

Because a single merchandising model now sat under the grid, different workflows could start differently and still resolve to the same result. You could act on one product card, select products in bulk, drag within the grid, or bring a product in from the supporting panel. The interaction changed; the intent didn't.

The logic underneath — how a bulk operation resolves against existing rules, locks, and recall before it ever touches the grid.
Single-card actions — boost to top, bury to bottom, lock a position, or block, straight from the card.
The same actions applied in bulk, with the operation's limits surfaced at the point of selection rather than discovered after it.
Drag to reorder, then lock a product in place — the grid keeps adapting around what a merchandiser has fixed.

Balancing business intent with algorithmic ranking

The hardest problem wasn't drag-and-drop. It was deciding how much control a merchandiser should have over an intelligent system. Some wanted fine-grained control over nearly every product; others preferred to let the algorithm do most of the work and step in only where strategy demanded it. The interface had to serve both.

Position locking became the way to express that balance. A merchandiser could intentionally place or lock specific products while the rest of the grid kept adapting around those choices — preserving a campaign, a launch, or a commercial priority without hand-designing every position on the page.

Precise human control where it mattered. Algorithmic optimization everywhere else.

Sometimes ranking isn't enough

One small feature shows how deep merchandising goes: Add to Recall. Boosting only reorders products already eligible to appear. Picture a merchandiser launching a new promotional product — they might boost it hard, but if the search algorithm doesn't consider it relevant to that query or category, there's nothing to boost. It isn't in the recall set at all.

Add to Recall gives them an explicit way to introduce it. Once the product is in the result set, they can decide how prominently it shows using the rest of the system. That's where the editor moved past rearranging tiles and became a way to express business intent directly against algorithmic search behavior.

Rules needed context, not more complexity

The editor also had to carry the less visual side of merchandising. Rules could run against searches or categories, target different audiences or durations, and use products or attributes as conditions. Rather than flatten all of that into one dense configuration surface, I organized the experience around the context users were already thinking in — start from a query or category, refine who and when it applies to, find the relevant products or attributes, and watch the effect resolve back in the same visual grid.

Reviewing pending changes — exactly what moved and where
Reviewing pending changes — exactly what moved and where
Setting audience and duration — who a rule serves and when, in plain controls, not raw syntax
Setting audience and duration — who a rule serves and when, in plain controls, not raw syntax

Real products have to explain conflicting states

A happy-path editor wasn't enough. Rules overlap. Changes arrive from elsewhere in the system. A manually placed product interacts with a global rule. A product added to recall inherits other behavior. Bulk operations run into practical limits. So the design had to communicate not only what the user had done but what other forces were shaping the result — states for conflicts, external changes, recall behavior, and system limits, all readable without leaving the editor.

Trust in an enterprise tool is built at the edges.
The product card as a system — default, hover, selected, menu-open, and the “already in grid” state, drawn so unexpected outcomes stay legible.
The product card as a system — default, hover, selected, menu-open, and the “already in grid” state, drawn so unexpected outcomes stay legible.

Designing a system, not a screen

Unifying three legacy environments also meant unifying years of interaction patterns. Product cards, selection states, merchandising actions, rule states, conflict messaging, drag behaviors, filters, and feedback all had to feel like parts of one product. I worked them as a system rather than solving each feature on its own, so the foundation could keep evolving after launch.

That system got built while the features shipped, not before them — established in motion, on a live product, rather than handed down from a finished spec. It's slower and more political than a clean foundation. On a product already in customers' hands, it was the only way it was going to happen.

The design system, built in motion — tokens, controls, and merchandising patterns established while the features shipped.
The design system, built in motion — tokens, controls, and merchandising patterns established while the features shipped.

Shipping was part of the design

The Product Grid Editor wasn't a speculative redesign. It shipped, and it's used by real Bloomreach customers. I stayed the primary designer through implementation — resolving interaction details with engineering, testing edge cases, and adapting the system as production exposed constraints that weren't visible in Figma. The reasoning ran at both ends of the project: early whiteboards where the interaction model first took shape, and weekly testing that kept it honest against how merchandisers actually work.

Early user feedback, logged — captured from real merchandisers
Early user feedback, logged — captured from real merchandisers
Low-fidelity whiteboarding — where the model was first argued out
Low-fidelity whiteboarding — where the model was first argued out

What I took away

Simplifying complex software doesn't always mean removing complexity. Merchandisers needed sophisticated controls because the decisions they were making were sophisticated. The more useful goal was to make that complexity easier to reason about — to keep the relationships between action, state, system behavior, and outcome clear. When those are legible, a product can stay powerful without making people feel like they're operating the machinery underneath it.

“Anthony brings thoughtfulness and taste to everything he touches. His work just elevates the whole experience.”
Albert Wang — Design Director, Bloomreach
Deliverables
Product strategy support & UX
Interaction design & prototyping
Visual design
Design system foundations
Testing & implementation
Team
Anthony Nguyen — Sole primary designer
Albert Wang — Design Director
Sarika Kumari — Product
Apoorva Nagasundara — Product
Ashok Sathyanarayan — Development
Digant T — Development

Bloomreach Grid Editor case study

Remi

Hey — I'm Remi, Faculty Studio's AI assistant. Anything catch your eye?