Generative AI and Brand Palettes: A Production Workflow
Use Midjourney and Firefly for mood boards, not final tokens. Extract palettes, run legal review, map to OKLCH after clearance.
The brand workshop ended with forty Midjourney boards labeled Q3 direction. Design ops asked for accent-primary in OKLCH by Friday. Legal asked whether any pixel in those boards could ship on the homepage. Engineering asked why the extracted coral hex failed contrast on surface-one. Everyone had done their job; the pipeline had no job description.
Generative AI is excellent at exploration velocity and poor at token authority. A diffusion model does not know your WCAG budget, your competitor’s trade dress, or whether your enterprise tier includes commercial indemnification. Treating a generated mood board as a palette source is valid. Treating it as signed-off brand guidance without extraction discipline, legal review, and OKLCH normalization is how campaigns ship off-brand colors with unclear licensing and unstable hex across two seeds.
This essay defines a production workflow: Midjourney, DALL·E, and Adobe Firefly for mood boards, not final design tokens; extracting palettes from generated images responsibly; legal review gates before production use; matching sampled hues to OKLCH ramps; and how this connects to broader AI image licensing without replacing counsel’s checklist. Platform terms change. This is creative-ops workflow, not legal advice. Check live terms at generation time and archive snapshots with each asset.
What diffusion is good for in color work
Diffusion outputs are stochastic. The same prompt yields different dominant hues across seeds. Brand palettes require stable, documented values, the opposite of seed roulette. Generative tools excel at mood boards, season tone, texture direction, exploring hue families outside the current wheel, and stakeholder alignment before photo shoots. They perform poorly as final accessible contrast pairs, legally cleared hero photography, trademark-precise logo colors, or immutable token JSON in production without human gates.
Firefly’s enterprise positioning and Adobe indemnification language appeal to risk-averse teams, but indemnification scope ties to plan and product surface, not every export from every experimental feature. Midjourney commercial rights historically correlate with subscription tier. OpenAI consumer and API terms differ. None of that replaces palette extraction, contrast audit, or semantic naming. For the full licensing intake framework—ownership, indemnification, provenance packets—see AI-Generated Images and Commercial Web Use. This article assumes legal has cleared a class of use such as internal mood exploration and focuses on what happens after the board looks right in a critique room.
Phase one mood board generation keeps outputs non-production. Goal is aligning stakeholders on direction without publishing generated pixels. Internal-only exploration may use any tier-cleared tool your policy allows; keep outputs in private boards. Client-facing pitch decks should prefer tools with documented commercial terms for deck context and watermark as concept not final. Web or print production should not use mood-board generations as finals without full licensing pass; commission photo, licensed stock, or enterprise-indemnified generation with caps understood.
Prompt structure for palette-friendly boards asks for cohesive environments, not logo mockups. Muted coastal interior, morning light, terracotta and sage textiles, soft shadows, editorial photography style, no text, no logos. Avoid named brands, characters, celebrities, and in the style of living artist phrasing. Negative prompts should exclude text, watermark, logo, signature, frame, border. Generate sets of four to eight images per direction with locked aspect ratio. Label boards EXP-2026-Q3-A, never brand-final-v2. Archive prompt, negative prompt, tool, model version, seed if visible, account tier, date, terms URL screenshot, and reviewer who approved internal circulation. If a mood board leaks to social, provenance matters.
Extracting candidates without trusting a single seed
Once direction is approved as inspiration, sample colors, not ownership of the image, for token candidates. Reject images with faces, logos, or readable text for automated sampling. Use clustered sampling: dominant background, secondary accent, neutral shadow, highlight. Never sample AI halos, JPEG blocks, or bloom artifacts. Sample multiple images in the approved direction and median the hues; do not trust one hero seed.
Generative images arrive in sRGB. Convert samples to OKLCH immediately so later ramp math stays perceptual. Round to documented precision per your token spec. Raw sampled hex neighbors should collapse to one token, not two accidental twins one step apart on the wheel.
Never sample bloom, JPEG blocks, or edge halos from generated interiors; those pixels are artifacts, not brand intent. The same discipline applies to photography-derived tokens when AI outputs pretend to be photographs.
Designers adjust candidates for chroma caps because AI loves oversaturated skies, hue clustering when three sampled blues become one accent family, and neutrals because AI grays often skew magenta and need nudge toward brand hue anchor on low-chroma neutrals. Document overrides in token changelog: shifted lightness from zero point six one to zero point five eight for APCA on body text.
/* Sampled from board EXP-2026-Q3-A image 3, interior terracotta — candidate only */
--candidate-accent: oklch(0.62 0.12 45);
--candidate-neutral: oklch(0.55 0.02 250);
--candidate-surface: oklch(0.94 0.01 85);
Palette extraction does not clear image use. Separate two questions. May we use colors inspired by generated boards, usually brand and legal with documentation note in token repo? May we publish generated pixels, per-asset clearance from legal? Gate A internal palette only: legal confirms mood boards stayed internal, no restricted inputs in prompts, no recognizable third-party IP in outputs; design may promote OKLCH candidates to staging tokens. Gate B marketing uses generated images: full provenance packet per licensing workflow. Gate C production hero: often requires non-AI source or enterprise Firefly indemnification with caps understood. Marketing velocity dies at Gate B when teams skip from Midjourney to homepage. Insert hard stop: no CDN URL until legal column is checked.
Quarterly re-read Midjourney Terms, OpenAI Policies, Adobe Generative AI FAQ. Archive PDFs when tokens derived from AI-inspired palettes ship to production. Future rebrands audit what did we know in Q3 2026.
OKLCH ramps, dark mode, and engineering handoff
Candidates become a system when they pass contrast, mode pairs, and semantic roles. Start with approved anchors and derive hover with stepped tokens or relative syntax, not another diffusion pass. Document the anchor hue separately from accent steps so dark mode and hover math share one angle on the wheel. When candidates came from desert-afternoon boards, anchor near forty-five degrees might drive accent-nine through accent-eleven and also tint neutral-one toward warm off-white instead of cool gray.
Ramp authoring should read like brand system work, not like saving a screenshot swatch. Each step needs a named role in the table your engineers import: text, surface, border, solid fill, on-solid text. Diffusion output never supplies those names; your team does. Figma styles should mirror CSS names exactly so design QA and engineering QA compare one vocabulary.
Contrast verification belongs in the same ticket as ramp export, not in a follow-up after engineering merge. AI-sampled yellow-greens fail white button text predictably; fix lightness and chroma in OKLCH before anyone asks the model for a new seed.
Dark mode is a re-derivation, not an inversion of light tokens. Mood boards lit for drama will mislead surface elevation if you sample shadows directly into UI backgrounds.
:root {
--brand-hue: 45;
--accent-9: oklch(0.58 0.14 45);
--accent-10: oklch(0.52 0.15 45);
--accent-11: oklch(0.46 0.14 45);
--neutral-1: oklch(0.97 0.01 45);
--neutral-9: oklch(0.55 0.02 45);
--neutral-12: oklch(0.22 0.02 45);
}
AI mood boards are often lit for drama: dark corners, glowing accents. Dark UI tokens need elevated surfaces lighter than background, not inverted light-mode samples. Re-derive dark accents with reduced chroma so neon does not blow out OLED. Run WCAG 2.2 contrast on text-primary on surface-zero, text-muted on surface-one, and accent-nine as text on white, which often fails; use accent on buttons with white text instead. AI-sampled yellow-greens fail white text predictably. Fix in OKLCH lightness and chroma, not by asking the model again.
Ship accent-primary, not midjourney-coral-3. Rebrand survives when hue shifts; seed numbers do not. Engineering handoff delivers token JSON with OKLCH values and sRGB fallbacks, changelog citing mood board IDs not PNG files as source of truth, Figma variables mirroring CSS names, and explicit note that no production marketing asset is the attached generation, palette only. QA compares staging against token table, not mood board PNG, because display P3 versus sRGB will mismatch.
Anti-patterns waste sprints: auto-publishing the winning board because legal is usually fine, sampling one lucky seed without median across set, letting engineers scrape hex from Slack previews where compressed thumbnails lie, skipping dark mode because board was cinematic dark already, mixing stock faces and generated backgrounds without input licenses on both sides. After palette lock, shoot or illustrate finals with controlled lighting matching token intent. Generative AI informed which terracotta; it does not replace product accuracy for SKUs, packaging legally required colors, or cultural sensitivity review.
Case study: From forty boards to twelve OKLCH tokens
A lifestyle home goods company ran a two-day virtual workshop in June to explore warming a brand that had lived in cool gray and eucalyptus green for six years. The creative director generated forty-two Midjourney images across four prompt families: coastal morning, desert afternoon, aged plaster interior, and evening brass lamp light. Stakeholders picked desert afternoon as emotional direction without selecting any single image as hero. Design ops ticket asked for twelve semantic tokens in OKLCH by the following Friday. Legal email asked whether homepage could use board 17, which showed a recognizable ceramic silhouette uncomfortably close to a competitor’s trade dress.
The team froze image publishing and allowed palette extraction only. A designer sampled eight approved desert-afternoon images, rejecting any frame with readable book spines or wine labels. Cluster sampling pulled background wash, terracotta textile, sage secondary, shadow neutral, and highlight trim per image, then took per-channel median in OKLCH space. One outlier image with oversaturated sky was dropped from median because it pulled accent chroma past brand guardrails. Candidates landed near accent forty-five degree hue family, neutral two fifty for cool counterbalance, surface eighty-five for warm white.
Legal Gate A cleared internal palette promotion with written note: no generated pixel on public URL, prompts contained no named artists, boards stayed in private drive. Gate B blocked three images that resembled third-party product silhouettes even after palette-only decision; those boards were quarantined from sampling scripts. Gate C for fall homepage hero required non-AI photography; generative work informed terracotta direction only.
Designers trimmed chroma on accent candidate from zero point one four to zero point one one after APCA failed on sixteen pixel body text over surface-one. Dark mode pairs re-derived accent with lower chroma and raised surface-one lightness above surface-zero, rejecting naive inversion of light tokens because mood boards were underexposed for UI elevation logic. Engineering received JSON and changelog listing EXP-2026-desert-afternoon set, median sampling method, designer chroma trim, and explicit no CDN image from generation. Figma variables mirrored names. Staging QA compared computed styles to token table, not to PNG proofs, catching one wrong sRGB fallback typo before production.
Marketing nearly slipped when a social freelancer exported board 9 with cropped watermark area into a Stories draft. Content calendar caught it in review; post became photographed teaser using locked terracotta on props styled to token, not diffusion output. Fall hero shoot used physical terracotta cloth sampled against accent-nine OKLCH with colorimeter on set; final photography matched tokens within agreed delta, closing the loop generative tools started.
Twelve tokens shipped on schedule. Rebrand committee cited the workflow in Q4 retrospective as the first AI exploration pass that did not force legal to halt a launch. The lesson was not which tool won. It was separating pixel clearance from number clearance, mediating hues across seeds instead of worshipping one beautiful accident, and naming tokens by role so terracotta could move five degrees next year without a filename saying midjourney.
Operations extended the workflow into tooling the following quarter. A private Slack bot accepted EXP board IDs and returned median OKLCH candidates plus outlier warnings when one image skewed chroma past threshold. Legal status column on the same ticket tracked Gate A, B, or C with date and reviewer initials. Engineers could not merge token JSON until design ops checked legal column and contrast sheet. The friction was intentional. It converted a workshop habit into a pipeline job description the whole company could follow without re-explaining why board seventeen never became a CDN URL.
Generative AI belongs at the fuzzy front of brand color work: fast, evocative, explicitly tentative. OKLCH tokens belong at the hard back: stable, tested, named by role. Legal review sits between, deciding whether pixels move or only numbers do. Check live terms, archive everything, and never let a beautiful diffusion seed become accent-primary without a human sign-off line in the changelog and contrast rows that passed without wishful thinking. The pipeline is the product as much as the palette.