How AI Sees Your Fashion Preferences Evolve

How AI Sees Your Fashion Preferences Evolve

Mapping Your Style Journey

The Moonsift product space

Many users of our popular Wishlist & Gift List Maker Chrome Extension have enjoyed sharing their curated lists through the Moonsift Explore page. We've decided to analyse this treasure trove of user data to identify emerging shopping trends and unlock insights into how people really discover products.

This dataset's value lies in two key features: it contains products from across the internet rather than just one site, giving us an unprecedented look into user behaviour and the complex product discovery problem. Secondly, it's composed of products users have saved—a more nuanced action than "add to basket" or "purchase", yet far more valuable than a simple "click" or "view".

To reveal trends in this data, we conducted an embedding analysis. An embedding assigns each product unique coordinates in a high-dimensional space, the Moonsift product space. Here products with similar characteristics cluster together; a green dress sits near a green top, but far from a blue handbag. We used FashionCLIP, an open-source model fine-tuned for fashion, to calculate these embeddings.

While our embeddings exist in 512 dimensions, we can use a technique called UMAP to flatten them and visualise the Moonsift product space:

A 2 Dimensional map of clusters of products in the Moonsift dataset

Notice the three key clusters: textiles (top left), accessories (right), and shoes (bottom left). Within textiles, we see sub-clusters of granular fashion concepts—denim, matching sets, and long-sleeved tops each finding their own neighbourhood.


Shopping journeys: what are they?

A shopping journey over time

The save action ties each product to a user, allowing us to track shopping behaviour over time across multiple websites. This gives us a complete view of a user's shopping journey—the sequence of products they interact with while navigating toward a purchase decision.

These journeys take different forms. Some users begin with a specific ideal product in mind, gradually converging toward it. Others start browsing without a clear target. Regardless of initial intent, shopping journeys are characterised by goal refinement over time, where users gradually narrow their preferences through successive interactions.


Capturing user behaviour mathematically

Given that different regions of the product embedding represent different product features, we hypothesised that a user's shopping journey would exhibit a consistent direction in the embedding space as they navigate towards an ideal product. If we can pick up on this directional trend it's a valuable insight in itself, as these embeddings were in fact initially designed for classification, and this shows that they have other more dynamic uses in this context. Moreover, if we can identify the direction itself, we might expect this to point in the direction of a user's ideal product—this would tell us how the user's preferences are nudging towards what they really want, a valuable insight for product recommendation.

To identify this signal, we need some maths. We employ a metric we invented for this task called Directional Cosine Similarity (DCS)—the cosine of the angle between sequential direction vectors in a shopping journey, where direction vectors are calculated as the difference between sequential product embeddings.

Diagram indicating Directional Cosine Similarity

For those so inclined here's the formal definition:


DCS gives us a value between -1 and 1 which directly quantifies how aligned each section of a shopping journey is—the closer to one, the more aligned the segment. Now that we have this precise value, all that's left is to compare random journeys to our real journeys and see if the real ones have a higher average DC, thereby showing that user shopping journeys exhibit directional alignment in the product space.

Stylised real and shuffled journeys projected into a 2D space

We shuffled journeys to effectively simulate random journeys that control for things like journey length which might affect the DCS. We plotted the distribution of the DCS of each 3-product segment in every journey against the DCS of every 3-product segment of the same journeys shuffled.

Graph of directional cosine similarity for shopping journeys and shuffled journeys.

And the results are in! By plotting the Cumulative Distribution Function (CDF) we can see that the average real journey has a lower DCS than the average shuffled journey.

What this means for you

This means our hypothesis was correct, users do tend to move in consistent directions in the product space during their shopping journey. In practical terms this means that not only do user's preferences evolve over time, but they change in a consistent and quantifiable manner. When you save that flowy midi dress, then a structured blazer, then tailored trousers, you're not just collecting random items. You're unconsciously navigating toward a refined vision of your personal style, revealing patterns in your preferences that even you might not fully recognise.

We've proven mathematically that users naturally evolve and refine their tastes as they explore. This insight is uniquely powerful because Moonsift captures your complete shopping story across the entire internet—something no single retailer can see. These preference evolution patterns are already informing our AI shopping copilot development, enabling recommendations that anticipate where your style is heading rather than just matching where you are now.


Thanks

The authors wish to thank David Sterratt at the University of Edinburgh for discussions around this project. This project used a dataset of publicly available items saved to Moonsift during 2024 and 2025.

