# THIS YOU — Style Exploration Mode

## Goal

Add an explicit user-controlled parameter that defines **how closely THIS YOU should stay to the reader's existing brands/style vs. how far the stylist may push beyond them**.

This is important because selected brands should not always behave as hard constraints.

The intended product logic is:

- if the reader prefers a familiar result, selected brands and known style should be followed closely;
- if the reader wants some evolution, selected brands become a reference point rather than a strict shopping list;
- if the reader wants to be surprised, the styling engine may intentionally introduce new brands, silhouettes, combinations and more directional fashion choices while still respecting the person's body, budget and core taste.

Core principle:

> **Preferences are the starting point, not always the boundary.**

The experience should never feel like random experimentation. Even the most adventurous mode must still produce a credible version of the same person.

---

# 1. User-facing parameter

## UI label

**How should we style you?**

## Options

### `familiar`
**Stay close to my style**

Helper text:

> We'll keep your looks close to the brands, silhouettes, and overall vibe you already like.

### `elevated`
**Elevate my style**

Helper text:

> We'll stay true to your taste, but introduce sharper styling, better combinations, and new ideas that still feel like you.

### `surprise`
**Surprise me**

Helper text:

> We'll use your preferences as a starting point, then push further with more unexpected, fashion-forward looks.

## Default

`elevated`

This should be the recommended/default THIS YOU experience.

Reason:

- `familiar` may be too conservative for the magazine's main value proposition;
- `surprise` may be too aggressive for some users;
- `elevated` gives the best balance between recognition and discovery.

---

# 2. Communicate what selected brands mean

The profile currently asks for brands. We must avoid implying that these brands are mandatory for every generated outfit.

Recommended field title:

**Brands you usually like or shop from**

Alternative:

**Brands that match your taste**

Helper text:

> Your selected brands help us understand your taste, price range and aesthetic. They guide the styling, but depending on your styling mode, they may not limit it.

This explanation should appear near the brand selector or directly below the Style Exploration selector.

---

# 3. Backend field

Recommended canonical field:

```text
style_exploration_mode
```

Allowed values:

```text
familiar
elevated
surprise
```

Example profile payload:

```json
{
  "brands": ["Zara", "Uniqlo"],
  "style_preferences": ["Minimal", "Sporty", "Scandinavian"],
  "fit_preferences": ["Oversized"],
  "budget": "under_100",
  "style_exploration_mode": "elevated"
}
```

Do not store the visible UI strings as business logic values.

---

# 4. Database

Add to reader/profile data model:

```sql
style_exploration_mode VARCHAR(20) NOT NULL DEFAULT 'elevated'
```

Allowed application values:

```text
familiar | elevated | surprise
```

If the database layer supports enum/check constraints, enforce them there as well.

Existing profiles should migrate to:

```text
elevated
```

unless there is a reason to preserve old conservative behavior during migration. If backward compatibility is important during rollout, legacy users can temporarily map to `familiar`, but new profiles should default to `elevated`.

---

# 5. Styling engine interpretation

The selected brands must be interpreted differently according to `style_exploration_mode`.

## A. `familiar`

### Intent

Make the result feel very recognizably like the reader's existing wardrobe/preferences.

### Brand behavior

Selected brands are **high-priority reference points, not a whitelist**.

Priority:

1. selected brands;
2. extremely close equivalents when a suitable product cannot be found;
3. avoid introducing unfamiliar aesthetic directions unless necessary.

### Styling behavior

- preserve familiar silhouettes;
- preserve normal color palette;
- minimal experimentation;
- recognizable combinations;
- avoid dramatic fashion-editorial reinterpretation.

### Product search

Prefer actual products from the user's selected brands.

Example:

```text
User: Zara + Uniqlo / minimal / Scandinavian
Result: primarily Zara + Uniqlo, potentially COS only if needed as a very close substitute.
```

---

## B. `elevated`

### Intent

Show a noticeably better-styled version of the reader without making them feel like a different person.

This is the default THIS YOU mode.

### Brand behavior

Selected brands are **taste and budget signals, not a mandatory shopping list**.

