Say you're shopping for a women's winter jacket in late October. You have a rough idea of what you want, something warm that fits and doesn't blow your budget, but you're also open to ideas, and you might be curious what people are actually wearing this season or whether there's a style everyone seems to be reaching for.
A good shop assistant would pick up on that without being asked. They might mention that military jackets are everywhere this fall and then hand you the plain wool coat you came in for. A bad one would steer you toward whatever they'd been told to push that week.
We wanted Agora to behave like the good one. In this post we'll walk through how we bring what's happening in the world right now into your search results, along with a few of the things we got wrong along the way.
Why this is hard
The first challenge is staying current. Shopping is seasonal and cultural, and a ranking system that only measures how well a product matches your words will happily show you last year's jacket, because nothing about the words "winter jacket" has changed since then. Those results are technically correct, but they feel out of date.
The second is keeping the focus on what you actually asked for. What's popular isn't necessarily what's right for you, and if trends get too much weight, a store slowly turns into a feed of whatever is getting attention while the thing you searched for slides off the page. We ran into exactly this problem in our own system, and we'll come back to it later.
The third, and probably the trickiest, is trust. A lot of what reads like trend coverage is paid for in one way or another, whether that's sponsored articles, affiliate roundups that earn a commission on every click, seeded reviews, or influencer posts that are really ads. In other words, a "trend" can be manufactured by any brand with a big enough marketing budget.
That matters more for us than it does for most stores. Agora doesn't hold inventory, doesn't sell products of its own, and doesn't take money for ranking, and that independence is a big part of why our results are worth trusting. Compare that with Amazon, where a Consumers' Checkbook test of 50 products found that, on average, 54% of the first 25 search results were paid placements. If brands could buy their way into our trend picks, we'd essentially have rebuilt the ad slot through a side door.
So the trend system has to do three things at once: it has to be current, it has to be hard to fake, and it can never override what you actually searched for.
Finding trends for a specific search
We look up trends for each specific search rather than for a whole category. A search for a winter jacket gets jacket trends and a search for Halloween costumes gets costume trends, because something as broad as "clothing" isn't useful here. Sneaker trends won't tell you much about costumes.
The first time anyone searches for something, we look up trends on the spot so that even the very first shopper sees them. We only read US news coverage from the last 30 days, which keeps what we find tied to this season rather than last year.
Where we read matters just as much as when. We stick to publishers that know the category, so fashion searches draw on fashion and beauty publications, tech searches on tech reviewers, and home searches on kitchen and home publications. On top of that, we read major news outlets and retail trade press, and we pull in a couple of recent YouTube videos, which we keep in their own slot so they never crowd out written coverage.
Before the model reads anything, we filter the sources:
We remove pages labeled as sponsored or affiliate content.
We remove duplicate pages.
We set aside pages aimed at readers in other countries.
We set aside pages without a publish date, since we can't tell whether they're current.
We cap how many pages can come from any one website.
Two of these rules do most of the work against paid content. Dropping labeled sponsored pages catches the paid coverage that announces itself, and capping each site makes unlabeled paid coverage much less useful, because while a brand can buy a placement on one site, buying matching coverage across several independent publications in the same month is a lot harder.
Once we've found trends for a search, we save them so the next people who search for the same thing get them instantly, and we refresh them every day.
Making sure a trend is real
An AI model reads the articles and pulls out what's trending, and for every source it cites, it has to copy the exact words from that article. Here's what the output looks like for a winter jacket search, where you can see that each trend is backed by exact quotes from two different articles:
{
"trends": [
{
"name": "military jackets",
"search_term": "military jacket women",
"why": "Several fall guides name the military jacket as this season's outerwear pick.",
"sources": [
{ "index": 0, "quote": "the military jacket is back as the season's go-to layer" },
{ "index": 3, "quote": "military jackets lead this winter's outerwear trends" }
]
},
{
"name": "corduroy blazers",
"search_term": "corduroy blazer women",
"why": "Corduroy tailoring is showing up across this season's trend roundups.",
"sources": [
{ "index": 1, "quote": "corduroy blazers are everywhere this fall" },
{ "index": 3, "quote": "a corduroy blazer is the easiest way into the trend" }
]
}
]
}We don't take the model's word for any of this, though. Every trend has to pass four checks before we'll use it.
It has to be new. If something would have been just as true two years ago, it's not really a trend. "Stainless steel water bottles" is a product type, whereas a specific bottle that several guides are naming this month is a trend.
The quotes have to be real. We search for each quote in the article it supposedly came from, and if we can't find a trend's quotes, we throw the trend out. This stops the model from inventing support for something that merely sounds plausible.
More than one source has to back it. A trend needs support from at least two different websites, or from a single article that's specifically about current trends. One gift guide's pick isn't enough on its own, since it's often just one editor's taste or one affiliate deal.
We have to actually sell it. We check each trend against our catalog, and if we don't carry enough matching products, we don't show it, because a trend only helps you if you can buy it here.
We keep at most six trends per search, and for each one we record which sites backed it and how many of our products match. Trends that fail the catalog check are still saved so we can see what people are talking about that we don't offer yet, but they're never shown to you.
Your search runs untouched
Trends never change what you asked for. When you search for a women's winter jacket, that exact search runs first and on its own terms: we use your words to find products, we use your words to rank them, and no trend words get added along the way.
This is where we ran into the problem we mentioned earlier. In an early version, we tried folding the trend into the search itself, so every result was scored against something like "winter jacket plus military." The result was that plain winter jackets, which were the thing people had actually asked for, got pushed off the page. That was exactly the failure we'd set out to avoid.
So now each trend gets its own separate search. In the winter jacket example, three searches run at the same time: yours for "women winter jacket," one for "military jacket women," and one for "corduroy blazer women." Because they run in parallel, they add very little time to the overall search.
Each trend search follows the same rules as yours:
It matches on both the words and the meaning of the trend, so a listing called "Women's Army Field Coat" still turns up for military jackets.
Your price range and rating filters still apply, and any brands or stores you've said you don't want stay out, so a trend can never bring back something you've ruled out.
Listings that are no longer for sale, or whose current price falls outside your range, are removed before anything gets scored.
Each trend search returns a short list of candidates, and every candidate then has to pass two checks, scored by the same relevance model that ranks your regular results.
The first check asks whether the product is what you asked for. A corduroy blazer might be perfectly on trend, but it isn't a winter jacket, so it scores low and stays out.
The second check asks whether the product is really the trending thing. Searching by meaning casts a fairly wide net, which means the military jacket search can also bring back an ordinary puffer. That puffer might be a perfectly good winter jacket, but since it isn't a military jacket, it doesn't get a trend spot, although it can still appear in your regular results if your own search found it.
Only products that pass both checks make it through. We order those by how well they match your search and keep up to four per trend. Here's how that played out for the winter jacket search, where six military jackets passed both checks and we kept the top four:
{
"query": "women winter jacket",
"trendSearches": [
{
"term": "military jacket women",
"candidates": 12,
"passedYourSearch": 9,
"passedTheTrend": 6,
"kept": 4
},
{
"term": "corduroy blazer women",
"candidates": 7,
"passedYourSearch": 0,
"passedTheTrend": 7,
"kept": 0
}
]
}Every corduroy blazer was on trend, but none of them was a winter jacket, so none of them made it onto the page. That's the balance we're aiming for, where a real trend that doesn't fit your search simply doesn't contribute anything.
Mixing trend picks into results
Once your results are ranked and the trend picks are ready, we combine them into a single list. Most of the page is still your own results, but every third spot (the 3rd, 6th, and 9th on a page of ten) goes to a trend pick. When there's more than one trend, they take turns filling those spots so that no single trend takes all of them.
If there aren't enough good trend picks, your own results fill the gaps, and if your results run out first, trend picks fill whatever is left.
A few more rules keep the page fair. If a trend pick already appears in your results, it keeps its original place rather than showing up twice. When you haven't asked for a specific store or brand, each store gets at most three products, trend picks included, so no single seller can take over the page. We also hide duplicate listings and products you've already seen earlier in the same conversation, and the same mix carries over when you move to the next page.
Being honest about trends
If a trend pick makes it onto your page, the assistant might mention it briefly, perhaps noting that military jackets are getting a lot of attention this fall. It won't rattle off a list of trends at you, and it will never call a product trending just to sell it.
The "why we chose this" note on each product follows the same rule. A product can only be described as fitting a trend if it actually came from that trend and its own listing supports the claim, and every other note sticks to describing the product itself.
What this doesn't solve
This approach has some real limits, and we think it's worth being upfront about them.
The biggest is that not all paid content is labeled. We remove pages marked as sponsored or affiliate, but some publications make money from the products they write about without saying so anywhere on the page. Requiring multiple independent sources and exact quotes makes paid trends much harder to manufacture, but a well-funded campaign that reaches several outlets could still slip through, which is why we treat our source list as something we keep reviewing rather than a solved problem.
Our coverage is also limited to the US for now. Trends in other countries can look very different, and we don't capture them yet. And because trends refresh once a day, something that took off this morning might not show up until tomorrow.
Finally, it's worth remembering that "trending" is a hint rather than a recommendation. A trend pick has passed our checks for fitting your search, but that doesn't automatically make it the best product for you. That judgment still belongs to your regular results, and ultimately to you.
What's next
We started with a fairly simple goal, which was to act like the good shop assistant who mentions what's popular this season and then hands you the coat you actually came in for. From here, we're working on expanding beyond the US and picking up trends faster than once a day. If you ever come across a trend pick that feels off, we'd really like to hear about it.



