Proof you can inspect. Logic we protect.
Every finding traces to a named rule, an observable public signal, and an evidence packet. The scoring implementation stays proprietary so the system remains useful and harder to game.
RV-BKG-014Primary booking path stops before confirmationEvidence capturedRV-TRU-003Proof is missing before the paid askReviewRV-AIR-002Service scope is unclear to answer enginesClarifyRV-FUP-004No fallback for a not-ready visitorQueueSee the break. See the next action.
Every finding links an observable buyer-path issue to evidence, an affected step, and a verification action.
- Impact
- High · primary action blocked
- Confidence
- High · reproducible on mobile
- Effort
- Moderate
Book your service
Embedded scheduler stops before confirmation.
- Replace the blocked handoff with a mobile-safe route.
- Keep form state through the transition.
- Confirm success on iOS and Android.
- Re-scan the public buyer path.
Three rules we don't bend.
- Public pages only: no logins, dashboards, analytics, or private data
- We show our work: every score traces to a named rule and evidence
- No fake proof: no invented logos, testimonials, metrics, or urgency; samples labeled everywhere
Eight dimensions, one measured layer.
- 01Booking friction
- 02Local visibility
- 03AI readiness
- 04Mobile
- 05Trust
- 06CTA clarity
- 07Follow-up readiness
- 08Service-page quality
Lighthouse performance, Accessibility (WCAG), SSL & certificate, Security headers, Broken links, AI-crawler access, Structured data, Mobile rendering
How the score works.
- 01Each dimension checked against named rules, scored 0–100.
- 02Priority reflects action risk: a blocked transaction path outranks cosmetic polish.
- 03Combined into one revenue-capture score.
- 04Severity sets the fix order.
- 05Impact is expressed as severity and confidence unless customer-owned revenue inputs are supplied.
- CriticalThe money path is broken now.
- HighQuietly bleeding bookings or trust.
- MediumWorth fixing, not an emergency.
- HealthyHolding up. No action needed.
Every finding traces to a named rule and evidence.
From observation to fix order.
The public-page scan observes visible structured data and checks required public properties.
LocalBusiness schema exists, but name, address, or telephone is missing.
This exact evidence pattern is exposed in the public rule taxonomy.
The report keeps this below broken checkout/contact paths, but above polish.
The stack is illustrative. The rule id and evidence pattern come from the public taxonomy; scoring weights and detection implementation remain proprietary.
43 named checks. Each maps to a real rule in the scan engine — same id, same severity range, nothing invented.
AI Crawler Access4 rules
- AI crawler disallowed by robots.txtHighCRAWLER_BLOCKED_BY_ROBOTS_TXT
If a search or answer engine's crawler is disallowed in robots.txt, that engine cannot read your pages and you become invisible to its results — including AI answer surfaces that are sending an increasing share of buying traffic.
- Crawler blocked by meta robots noindexHighCRAWLER_BLOCKED_BY_META_ROBOTS
A noindex directive tells engines not to list the page at all. On a homepage this removes you from results entirely — a silent, total loss of organic and AI-answer visibility.
- Crawler blocked by X-Robots-Tag headerHighCRAWLER_BLOCKED_BY_X_ROBOTS_HEADER
An X-Robots-Tag noindex header suppresses the page in search and answer engines even when the HTML looks fine — a common, easily-missed misconfiguration that quietly removes you from results.
- Per-engine AI crawler access matrixHighHealthyCRAWLER_ACCESS_MATRIX
Different engines use different bots. A site can be visible to Google yet invisible to ChatGPT or Perplexity. The matrix shows exactly which buying-intent surfaces can and cannot reach you.
Structured Data9 rules
- No structured data (JSON-LD) foundHighstructured-data.absent
Without JSON-LD the page cannot qualify for any Google rich result and gives AI answer engines no machine-readable description of your business — you are harder to find and harder to cite.
- LocalBusiness schema missing required propertiesHighstructured-data.localbusiness.incomplete
A LocalBusiness block missing name, address, or phone is present-but-ineligible: Google will not render the rich result, so you lose the map pack and knowledge-panel surfaces that drive local bookings.
- Organization schema missing required propertiesHighstructured-data.organization.incomplete
Organization schema with a logo feeds the knowledge panel and brand recognition in search and AI answers. Missing it weakens how engines identify and represent your brand.
- Product/Offer schema missing required propertiesHighstructured-data.product.incomplete
Product schema without price or availability cannot show the price/stock rich result, so the listing misses the click-through advantage of products that display their price directly in results.
- Article schema missing required propertiesMediumstructured-data.article.incomplete
Complete Article schema improves how content is attributed and surfaced in search and AI answers, helping your expertise get cited rather than a competitor's.
- FAQPage schema missing required propertiesMediumstructured-data.faqpage.incomplete
FAQ schema can win extra real estate in results and is a strong source for AI answer engines. An FAQPage with no mainEntity produces nothing.
- BreadcrumbList schema missing required propertiesHealthystructured-data.breadcrumblist.incomplete
Breadcrumb rich results make your search listing clearer and more navigable, lifting click-through. An empty BreadcrumbList contributes nothing.
- Malformed JSON-LD on the pageHighstructured-data.parse-error
Broken JSON-LD is silently ignored by search engines — the effort you spent adding schema delivers zero benefit because none of it is read.
- Structured data present but not rich-result eligibleMediumstructured-data.no-rich-result-types
Schema that uses only unsupported types earns no rich result. Pointing it at a supported type is usually a small change with a visible payoff in results.
HTML Markup11 rules
- Missing <html lang> attributeHighmarkup.html-lang-missing
Without a declared language, screen readers and search engines cannot reliably determine the page language, hurting both accessibility and how the page is indexed for the right audience.
- Missing or empty <title>Highmarkup.title-missing
The title labels the page in browser tabs, search results, and shared links. With no title, every one of those surfaces shows nothing useful and click-through suffers.
- Missing <meta charset>Mediummarkup.meta-charset-missing
Without an explicit character encoding, special characters and currency symbols can render as garbled text, eroding trust at a glance.
- Missing viewport meta tagHighmarkup.viewport-missing
Without a viewport tag, mobile browsers do not scale the layout correctly, so the site can render zoomed-out and unusable on phones — where most local buyers arrive.
- Duplicate id attributesMediummarkup.duplicate-id
Duplicate ids break label/for associations, in-page anchors, and scripts, which can silently disable form fields or navigation that customers rely on.
- Images without alt textHighmarkup.img-missing-alt
Images without alt text are invisible to screen-reader users and to image search, costing both accessibility and a discovery channel.
- No <h1> headingHighmarkup.h1-missing
A single top-level heading anchors the document outline for assistive tech and search engines. No <h1> leaves both without a clear sense of what the page is about.
- Multiple <h1> headingsMediummarkup.h1-multiple
Several competing <h1>s blur the document outline, making it less clear to engines and assistive tech which message is primary.
- Empty heading tagsMediummarkup.heading-empty
Empty headings confuse the document outline and assistive tech, often a side effect of styling hacks that quietly degrade accessibility.
- Deprecated HTML tagsHealthymarkup.deprecated-tag
Obsolete tags signal an aging template and can render inconsistently in modern browsers, a small but real credibility tax.
- Anchors without hrefHealthymarkup.anchor-missing-href
An anchor with no href is not a keyboard-focusable link, so keyboard and screen-reader users cannot reach what is meant to be clickable.
Security3 rules
- SSL certificate invalid or untrustedCriticalssl_invalid
An invalid certificate triggers a full-page browser security warning that stops most visitors cold — the highest-severity, most immediate revenue leak on the list.
- SSL certificate expiring soonHighMediumssl_expiring
A certificate that lapses takes the whole site offline behind a security warning. The expiry countdown is the single highest-retention monitoring signal — it lets you fix it before customers ever see a failure.
- Weak security HTTP headersMediumHealthysecurity_headers_weak
Missing security headers leave the site more exposed to clickjacking, MIME-sniffing, and injection attacks, and they drag down trust/security scoring that some buyers and partners check.
Email Deliverability3 rules
- No DMARC record — your domain can be spoofedHighemail_no_dmarc
With no DMARC record, anyone can send email that appears to come from your domain. That enables phishing of your own customers and pushes your legitimate mail toward spam folders.
- DMARC is monitor-only (p=none)Healthyemail_dmarc_monitor_only
A p=none DMARC policy reports spoofing but blocks nothing. Spoofed mail still reaches inboxes, so the protection is only partial until the policy is tightened.
- No SPF record foundMediumemail_no_spf
SPF tells receiving servers which hosts may send mail for your domain. Without it, more of your legitimate email lands in spam and spoofing is easier.
Privacy & Consent4 rules
- Tracking scripts load without a consent managerHighMediumtracking.no_consent_manager
Loading analytics or advertising trackers before consent is a GDPR/ePrivacy risk for EU/UK visitors — a real, articulable compliance gap that can carry fines and erode trust.
- Advertising / session-replay trackers run without consentHightracking.advertising_without_consent
These trackers can fingerprint visitors and share data across sites. Running them with no consent gate materially raises GDPR/CCPA exposure compared with first-party analytics.
- Many cookies set without a consent gateMediumtracking.high_cookie_count
Non-essential cookies set before opt-in are a classic ePrivacy violation. A high pre-consent cookie count is a clear, countable red flag.
- Consent manager detected (verify gating)Healthytracking.consent_manager_present
A consent banner is good, but a banner that loads while trackers still fire before opt-in is not real protection. This rule prompts you to verify the gate actually works.
Tech Stack2 rules
- No analytics detectedHighTECH_NO_ANALYTICS
You can't measure what you can't see. With no analytics tag, you have no visibility into traffic, conversions, or where visitors drop off — every revenue decision is a guess.
- Platform / CMS / server fingerprintHealthyTECH_PLATFORM_FINGERPRINT
Knowing the underlying platform sets realistic expectations for what each fix costs and how it must be implemented, so the recommendations are grounded in your actual stack.
SEO & Metadata7 rules
- Homepage is marked noindexCriticalhomepage_noindex
A noindex homepage is removed from search results entirely. It is the most severe SEO finding because no other optimization matters if the page cannot be listed.
- Homepage title tag is missingHighhomepage_missing_title
The title is the headline of your search listing. Missing it means search engines invent one or show the URL, sharply lowering click-through.
- Homepage title length is weakMediumhomepage_title_length
Titles that are too short or too long get truncated or read as thin in results, leaving click-through on the table.
- Homepage meta description is missingMediumhomepage_missing_meta_description
With no meta description, engines auto-generate the snippet under your listing, surrendering control of the pitch that drives the click.
- Homepage canonical tag is missingMediumhomepage_missing_canonical
A canonical tag tells engines which URL is the real one, preventing duplicate-content dilution across www/non-www and tracking-parameter variants.
- Document language is not declaredHealthyhomepage_missing_lang
A declared language helps engines serve the page to the right regional audience and improves assistive-tech pronunciation.
- Homepage has no detected schema markupMediumhomepage_missing_schema
Schema is how engines and AI answer surfaces understand your business in machine-readable form. None present means they fall back to guessing from raw text.
Every finding carries its own proof.
Checkout fails on mobile Safari
Pay button unresponsive in the mobile-viewport render; the path never reaches confirmation.
Estimated impact: high · primary transaction path blocked.
The fix · Repair the mobile payment handoff, then verify the confirmation state on supported mobile browsers.
See the method on your site.
Not an SEO audit, not a guarantee — a revenue-capture read of your public site at a point in time.
Public pages only · no login · results in minutes