# Auditor Visibility Fix Report **Date:** 2026-05-04 **Fix:** Above-the-Fold scoring now uses visible page content instead of raw HTML offset **Status:** ✅ Deployed — all 233 tests pass --- ## Problem Statement The `_score_above_fold()` function in `landing_page_engine/auditor.py` used a raw character offset (`html[:3000]`) to identify content "above the fold." On pages that use inline `', '', text, flags=re.IGNORECASE | re.DOTALL) text = re.sub(r'', '', text, flags=re.IGNORECASE | re.DOTALL) text = re.sub(r'', '', text, flags=re.DOTALL) return text ``` ### Updated `_score_above_fold()` ```python # AFTER (fixed): visible_html = _extract_visible_html(html) html_top = visible_html[:3000] # first ~3000 chars of VISIBLE content ``` The global scans (viewport meta, hero class, H1) continue to operate on the full `html` string — they work correctly already and don't depend on character position. --- ## Score Impact | Page | Dimension | Before | After | Delta | |------|-----------|--------|-------|-------| | v2 (90-target) | above_the_fold | 5/10 | 7/10 | +2 | | v2 (90-target) | **TOTAL** | **78/100** | **80/100** | **+2** | | v3 (95-target) | above_the_fold | 5/10 | 7/10 | +2 | | v3 (95-target) | **TOTAL** | **83/100** | **85/100** | **+2** | **Tier change:** v3 crosses the 85-point threshold from **Good → Optimized**. ### Why 7 and not higher The 3 points below maximum (10 - 7 = 3) reflect real page characteristics: - **+1 point missed: image above fold** — neither page has a hero image; both use CSS gradient backgrounds (correct choice for performance, not penalizable by the structural auditor, but the signal isn't present) - **+2 points missed: ATF subheadline** — the audience sub-headline appears after the H1 block inside a `
` element. After stripping CSS, 3,000 visible characters captures
the skip-to-content link, `