The Moonsift product space

Many users of our popular Wishlist & Gift List Maker Chrome Extension have enjoyed sharing their curated lists through the Moonsift Explore page. We've decided to analyse this treasure trove of user data to identify emerging shopping trends and unlock insights into how people really discover products.

This dataset's value lies in two key features: it contains products from across the internet rather than just one site, giving us an unprecedented look into user behaviour and the complex product discovery problem. Secondly, it's composed of products users have saved—a more nuanced action than "add to basket" or "purchase", yet far more valuable than a simple "click" or "view".

To reveal trends in this data, we conducted an embedding analysis. An embedding assigns each product unique coordinates in a high-dimensional space, the Moonsift product space. Here products with similar characteristics cluster together; a green dress sits near a green top, but far from a blue handbag. We used FashionCLIP, an open-source model fine-tuned for fashion, to calculate these embeddings.

While our embeddings exist in 512 dimensions, we can use a technique called UMAP to flatten them and visualise the Moonsift product space:

A 2 Dimensional map of clusters of products in the Moonsift dataset

Notice the three key clusters: textiles (top left), accessories (right), and shoes (bottom left). Within textiles, we see sub-clusters of granular fashion concepts—denim, matching sets, and long-sleeved tops each finding their own neighbourhood.


Shopping journeys: what are they?

A shopping journey over time

The save action ties each product to a user, allowing us to track shopping behaviour over time across multiple websites. This gives us a complete view of a user's shopping journey—the sequence of products they interact with while navigating toward a purchase decision.

These journeys take different forms. Some users begin with a specific ideal product in mind, gradually converging toward it. Others start browsing without a clear target. Regardless of initial intent, shopping journeys are characterised by goal refinement over time, where users gradually narrow their preferences through successive interactions.


Capturing user behaviour mathematically

Given that different regions of the product embedding represent different product features, we hypothesised that a user's shopping journey would exhibit a consistent direction in the embedding space as they navigate towards an ideal product. If we can pick up on this directional trend it's a valuable insight in itself, as these embeddings were in fact initially designed for classification, and this shows that they have other more dynamic uses in this context. Moreover, if we can identify the direction itself, we might expect this to point in the direction of a user's ideal product—this would tell us how the user's preferences are nudging towards what they really want, a valuable insight for product recommendation.

To identify this signal, we need some maths. We employ a metric we invented for this task called Directional Cosine Similarity (DCS)—the cosine of the angle between sequential direction vectors in a shopping journey, where direction vectors are calculated as the difference between sequential product embeddings.

Diagram indicating Directional Cosine Similarity

For those so inclined here's the formal definition:


DCS gives us a value between -1 and 1 which directly quantifies how aligned each section of a shopping journey is—the closer to one, the more aligned the segment. Now that we have this precise value, all that's left is to compare random journeys to our real journeys and see if the real ones have a higher average DC, thereby showing that user shopping journeys exhibit directional alignment in the product space.

Stylised real and shuffled journeys projected into a 2D space

We shuffled journeys to effectively simulate random journeys that control for things like journey length which might affect the DCS. We plotted the distribution of the DCS of each 3-product segment in every journey against the DCS of every 3-product segment of the same journeys shuffled.

Graph of directional cosine similarity for shopping journeys and shuffled journeys.

And the results are in! By plotting the Cumulative Distribution Function (CDF) we can see that the average real journey has a lower DCS than the average shuffled journey.

What this means for you

This means our hypothesis was correct, users do tend to move in consistent directions in the product space during their shopping journey. In practical terms this means that not only do user's preferences evolve over time, but they change in a consistent and quantifiable manner. When you save that flowy midi dress, then a structured blazer, then tailored trousers, you're not just collecting random items. You're unconsciously navigating toward a refined vision of your personal style, revealing patterns in your preferences that even you might not fully recognise.

We've proven mathematically that users naturally evolve and refine their tastes as they explore. This insight is uniquely powerful because Moonsift captures your complete shopping story across the entire internet—something no single retailer can see. These preference evolution patterns are already informing our AI shopping copilot development, enabling recommendations that anticipate where your style is heading rather than just matching where you are now.


Thanks

The authors wish to thank David Sterratt at the University of Edinburgh for discussions around this project. This project used a dataset of publicly available items saved to Moonsift during 2024 and 2025.