Audits & scoring

How scoring works

Result values, rule and category weights, the gating cap, vertical overrides and how not-assessable rules are excluded from the score.

Updated

Every score EchoPilot shows comes from one published rule set, rules/audit_rules.yaml (version 0.1), evaluated the same way on every run. The rule set version and its hash are stored on each audit. This article describes the formula; nothing about it is tuned per customer.

Results and values

Each rule ends in one of four results. Three of them carry a value: pass = 1.0, partial = 0.5, fail = 0.0. The fourth, not assessable (na), carries no value and is excluded from the calculation entirely; see Why a rule says not assessable.

Rules, weights and categories

There are 86 rules in ten categories:

Category Rules Category weight
Website foundation (W) 12 15
Technical SEO (S) 13 12
Local presence (L) 12 15
Reviews and reputation (R) 9 13
Social media (M) 10 12
Conversion capture (C) 10 12
Content and email (E) 6 8
Analytics and ads (A) 6 5
Brand consistency (B) 4 4
AI visibility (V) 4 4

Each rule has its own weight, between 1 and 3 in the base rule set, and a severity (critical, high, medium, low). Weight affects the score; severity does not. Severity orders the findings for the memo. Each rule page under /kb/rules/website-foundation and its siblings lists the checks, weights and fixes for one category.

The category score

Category score = Σ(weight × value) / Σ(weight of assessable rules) × 100.

Only rules that returned pass, partial or fail are in the denominator. A category in which no rule could be assessed has no score and shows a dash.

The overall score

Overall = Σ(category weight × category score) / Σ(category weight of the categories that have a score).

Categories without a score are dropped from both the numerator and the denominator, so a missing category redistributes weight to the others rather than pulling the overall down. Full precision is stored; the pages round to whole numbers.

Gating

Three gating checks run before the rules:

  • G1 — the site returns 200 over HTTPS with a valid certificate.
  • G2 — a Google Business Profile exists and is claimed.
  • G3 — at least one working contact path (phone, form or email) on the homepage.

If any gating check fails, the overall is capped at 40. The uncapped value is still stored and shown next to the cap. Category scores are never capped, and every normal rule still runs. A gating check that cannot be assessed does not cap anything.

Vertical overrides

The kind of business you pick in the wizard maps to one of six business types. Five of them adjust the rule set; "other" applies nothing:

  • restaurant — requires C5, L3, L4; skips E1, E2.
  • home_services — requires C2, R3, L12; boosts R1 to weight 4.
  • b2b_services — requires M6; skips L12, C7; boosts E3 to weight 3.
  • ecommerce — requires C5, S12, A4; skips L11, L12.
  • medical_dental — requires C5, R5, W12; skips C7.

Precedence is skip, then require, then boost. A skipped rule does not run and is marked not assessable with the reason "skipped for this business type", so it never counts against you. A required rule is flagged on the report; if it could not be evaluated, the report says "required, could not evaluate" instead of assuming a result. A boost replaces the rule's weight.

What the free score changes

The free score runs the 34 rules whose sources need no credential, with business type "other". The formula is identical; the denominators are simply smaller.

What the score is not

A score describes what the rules could observe on the date of the audit. EchoPilot does not and cannot promise search positions, traffic, leads or revenue from moving it; those depend on your market, your competitors and the platforms themselves.

Still stuck? Email [email protected] and a person will answer.