An ML application that analyzes your skin tone to generate personalized color palettes, rethinking how we approach beauty and self-expression by grounding it in science instead of guesswork.
As teenagers navigate physical and mental growth, 87% report feeling pressure around appearance (Pew Research Center). A problem that doesn't start from vanity, but uncertainty.
During a transformative period of life, young people are trying to understand who they are, including how to express themselves authentically, yet finding the right makeup and clothing colors remains a frustrating, trial-and-error process.
I gathered 77 survey responses from Reddit and Slack communities focused on personal style and fashion. The data pointed consistently toward a single root cause: people weren't making bad decisions—they were making decisions without information.
Without a framework for what works for them, users defaulted to trend-chasing—buying what looked good on models rather than what would work with their own coloring.
Existing tools offered generic seasonal color theory but couldn't account for individual skin undertones, hair, and context: the things that actually determine what flatters someone.
63 of 77 respondents described repeated impulse purchases they later regretted, often involving colors that seemed appealing in isolation but didn't work with anything they owned.
Chroma uses machine learning to analyze an uploaded photo and extract the user's skin tone. It then generates a personalized color palette, warm tones, cool tones, accent colors, paired with guidance on how to apply them across clothing, makeup, and accessories.
Built with MatPlotLib and Python, the ML model extracts dominant skin tone values from uploaded images and maps them to a color temperature spectrum. Warm, cool, neutral, and deep classifications drive the palette generation.
The Flutter app delivers results as a visual palette with swatches, recommendations organized by category (clothing, makeup, home), and a personal style guide users can reference when shopping or getting dressed.
Chroma's own brand identity uses Figtree typography and a pastel-forward design system, designed to feel inclusive and approachable rather than clinical or aspirational.
Each user receives a curated set of colors mapped to their specific skin profile, not a pre-set seasonal bucket, but a genuinely personalized palette generated from their photo.
The algorithm could identify skin tone values accurately, but raw data meant nothing to users. The design challenge was translating model output into language and visuals that felt personally meaningful, not technical.
Early model training skewed toward lighter skin tones, a common bias in computer vision datasets. Addressing this wasn't just a technical fix; it required rethinking the entire data pipeline with representation as a core requirement.
Color preference can't be fully predicted by skin tone and users wanted the palette as a starting point, not a prescription. The best version of Chroma gives people a foundation and the freedom to diverge from it.