Priority:

1. preserve the user's aesthetic and price logic;
2. selected brands may still appear;
3. introduce adjacent brands where they materially improve the outfit;
4. allow better/more editorial combinations than the user would normally assemble themselves.

### Styling behavior

Allowed:

- more interesting layering;
- stronger proportions;
- one unexpected accessory;
- one unfamiliar brand;
- more editorial footwear;
- better use of texture/material;
- small silhouette evolution;
- smarter color combinations.

Avoid:

- making the user visually unrecognizable;
- ignoring body/fit preferences;
- luxury products far outside the stated budget;
- arbitrary trend chasing.

Example:

```text
User: Zara + Uniqlo / minimal / Scandinavian
Result: Uniqlo trousers + COS outerwear + more directional footwear + a stronger accessory.
```

---

## C. `surprise`

### Intent

Create the feeling:

> "I would never have chosen this myself, but I can actually see myself wearing it."

### Brand behavior

Selected brands are **reference signals only**.

The engine may intentionally search beyond them.

Allowed brand expansion:

- adjacent contemporary brands;
- independent brands;
- emerging designers;
- vintage;
- unexpected high-street brands;
- niche labels;
- one higher-price hero piece if the rest of the look stays realistic and the budget policy permits it.

### Styling behavior

Allow:

- stronger silhouette changes;
- unexpected layering;
- more expressive accessories;
- more directional footwear;
- unusual but coherent combinations;
- scene-specific fashion styling;
- editorial reinterpretation of the user's normal aesthetic.

Still preserve:

- the person's identity;
- body proportions;
- fit constraints that are functional/important;
- stated hard dislikes;
- occasion appropriateness;
- reasonable budget logic;
- believable wearability.

`surprise` does **not** mean costume, absurd, avant-garde-for-the-sake-of-it, or random.

---

# 6. Hard constraints vs soft preferences

The styling engine should distinguish between two types of profile data.

## Hard constraints

These should generally be respected in every mode:

- body measurements / sizing;
- shoe size;
- physical fit requirements;
- gender/presentation rules when explicitly chosen;
- explicit exclusions / dislikes;
- non-negotiable garment restrictions;
- occasion / scene requirements;
- maximum budget if configured as a hard ceiling.

## Soft preferences

These may be stretched according to `style_exploration_mode`:

- favorite brands;
- usual brands;
- usual color palette;
- preferred silhouettes;
- familiar garment categories;
- current style labels;
- typical accessories.

Do not treat all onboarding data as equal-weight constraints.

---

# 7. Normalized styling brief

Before product search or image generation, create a normalized styling brief.

Example:

```json
{
  "reader_style_core": {
    "aesthetic": ["minimal", "scandinavian", "sporty"],
    "brands": ["Zara", "Uniqlo"],
    "fit": ["oversized"],
    "budget": "under_100"
  },
  "style_exploration_mode": "elevated",
  "brand_policy": "adjacent_brands_allowed",
  "silhouette_policy": "moderate_expansion",
  "editorial_push": 0.6
}
```

Optional internal normalized scores:

```text
familiar  -> editorial_push = 0.2
elevated  -> editorial_push = 0.6
surprise  -> editorial_push = 0.9
```

These numeric values are internal implementation details only and should not be shown to the user.

Do not rely only on a numeric score; the discrete mode should remain the canonical source of truth.

---

# 8. Product discovery behavior

Product discovery must happen **before final image generation** when the page is intended to reference real products.

The mode should alter the product candidate pool.

## Familiar

Search order:

```text
selected brands
-> same-brand alternatives
-> very close adjacent brands
```

## Elevated

Search order:

```text
selected brands
+ adjacent brands
+ stylist-selected alternatives
```

Use the user's brands to infer:

- price tier;
- aesthetic;
- quality expectation;
- retail availability;
- degree of trendiness.

## Surprise

Search order:

```text
broad stylist-led discovery
-> filter by reader compatibility
-> filter by practical constraints
```

The search engine should be allowed to identify items that the user did not nominate explicitly.

---

# 9. Scene-specific styling

