Revert text_readability to original (overlap is a layout issue, not a
readability one — LLM kept scoring it Pass because text was readable).
New text_product_overlap check uses a step-by-step approach:
1. Define the product hero zone (including translucent/glass elements)
2. Identify all marketing text
3. Check spatial overlap between text and hero zone
4. Compare good vs bad layout patterns
L'Oreal Static profile now has 4 checks at 2.5 weight each (was 3
checks at 3.33). Total check count: 66.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
LLM was still dismissing translucent 3D shapes as background. Rewrote
the check as a 3-step process (define hero zone, check overlap, score)
with explicit warning not to dismiss transparent elements. Added
concrete example matching the L'Oreal Absolut Repair Molecular mask
asset where the headline crosses the translucent sculpted shape.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
LLM was not recognising translucent/glass decorative elements around
products as part of the product area. Expanded the definition to
explicitly include semi-transparent shapes, artistic renders, and
silhouettes. Added boundary-drawing instruction and concrete
pass/fail examples matching L'Oreal Absolut Repair Molecular assets.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds critical check for marketing text overlapping product or product
packaging (e.g., translucent containers, decorative elements). Text
overlapping product area caps score at 4-5/10, triggering Fail under
L'Oreal's strict grading override.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- File queue: add text-overflow ellipsis, min-width:0, flex-shrink:0 to
prevent long filenames from pushing Pending/Remove buttons out of view
- text_readability: product-only images (no marketing text layout) now
score 7/10 neutral instead of 1-2/10 critical fail. Hidden/invisible
text in marketing layouts still scores 1-2.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds Tesseract-based OCR pre-processing that computes pixel-level text
positions, margins, spacing, and alignment before LLM analysis. This
enables detection of subtle layout differences that vision models miss
(e.g. 2.8% vs 6.4% headline margin, 83px vs 39px date gap).
OCR measurements injected into 10 checks across all client profiles:
- Amazon: margins, typography, headline_layout
- Static General: element_alignment, safety_area, visual_hierarchy_general,
text_readability_general, text_edge_clearance
- L'Oreal: text_readability
- Diageo/Unilever KV: visual_hierarchy
Non-blocking: if Tesseract is unavailable, checks run with visual
estimation only. Production requires: sudo apt install tesseract-ocr
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Reverted loreal_static from 2-check (visual_readability_contrast) to
3-check setup (language_consistency, text_readability, background_contrast)
to avoid score dilution. Updated text_readability and background_contrast
prompts from POS-focused to digital marketing, and added critical hidden/
invisible text detection (black-on-black, white-on-white scanning).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>