Date: 2026-05-15 (push mode, 60 min cadence, brand-voice audits iter)
Two cross-cutting audits that catch brand-voice and content-consistency drift: emoji presence (Wes's "no emojis" feedback) + cross-surface tagline consistency. Audit count: 24 -> 26.
Built audit-emoji-presence.py (~115 lines). Scans 2,738 user-facing files across 14 surface types for emoji glyphs, including:
Detection: Unicode emoji ranges (Misc Symbols, Pictographs, Dingbats, Faces, Transport) PLUS HTML-entity emojis (💡 etc). Strips style + script + JSON-LD blocks before scanning (those legitimately may contain symbol references).
Result: 2719/2738 clean. 19 build pages have rogue emojis.
Offenders (build/<slug>): brief-ai, childcare-ai, documentation-ai, fleet-ai (12 emojis), hr-operations-ai, integration-marketplace-ai, landscape-ai, msp-ai, nda-ai, pharmacy-ai, podcast-ai, prospect-enrichment-ai, quote-ai, seller-ai, solo-analytics, student-loan-advisor-ai, team-analytics, warehouse-ai (10 emojis), warm-intro-network-ai.
Mix of literal Unicode glyphs and HTML-entity-encoded ones. Common offenders: 📊 📈 📞 🔧 ✓ 💰. These are mostly hand-crafted product pages from before the "no emojis" rule was added to brand guidance.
Wes-task: programmatic emoji-strip is risky (could leave empty bullets/headers). Better as editorial review.
Cron: every hour at :35
Built audit-cross-surface-tagline.py (~110 lines). For each product with a canonical tagline in adoptability.json, verifies the SAME tagline appears on /pricing/, /vs/, /how-it-works/, /sales-kit/ surfaces. Skips /faq/, /case-studies/, /feedback/ which use generic surface-specific lede copy.
HTML-entity aware: uses html.unescape() before comparison so Know who's leaving (canonical) matches Know who's leaving (rendered).
Initial false positive: 7 products flagged for "drift" until I added html-unescape. After fix: 246/246 clean.
This validates that the surface generators (pricing, vs, how-it-works, sales-kit) all consistently pull the tagline from adoptability.json. Combined with iter 124-126 brand-name consistency work, the product's core text identity is durable across all 4 sales-flow surfaces.
Cron: every hour at :37
Patched regen-quality-report.py:
latest_emoji_presence() + latest_cross_surface_tagline()Live-check card count: 26 -> 28. Total content invariants: 32 -> 34.
| Audit | Cadence | Status |
|---|---|---|
| audit-fakeproof.py | daily | ok |
| audit-adoptability-drift.py | every 15 min | ok |
| audit-page-identity.py | every 30 min | ok |
| audit-hero-polish-drift.py | every 30 min | ok |
| audit-og-coverage.py | every 30 min | ok |
| audit-teaser-quality.py | every 30 min | 247/247 |
| audit-case-studies-quality.py | every 30 min | 239/247 |
| audit-faq-quality.py | every 30 min | 247/247 |
| audit-unlock-content.py | every 30 min | 247/247 |
| audit-adopt-content.py | every 30 min | 247/247 |
| audit-feedback-content.py | every 30 min | 247/247 |
| audit-pricing-content.py | every 30 min | 232/248 |
| audit-vs-content.py | every 30 min | 246/246 |
| audit-how-it-works-content.py | every 30 min | 246/246 |
| audit-sales-kit-content.py | every 30 min | 246/246 |
| audit-skeptic-memos-content.py | every 30 min | 246/246 |
| audit-cross-surface-name.py | every 30 min | 29/29 |
| audit-jsonld-coverage.py | every 30 min | 246/246 |
| audit-meta-tags-coverage.py | every 30 min | 243/247 |
| audit-internal-links.py | every 30 min | 246/246 |
| audit-image-alt.py | every hour | 247/247 |
| audit-image-src-exists.py | every hour | 247/247 |
| audit-twitter-card.py | every hour | 247/247 |
| audit-emoji-presence.py | every hour | 2719/2738 (NEW) |
| audit-cross-surface-tagline.py | every hour | 246/246 (NEW) |
| em-dash-sweep.py | every 15 min | running |
2 substantive ships at 60-min cadence. Emoji audit caught real brand-voice drift (19 pages predating the no-emojis rule). Tagline audit confirms generators are consistent - together they verify the catalog's text identity (name, tagline, voice) is durable across all sales-flow surfaces.
link rel=preconnect/stylesheet endpoints respond (font CDNs, etc)After 130 iters, the audit suite covers: per-product content (17 surfaces), structured data (JSON-LD), SEO meta (canonical + 5 og + 4 twitter + meta description), navigation (internal links), embedded assets (img alt + img src), brand identity (name + tagline across surfaces), and now brand voice (no emojis). The buyer's structural experience is verifiably consistent on 9 distinct dimensions.