`style_exploration_mode` applies globally to the profile but every scene/look still needs its own editorial brief.

Example:

```text
Reader style: Minimal / Scandinavian
Mode: Surprise me
Scene: The Armory Show, NYC

Desired translation:
"NY gallery-world version of this reader"

Not:
"Ignore the reader and create generic fashion-week street style."
```

Each scene prompt should combine:

```text
reader identity
+ scene context
+ style exploration mode
+ actual selected products
+ issue editorial direction
```

---

# 10. Optional per-look override

The profile mode is the default, but the CMS/template system should optionally allow an editorial override per style page.

Recommended optional field:

```text
style_exploration_override
```

Allowed values:

```text
null
familiar
elevated
surprise
```

Resolution:

```text
effective_style_mode = style_exploration_override ?? reader.style_exploration_mode
```

Why this is useful:

An issue may intentionally contain one more directional fashion moment even for a normally conservative reader, or keep a specific scene safer when required.

Do **not** use this silently to completely contradict the user's preference. Editorial overrides should be used sparingly.

---

# 11. Issue/template support

The issue template should be able to specify a recommended exploration intent for each style page.

Example:

```json
{
  "scene": "armory_show",
  "page_type": "personalized_style",
  "recommended_style_mode": "surprise"
}
```

However, this should not automatically override the user.

Recommended resolution model:

```text
USER familiar + PAGE surprise
-> usually keep familiar/elevated boundary

USER elevated + PAGE surprise
-> allow stronger elevated / light surprise

USER surprise + PAGE surprise
-> full directional treatment
```

An optional future implementation can use a matrix instead of hard overrides.

---

# 12. Recommended mode-combination matrix

If both profile preference and scene editorial direction exist, compute a final styling intensity rather than blindly replacing one with the other.

Suggested conceptual matrix:

| User mode | Scene intent: Familiar | Scene intent: Elevated | Scene intent: Surprise |
|---|---:|---:|---:|
| Familiar | Familiar | Familiar | Elevated-light |
| Elevated | Familiar+ | Elevated | Surprise-light |
| Surprise | Elevated | Surprise-light | Surprise |

Exact implementation can be adjusted later.

The important principle is:

> editorial intent can nudge the result, but the user's chosen comfort level remains the dominant constraint.

---

# 13. Image generation prompt requirement

Every personalized fashion image prompt must include the resolved exploration mode.

Pseudo prompt section:

```text
STYLE EXPLORATION MODE: ELEVATED

The reader usually likes Zara, Uniqlo, minimal Scandinavian and sporty styling.
Treat these as aesthetic and price references rather than strict brand constraints.
Introduce adjacent brands or stronger styling where it makes the look more editorial and distinctive.
The result must still feel unmistakably plausible for this reader.
Avoid costume styling or random trend stacking.
```

For `familiar`:

```text
Stay close to the reader's known brands, silhouettes and styling preferences.
Prioritize recognizability and wearability over novelty.
```

For `surprise`:

```text
Use the reader's existing preferences only as a starting point.
Push toward a more directional, fashion-editorial interpretation appropriate to the scene.
Introduce new brands, proportions and combinations when useful, while preserving identity, fit, wearability and budget logic.
```

---

# 14. Product/image consistency

Important existing system rule:

**Find/approve the products first, then generate the personalized image from those products.**

The exploration mode changes **which products are eligible**, not the requirement that the generated image should correspond closely to the final selected products.

Pipeline:

```text
reader profile
-> resolve exploration mode
-> derive styling brief
-> product discovery
-> product compatibility/ranking
-> select/approve actual products
-> generate image using those products
-> compare generated image vs selected products
-> retry/fix if mismatch is too large
-> publish style page
```

This prevents a beautiful generated outfit that cannot be reproduced from the linked products.

---

# 15. Ranking logic

Product ranking should include an exploration-dependent score.

Example conceptual ranking:

```text
product_score =
  reader_fit_score
  + scene_fit_score
  + budget_score
  + availability_score
  + editorial_score
  + exploration_score
```

Where `exploration_score` behaves differently by mode.

## Familiar

High score for:

