ai_qc/CLAUDE_UNILEVER.md
nickviljoen 59a0b2408c Restructure CLAUDE.md docs: slim project-wide root, complete per-client coverage
Splits the monolithic CLAUDE.md (962 lines) into a slim project-wide root (211 lines)
plus per-client files. Auto-loaded context drops ~88% per session.

Changes:
- CLAUDE.md slimmed to project-wide essentials (architecture, auth, deployment, branch
  strategy, deploy scripts, prod troubleshooting, pre-session checklist). Adds explicit
  session-start convention pointing to CLAUDE_<CLIENT>.md for client-specific work.
  Updates client roster table to all 10 clients with profile counts.
- New CLAUDE_AXA.md: document-mode pipeline + axa_policy_document profiles
- New CLAUDE_DIAGEO.md: key_visual + packaging profiles, check inventories
- New CLAUDE_UNILEVER.md: profiles + zero-score logic for face/new visibility
- New CLAUDE_HONDA.md, CLAUDE_RANK.md, CLAUDE_GENERAL.md: stubs (clients use generic
  profiles only — kept for completeness and future expansion)
- backend/CLAUDE.md: stale 932-line duplicate replaced with 18-line redirect to root
  + backend-specific quick pointers

Per-client files (CLAUDE_LOREAL.md, CLAUDE_AMAZON.md, CLAUDE_BOOTS.md,
CLAUDE_DOW_JONES.md) unchanged — already had the right content.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 12:29:16 +02:00

3.1 KiB

Unilever Client Documentation

Referenced from main CLAUDE.md. Detailed Unilever QC profile descriptions, profile-specific scoring logic, and check inventories.

Overview

Unilever has two specialised profiles: Key Visual (campaign creative) and Packaging (label/pack design). Both share most checks with Diageo (generic CPG-style visual checks) but include a small number of bonus checks with profile-specific zero-scoring behaviour for missing critical elements.

Unilever Profiles

unilever_key_visual — 15 checks (120-point scale)

Campaign key-visual QC.

Check What it does Weight
background_contrast Product/text contrast against background 0.10
brand_assets_visibility Brand assets visible 0.12
call_to_action CTA presence and clarity 0.03
curved_edges Curved-edge treatment 0.04
face_gaze_direction Gaze direction guides toward product/CTA (bonus / zero-score) 0.06
face_visibility Face presence and visibility (bonus / zero-score) 0.07
imperative_verb Headline uses imperative verb 0.02
logo_visibility Brand logo visible 0.14
lowercase_text Lowercase usage rules 0.10
new_visibility "NEW" tag visibility (bonus / zero-score) 0.07
supporting_images Supporting imagery quality 0.10
text_readability Text legibility (deprecated, now part of inheritance) (n/a)
visual_elements_count Element count not overwhelming 0.14
visual_hierarchy Clear visual hierarchy 0.10
visuals_left_text_right Visuals left, text right composition 0.06
word_count Headline word count 0.05

unilever_packaging — 17 checks

Packaging design QC. Same base as Key Visual plus print-related checks (crop_marks, color_format).

Profile-specific scoring logic — bonus / zero-score

The Unilever Key Visual profile implements zero-score behaviour for three checks tied to the presence of specific creative elements:

Check Trigger Behaviour
face_visibility face_present == false Score forced to 0
new_visibility new_present == false Score forced to 0
face_gaze_direction face_present == false Score forced to 0

This ensures that creatives missing critical brand-mandated elements (a face, the "NEW" tag) cannot pass on the back of high scores from other checks. The zero-score logic lives in api_server.py:extract_score_from_result() and is gated by profile_config.get('name') == 'Unilever Key Visual'.

The Unilever Key Visual profile uses a 120-point scale (total weight slightly above 1.0) — the bonus checks add headroom rather than being equally weighted with the core checks.

Status

No formal client-driven prompt-tuning rounds in this repo's history. The profile-specific scoring logic was added as a system enhancement to handle the bonus-check pattern.

If Unilever-specific tuning is required (specific brand families, regional rules, etc.), introduce dedicated unilever_* checks in visual_qc_apps/ following the Boots / Amazon pattern.