# Visual Consistency Process

**Owner:** ARIA
**Created:** 2026-02-23
**Purpose:** Ensure all assets within a product's marketing campaign feel like a unified visual system — not a random batch of individually-generated images.

---

## The Problem This Solves

Without a consistency anchor, each generated image is stateless. Five blog heroes for Worklane might all technically be "authentic imperfection" style but have completely different lighting treatments, color grades, and compositional languages. Technically correct, visually incoherent.

Visual consistency means: **when someone sees 3 assets from the same campaign, they know they're from the same brand without reading the logo.**

---

## The Consistency Anchor

The **Consistency Anchor** is the set of previously approved assets that new generations are compared against and matched to.

**Location:**
```
/home/aria/products/<slug>/marketing/approved/
```

**When it doesn't exist yet:**
The first generated asset (ideally a campaign lead) becomes the anchor. Document its visual characteristics immediately after approval.

---

## Visual Consistency Record

After each approved asset, log its consistency fingerprint:

**Location:** `products/<slug>/marketing/consistency-record.md`

**Format:**
```markdown
## [Date] — [Asset Name]
- **Type:** Blog Hero / Social Card / Ad Creative / Campaign Lead
- **Lighting:** [e.g., "Soft left-side window light, warm neutral, no harsh shadows"]
- **Color Treatment:** [e.g., "Warm cream dominant, emerald accent on screen, no strong color grading"]
- **Compositional Language:** [e.g., "Medium candid shot, slightly asymmetric, subject mid-action"]
- **Environment:** [e.g., "Open plan office, real desk surface, natural materials"]
- **File:** `approved/2026-02-23-blog-hero-onboarding.jpg`
```

---

## Pre-Generation Consistency Check

**Before generating any new campaign asset:**

1. **Check if anchor assets exist:**
   ```bash
   ls /home/aria/products/<slug>/marketing/approved/
   ```

2. **If 2+ assets exist — load consistency record:**
   ```bash
   cat /home/aria/products/<slug>/marketing/consistency-record.md
   ```

3. **Visually review anchor assets:**
   Use `image` tool on the 2 most recent approved assets.
   Extract: lighting, color treatment, compositional language, environment feel.

4. **Add Consistency Anchor block to prompt:**
   ```
   Consistency anchor: match the [lighting description] lighting treatment,
   [color treatment] color grading, and [compositional language] compositional language
   established in this campaign's existing assets.
   ```

---

## Post-Generation Consistency Validation

**After generating, before delivering:**

1. Use `image` tool to compare:
   - New asset vs. aesthetic profile criteria
   - New asset vs. 2 most recent approved assets

2. Check for these consistency signals:
   - [ ] Same lighting quality and direction?
   - [ ] Same color temperature and grading?
   - [ ] Same compositional language (framing, angle, energy)?
   - [ ] Same environment style or consistent evolution?
   - [ ] Same "feel" — would these sit together in a campaign deck?

3. **If consistency drift detected:**
   - Note specifically what's different
   - Adjust prompt to address the drift
   - Regenerate
   - Do not deliver inconsistent assets

---

## Consistency Drift Signals

Watch for these in post-generation review:

| Signal | What to Check |
|---|---|
| Different lighting temperature | Compare warm vs. cool, harsh vs. soft |
| Different color grade | Is this warmer/cooler than the anchor? |
| Different energy level | Calm vs. dynamic — does energy match? |
| Different environment type | Indoor vs. outdoor, premium vs. basic |
| Different subject distance | Close crop vs. wide shot — does scale match? |

---

## Campaign Folder Structure

```
/home/aria/products/<slug>/marketing/
├── approved/                    ← all QA-passed assets, by date
│   ├── 2026-02-23-blog-hero.jpg
│   ├── 2026-02-23-social-linkedin.jpg
│   └── ...
├── campaigns/
│   └── <campaign-name>/
│       ├── lead.jpg            ← campaign anchor image
│       └── brief.md           ← campaign brief + Midjourney prompt
├── consistency-record.md       ← visual fingerprint of approved assets
└── qa-log.md                   ← generation + QA history
```

---

## When Consistency Can Evolve

Consistency within a campaign = strict.
Consistency across campaigns = intentional evolution is allowed.

A new campaign can consciously evolve the visual language (e.g., moving from warm documentary to more editorial) but it should be **a documented decision**, not drift. When a new campaign direction is chosen:

1. Create a new campaign folder
2. Generate or commission a new campaign lead
3. Update the consistency record with the new direction
4. Note: "Campaign [X] evolves from [Y] with intentional change to [Z]"

---

## Integration with Image Prompt Standards

This process is Step 4 in the `image-prompt-standards` skill workflow.
Always load this before generating if previous assets exist.
