Demi Mai Based in Vietnam
Independent R&D

What if users don’t have to choose colors?

An exploration of how AI can turn human visual intent into an adaptive color system - without exposing the complexity behind it.

TypeIndependent R&D
ProjectAI-native design system
FocusPart 01 - Adaptive color structure
Timeline2025 – present
RoleDesign architect
USER INTENT Accent · Background · Contrast COLOR ENGINE ADAPTIVE COLOR STRUCTURE Accent Environment Content Border Interaction Semantic

The problem

Traditional design systems put the complexity on designers.

In a traditional system, designers manually choose palettes, build scales, define token groups, map semantic roles, define component states, and check contrast - for every brand, every theme.

01Choose palette
→
02Build scales
→
03Define tokens
→
04Map roles
→
05Define states
→
06Check contrast
→
07Apply to components

Users shouldn’t have to think like designers.

Brand A Purple · light environment
Brand B Green · green environment
Brand C Orange · dark environment
Brand D Enhanced accessibility

How can we expose a few decisions users actually understand, while hiding hundreds of decisions the system can calculate?

The experiment

Start with intent, not tokens.

These aren’t tokens the user is setting. They’re constraints - a small amount of intent the engine has to satisfy.

Illustrative - full working version further down

#6C72E0
#F4F3F7
Contrast
Accessibility
Visual temperature
User intent
→
Color engine
→
Color structure

Understanding color

The dimensions the engine actually needs.

H Hue Where the color sits on the color wheel.
L Lightness How light or dark it appears.
C Chroma How colorful or muted it is.
T Temperature A contextual warm/cool read, not a primary dimension.
⇄ Contrast relationship Contrast belongs to the relationship between two colors - not to either one alone.

Interactive - try it

Hue250°
Lightness58%
Chroma62%
HEX #6C72E0

The color model

Not accent + neutral + semantic. Something broader.

That model is too restrictive. The system is built from two kinds of roles instead.

Dynamic color roles

Adapt strongly to user intent - expression changes.

Accent Background Surface Content Border Overlay Interaction

Semantic color roles

Adapt their values and shades - meaning stays stable.

Success → green family Warning → amber family Error → red family Info → blue family
Dynamic colors can change their expression.
Semantic colors can only change their resolution.

Accent normalization

Any input → a stable color anchor.

A user enters #5E6AD2. The engine doesn’t assume that’s Accent/500 - it treats the input as intent, analyzes its perceptual properties, and decides where it should sit within a generated scale.

User color
→
Analyze
→
Normalize
→
Generate scale

The user chooses the color. The system decides how it behaves.

Environment detection

Background is more than a color.

The engine first determines whether the chosen environment reads as light or dark - from perceptual lightness, not a checkbox.

Background
→
Perceptual analysisLightness · contrast range · color character
→
Light / dark environment

Environment doesn’t have to be neutral. It can follow the user’s visual intent instead of forcing every product into the same predefined neutral palette.

Computed example - green environment

The values adapt. The hierarchy doesn’t.

Generating color roles

One intent → a network of relationships.

Accent→Attention + interaction
Surface→Depth + layering
Content→Readability + hierarchy
Border→Separation + structure
Semantic→Meaning + feedback

Color relationships

The engine doesn’t ask: is this color good?

It asks whether a color works in its context. Hover a group below - colors are calculated as relationships, not isolated values.

Background Surface Raised Overlay Content / Primary Content / Secondary Content / Tertiary Border Accent Default Hover Pressed Focus

Contrast

Same colors. Different character.

The same intent, expressed with different hierarchy strength, surface separation, accent dominance and density. Accessibility is a constraint underneath, not a style choice.

Project overview
A live comparison of the same UI intent under three contrast settings.
User preference
→
Generate candidates
→
Evaluate contrast
→
Accessibility constraints
→
Reject invalid
→
Optimize remaining

Visual preference is flexible. Minimum usability is not.

Visual harmony

AI optimizes the system, not individual colors.

There is no single correct color. There is a better solution within a defined set of constraints - never a magic beauty score.

Hue relationships Lightness rhythm Chroma balance Contrast Surface depth Accent dominance Semantic clarity Accessibility
Best-fit system
Resolved from the candidate field above, within the defined constraints.

Semantic resolution

Meaning stays stable. Values adapt.

Success is never red - it always resolves within the green family. What changes across environments is the shade, not the meaning.

Light environment

Dark environment

From values to rules

AI needs more than hex values.

Accent / 500
#5E6AD2
Role
Primary interaction
Used for
Buttons, links, active states
Context
Interactive elements
Constraints
Maintain sufficient contrast
Do not use
Destructive feedback
 
Large surfaces
Value+ Meaning+ Context+ Usage+ Constraints = AI-readable system

The solution · Live demo

Give users intent-level controls.

The output isn’t a palette - it’s a system. Change any input below and watch the whole structure recalculate, live, in your browser.

Generated & resolved - environment: light
#5E6AD2
#F7F6FA
Contrast
Accessibility
✓Analyzing accent
✓Detecting environment
✓Generating relationships
✓Checking contrast
✓Resolving semantic colors
✓Optimizing harmony
Generated scale - accent
Dynamic roles
Semantic roles
Applied to UI
Time to hire
18.4 days avg
Offer acceptance
72% this quarter
Success Warning
RoleCandidatesStatus
Design Architect24In review
Staff Engineer16Blocked
Product Manager31Offer sent

Change the intent. The system recalculates the experience.

Impact

What changes when color becomes computed.

Traditional

User
↓ choose brand color
↓ fixed palette
↓ manual mapping

Adaptive

User
↓ define intent
↓ AI understands context
↓ AI calculates relationships
↓ system generates structure
↓ UI adapts

For users

  • Customize without design expertise
  • Express brand identity
  • Support visual preferences
  • Better accessibility

For designers

  • Define rules instead of repetitive values
  • Encode design knowledge
  • Reduce manual theming
  • Create adaptive systems

For AI

  • Understand roles
  • Understand relationships
  • Reason within constraints
  • Generate valid UI

Key learnings

What this research actually taught me.

01
A color system is not a palette.

A palette describes what colors exist. A system describes why they exist, how they relate, and where they should be used.

02
Users should configure intent, not tokens.

Designers think in tokens, roles, relationships, constraints. Users think in brand, environment, visual preference, accessibility. AI bridges the two.

03
Environment doesn’t have to be neutral.

It can be neutral, green-tinted, blue-tinted, warm, purple, dark, or light. What matters is coherence.

04
Visual harmony is a constraint problem.

Intent, plus perceptual properties, plus relationships, plus context, plus constraints - resolves to a better solution.

Transition

Color is only the first layer.

Part 1 explores how AI can make visual decisions from human intent. But an AI-native product needs to solve a larger problem: what happens when AI doesn’t just choose a color - but decides what UI to build?

>_ Create a hiring report showing time-to-hire, offer acceptance rate and monthly hiring trends.
Prompt
→
Product knowledge
→
Components
→
Patterns
→
Business logic
→
Permissions
→
Consistent experience
Part 02

Adaptive Product UI

From adaptive color to adaptive product decisions.