The existing 2-product comparison view, and my spreadsheet for comparing multiple products at a time.
Left: Venn diagrams become hard to parse after >4 items. Right: An UpSet data visualization is more effective at showing what is contained in each existing combination.

Table Comparison
- Limited Screen Space: Mobile screens are small, making it difficult to fit multiple columns without forcing users to zoom, scroll excessively, or lose context.
- Horizontal Scrolling Issues: Tables often require side-scrolling, which breaks the goal of visual comparison at a glance. It's also unfeasible if designing for unlimited comparisons, which would leave the user side-scrolling to infinity.
- Legibility Challenges: Skincare ingredient names are long, and squeezing them into table cells can lead to truncation, tiny fonts, or overwhelming walls of text.
- Touch Interaction Constraints: Tapping or selecting table elements can be tricky on mobile, leading to usability issues, especially for users with accessibility needs.
- Space poorly allocated: A lot of space is used to show the partial overlaps, which are the least important pieces of information.
- Not easily digestible: These visualizations compress information quite efficiently, but are still not instantly intuitive.
- Not the end goal : A visualization is still only an intermediary to the user's end goal of identifying a particular ingredient or set of ingredients.
The most commonly used tool for comparison is a table. The grid structure makes scanning across multiple products very easy, and people are very familiar with how to digest information in a table. However, tables are a challenge on mobile:
A matrix chart addresses some of these issues, but still requires theoretically infinite side scrolling for unlimited comparisons. However, I liked the idea of visual representations to reduce text-in-viewport, so I started thinking about data visualizations.
Ingredient Relation Visualization

I considered using a visualization to reduce cognitive load and orient the user on the overlaps between different products
Initially, I thought this could be an effective way to give the user control in selecting exactly which overlap or exclusion they were interested in (e.g. "Show me which ingredients are unique in the product that triggered a reaction" or "Show me what's shared across all products I use").
However, I realized for the core problem of identifying safe skincare products, users typically don't care about partial overlaps (e.g., ingredients appearing in some but not all products). Instead, they focus on what’s uniquely different or universally shared. That meant presenting a visualization more challenges than solutions:
Thinking about the user's end goals helped me create an information hierarchy. That dictated how to allocate screen space, which led to my ultimate solution.