
Most e-commerce collection pages show the same product order to every visitor. High-converting items get buried below the fold. New arrivals never accumulate the impressions they need to prove themselves. Out-of-stock products keep prime real estate. And no merchandising team can keep up by hand across hundreds of collections, refreshed daily, split by region and device.
We've been running an autonomous agent that fixes this in production at FARM Rio for the last couple of months, tuned to their catalog and merchandising rules. Today we're launching it as a product. Same agent, same approach, scoped to your catalog and brand logic, available for any VTEX store.

Every approach to ordering collection pages picks a side of the same trade-off: exploit what's already working, or explore what might work better. Static "best sellers" sorts pick exploitation. The early winners keep winning, the catalog stops exploring, new launches never get a fair shot, seasonal shifts arrive late. Manual curation can balance both, but it doesn't scale past a handful of collections.
Our PLP Optimization Agent takes the trade-off itself as the problem. It models each product's track record and the uncertainty around it, then ranks every collection in a way that lets well-observed winners keep their position while letting uncertain products earn theirs. Both halves run automatically, on data the store already produces.
The agent runs an end-to-end loop. It reads user behavior events from your store's analytics, weighs them by purchase intent (click, add-to-cart, checkout, purchase), trains a ranking model on the most recent data, and writes a new ordering for every collection on a schedule. The ordering is pushed straight into your storefront. The cadence is yours to set: hourly, daily, or anything in between.
Every stage is exposed as a typed MCP tool: fetch_dataset, train_model, predict_ordering. The pipeline is invokable from any agent, workflow, or human operator. On top of the model, the prediction view lets your team stack saved criteria (stock, launches, visual merchandising rules) and push a new ordering live without touching code. Each run is logged, every ordering change is auditable, and any collection can be overridden manually.
The full loop (fetch, train, predict, push) runs on the cadence chosen per brand: hourly, daily, or anything in between. Operators can also trigger runs on demand or set different cadences per collection.
Reward weights, visual merchandising rules (color palette, patterns, brand grouping), stock multipliers, and time-decay for new launches are scoped to your brand.
Every run writes the new ordering straight to the storefront catalog. Products routinely move dozens of positions across a single run when stock or conversion signals shift, with each move auditable per product.
Every run records its input data window, the resulting product scores, and the ordering diff applied to each collection. Easy to inspect, easy to roll back.

The agent is autonomous on the model side. On your side, your team still drives. Every collection has a prediction view: the agent's ranking, with your own taxonomy exposed as toggles. Stock availability, this week's launches, prints, special occasions, beach-ready edits, any saved criterion your team has defined. Layer a criterion on, the ranking recomputes in place. Save a new set, reuse it on the next collection. Hit Apply and the new order goes live in VTEX in one click.
This is the part of the trade-off that pure ML misses. The model finds revenue. Your team brings the taste. The agent gives both a single surface.
The agent has been running on FARM Rio's catalog for the last couple of months, with more than 1,000 ordering changes already pushed live across collections. A controlled A/B test against the platform's default sort confirmed two effects: an increase in add-to-cart rate on the PLP, and an increase in revenue from the same collections.

The same model handles seasonal turnover on its own. When a collection swaps over (new drops, sale events, end-of-season), the calibrated cold start gives the new items their fair shot. When traffic patterns shift across regions or devices, region-specific priors absorb it. No retuning required.
A query reduces raw user interaction events to one row per product. Each session is collapsed into binary event flags (impression, click, add-to-cart, checkout, purchase), then marginal counts and pairwise co-occurrences are aggregated across all sessions where the product was displayed.
The agent updates each product's performance estimate using the recent reward data. New products inherit a calibrated cold-start estimate from the site's own distribution, so they show up high enough to gather signal without dominating the page.
For every product in a requested collection, the system computes a score, sorts descending, and returns the new ordering. Inference takes about 22 milliseconds for a full collection. Region-specific scoring is applied when a region is provided.
Each run writes the new ordering to VTEX through the catalog API. Visual merchandising rules (color palette, pattern grouping, brand display criteria) are applied as a post-ranking pass before the push. The diff is stored, and any collection can be overridden manually.
| Approach | Strength | Weakness |
|---|---|---|
| Manual curation | Full editorial control | Does not scale, slow to adapt, biased by recency |
| Best sellers sort | Simple to ship | Winner-take-all, no exploration, new arrivals stuck |
| A/B testing | Rigorous | Requires manual experiment design, slow to react |
| Greedy / collaborative filtering | Fast convergence | Local maxima, ignores uncertainty, cold-start unstable |
| PLP Optimization Agent | Automatic exploration, calibrated cold start, adapts as data accumulates | Requires an ML pipeline (which this agent ships with) |
Every catalog is different. We scope each implementation around your brand rules, merchandising criteria, and reward weights. The typical setup is a few weeks of work: analytics wiring check, data access, VTEX connector, baseline training, A/B test against your current sort. From there it runs on its own, with full audit and manual override available at any time.
Tell us about your catalog and we'll scope an implementation. The agent runs in production today and we can have a baseline trained against your data in a few weeks.
Subscribe to our newsletter and get the latest updates, tips, and exclusive content delivered straight to your inbox.