- selected brand;
- very similar known silhouette;
- familiar palette;
- low-risk combination.

## Elevated

High score for:

- strong reader compatibility;
- meaningful styling improvement;
- adjacent brand discovery;
- editorial quality without excessive risk.

## Surprise

High score for:

- novelty relative to the reader's existing wardrobe;
- strong scene relevance;
- fashion/editorial interest;
- still believable on the reader.

Novelty alone must never outrank compatibility.

---

# 16. CMS/admin visibility

In the admin personalization preview, show:

```text
Style mode: Elevated
```

Also display:

```text
Original brands: Zara, Uniqlo
Resolved brand policy: Adjacent brands allowed
```

For debugging, optionally show:

```text
Effective mode: elevated
Source: reader profile
```

or

```text
Effective mode: surprise
Source: page override
```

This will make unexpected styling decisions easier to inspect.

---

# 17. Manual review

Because THIS YOU is positioned as **human-edited, AI-assisted, individually reviewed**, the review checklist should include:

- Does the outfit still feel plausible for this reader?
- Is the level of experimentation consistent with the selected mode?
- If new brands were introduced, do they make sense for the user's taste/budget?
- Is the outfit more interesting than a literal recreation of the profile?
- Does `surprise` still look stylish rather than gimmicky?
- Do the generated garments match the linked real products closely enough?

For `elevated` and `surprise`, reviewers should explicitly avoid approving looks that are technically correct but boring.

---

# 18. Analytics

Track:

```text
style_exploration_mode_selected
style_exploration_mode_changed
```

Properties:

```text
mode: familiar | elevated | surprise
```

Also attach the effective mode to useful downstream events when practical:

```text
style_viewed
product_clicked
style_liked
product_liked
```

This will allow later analysis such as:

- Which mode users choose most often?
- Do surprise users click more products?
- Does elevated lead to more style likes?
- Does familiar produce higher approval but lower engagement?

---

# 19. Copy / positioning

Recommended general product copy:

> **We don't just recreate what you already wear — we style you based on your taste.**

Alternative:

> **Your preferences guide the styling. Our job is to show you your best version.**

Brand-field explanation:

> **Your selected brands help us understand your taste and budget. They guide the styling, but they don't always limit it.**

This distinction should be communicated before purchase/onboarding so users understand why unfamiliar brands may appear.

---

# 20. Suggested implementation order

## Phase 1 — minimum viable implementation

1. Add `style_exploration_mode` to profile schema/database.
2. Add the three-option UI control.
3. Default to `elevated`.
4. Add brand helper text explaining that brands are guidance, not always hard constraints.
5. Pass the mode into styling/product-discovery prompts.
6. Pass the resolved mode into image-generation briefs.
7. Show the mode in admin preview.
8. Add mode-specific manual review checks.

## Phase 2 — stronger engine behavior

1. Add explicit hard-vs-soft preference normalization.
2. Add exploration-aware product ranking.
3. Add adjacent-brand discovery logic.
4. Add scene-level `recommended_style_mode`.
5. Add optional page override/mode-combination matrix.
6. Track analytics by mode.

---

# 21. Acceptance criteria

Implementation is considered complete when:

- reader can choose one of three clearly explained styling modes;
- the selected mode persists in the profile;
- existing/new users have a safe default;
- selected brands no longer behave identically in every mode;
- `familiar` produces brand/style-close results;
- `elevated` can introduce adjacent brands and stronger styling;
- `surprise` can deliberately expand beyond the reader's selected brands;
- hard constraints remain respected in all modes;
- product discovery occurs before final image generation;
- generated imagery remains tied to selected real products;
- admin can see the effective mode;
- style templates can support future scene-specific editorial direction without breaking user preference.

---

# Final product principle

The user's profile should answer:

> **Who is this person?**

The style exploration mode should answer:

> **How far is THIS YOU allowed to take them?**

Selected brands define context, not necessarily the destination.

For the default `elevated` mode, the goal is not merely:

> "Yes, that's what I already wear."

The target reaction is:

> **"That's still me — but I wouldn't have thought to style myself like that."**
