findXpand

findXpand Audit Rules Reference

This reference documents every audit rule implemented in findXpand's scoring engine, generated directly from the source in src/lib/*Audit.ts and related modules (2026-08-14, against the master branch). There are 205 distinct rule checks across 13 categories, each pulled directly from the issue()/pass() calls in the audit modules — nothing here is hand-summarized from the README, it's read out of the code that actually runs.

Scope note: live URL scans vs. project/codebase scans

Everything below documents the rule set applied when findXpand scans a live URL (src/app/api/analyze/route.ts → analyzeSEO/analyzeGEO/analyzeAEO/etc.). When you instead upload a project/codebase for findXpand to audit and auto-fix (src/lib/projectAudit.ts, src/lib/autoFixEngine.ts, src/lib/jsxAutoFix.ts, src/lib/markupFixes.ts), the same underlying issues (missing title, missing alt text, missing meta description, and so on) are detected against source files rather than rendered HTML, and reported through a single generic aggregator (buildProjectCategoryReport) that carries over whatever title/severity/category the underlying fix engine assigned rather than a second fixed rule-ID list. In practice it's the same rule substance, applied to source instead of a live DOM — so it isn't double-counted as separate rules here.

How to read each entry

Every rule has a stable id used as the issue's key in a scan report. Each entry below lists:

  • Trigger / Evidence — the exact condition in the page (or site) that causes the rule to fire, pulled from the same string the UI shows in a report.
  • Why it matters — the reasoning for why that condition is a problem (or a positive signal), again sourced from the audit module itself.
  • Effect / Fix — what to change, and what fixing it does to the score.
  • Weight / Severity — points deducted from that category's 100-point starting score if the rule fails, and the severity bucket that weight maps to (severityFromWeight in src/lib/auditUtils.ts): ≥14 Critical, ≥9 High, ≥5 Medium, ≥2 Low, else Informational.

Scoring model

Each category starts at 100 points. Every failed rule subtracts its weight from that category's score, clamped to a 20–99 range (scoreFromIssues in src/lib/auditUtils.ts) — a page can never show a perfect 100 or bottom out below 20, so the score always signals room for improvement or partial credit. Rules with a passing counterpart contribute nothing when they pass; a small number of rules exist only in their passing form in the current source (their failure state is folded into a sibling rule with a different id — noted per-entry below).

Categories