Sample · Complete Audit of millandgable.com

An illustrated Complete Audit — dual-voice cards with 1-click Cursor/Claude fix prompts, an agent action plan, a B grade, and honest not-tested lanes. This is a representative example, not a live crawl.

Get your audit

clearline

COMPLETE AUDIT

millandgable.com

Prepared for sam@millandgable.com · 10 observed findings · 2,500 URL budget · Report a1b2c3d4

VERIFIED SITE HEALTH GRADE

B84 / 100

Based on 186 of 194 crawlable pages.

AT A GLANCE

What your site looks like — and how to fix it

We graded millandgable.com at B (84/100) based on 186 of 194 crawlable pages we could evaluate. We found 10 SEO issues: 4 high priority, 5 medium, and 1 lower priority. High-priority items are the ones most likely to hide pages from search or waste the traffic you already earn. By area: Crawl & Indexability B; On-Page Foundations B; AI Crawler Access C. Untested areas are left out of the grade on purpose — we do not invent scores.

Crawl & technical access· 4 issues

In crawl & technical access, we saw 4 distinct issues. The main ones: A canonical link tells search engines which version of a page is the "real" one, when the same content is reachable at more than one address (on 3 pages); Internal links are the links from one page on your site to another. A page with none pointing to it is called "orphaned." Broken ones lead to dead ends (on 3 pages); A client error (like a 404) means the page at that address doesn't exist — often because a link points to a page that moved or was deleted (on 3 pages); A redirect chain happens when a web address forwards to another address, which forwards to another, before landing on the real page (on 2 pages).

How to fix it

  • Self-referencing canonical on the preferred host; 301 the other host — usually a short change.
  • Point each link at the live page, or 301 where a page was replaced — usually a short change.
  • Remove retired URLs from the sitemap; keep only 200 pages you want indexed — usually a short change.
  • One 301 from each old path straight to the final URL — usually a short change.

Page content & on-page signals· 3 issues

In page content & on-page signals, we saw 3 distinct issues. The main ones: The page title is the clickable headline shown in a Google search result and in the browser tab — separate from the heading on the page itself (on 3 pages); The H1 is the main on-page heading — the large title text at the top of the page content, separate from the browser-tab title (on 4 pages); The meta description is the short summary text that can appear under a page's title in search results (on 4 pages).

How to fix it

  • Unique title per service that names the job and the city — a focused session of work.
  • One H1 per city that names the service and the town — usually a short change.
  • Write a unique 140–160 character description that states the offer — usually a short change.

Local visibility· 1 issue

In local visibility, we saw: NAP means Name, Address, and Phone — the core facts customers and Google use to trust that your website and your Google Business listing are the same business (on 3 pages).

How to fix it

  • One phone everywhere, matching the Google Business Profile — usually a short change.

AI answer visibility· 2 issues

In ai answer visibility, we saw 2 distinct issues. The main ones: This checks whether your robots.txt file is accidentally blocking the bots that let AI tools like ChatGPT, Perplexity, and Google's AI answers cite your site — a different, separate decision from blocking the bots that train AI models (on 2 pages); llms.txt is a short plain-text file at the root of your website (similar idea to robots.txt) that explains what your business does, which pages matter most, and how AI tools should cite you (on at least one page).

How to fix it

  • Allow GPTBot on pages you want cited; keep private paths blocked — usually a short change.
  • Publish a short llms.txt that names the business, services, and city — usually a short change.

Site hygiene (not ranking defects)· 1 issue

We also noted 1 hygiene item (security headers, similar). These do not usually change rankings, but they matter for visitors and trust.

How to fix it

  • Add a CSP at the edge. Hygiene only — not scored as SEO — a focused session of work.

What to do first. Start with: Self-referencing canonical on the preferred host; 301 the other host — usually a short change. Point each link at the live page, or 301 where a page was replaced — usually a short change. Work those first, then move down the priority plan.

Below, each finding has two voices: In plain terms for anyone who owns the business, and Technical detail for whoever implements the fix. Evidence stays measured either way.

GRADE COMPONENTS

What makes up the grade

The headline grade is based only on Crawl & Indexability and On-Page Foundations. Performance & Mobile and AI Crawler Access are shown separately and do not change it when untested. Click any box for what it measures and why it matters.

PRIORITY PLAN

Do these first

Ranked by impact against effort.

IMPLEMENTATION CARDS

In plain terms & technical detail

FINDING 01 · LOCAL VISIBILITY · HIGH IMPACT

NAP phone number does not match across the site

Where on your site. On these pages: /, /contact, /areas/cedar-falls.

High15 minOwner
In plain terms

NAP means Name, Address, and Phone — the core facts customers and Google use to trust that your website and your Google Business listing are the same business

What we saw on your site: Footer (319) 555-0142; /contact and Maps listing (319) 555-0198.

Why it matters to your business. Mismatched or missing NAP confuses Google’s local pack and makes you look less trustworthy next to competitors who show one clean phone and address everywhere.

Technical detail

NAP phone number does not match across the site

Footer (319) 555-0142; /contact and Maps listing (319) 555-0198. Recommended change: One phone everywhere, matching the Google Business Profile.

  • Evidence class: observed
  • Source: places · lane local
  • Scope: sampled · 3 pages
  • Measured: (319) 555-0142 vs (319) 555-0198
Measured
(319) 555-0142 vs (319) 555-0198
Where on the site
  • /
  • /contact
  • /areas/cedar-falls
Method
places · Local visibility

Exact repair

One phone everywhere, matching the Google Business Profile.

Verify after fix. Footer, contact page, and Maps listing show the same number.

Current state: Footer (319) 555-0142; /contact and Maps listing (319) 555-0198.

FINDING 03 · TECHNICAL CRAWL · HIGH IMPACT

Canonical pointed away from self on the homepage

Where on your site. On these pages: /, /services, /about.

High15 minDeveloper
In plain terms

A canonical link tells search engines which version of a page is the "real" one, when the same content is reachable at more than one address

What we saw on your site: https://millandgable.com/ canonicalizes to https://www.millandgable.com/

Why it matters to your business. Without it, search engines can split credit for that page across several web addresses instead of ranking one properly — or index the wrong copy.

Technical detail

Canonical pointed away from self on the homepage

https://millandgable.com/ canonicalizes to https://www.millandgable.com/ Recommended change: Self-referencing canonical on the preferred host; 301 the other host.

  • Evidence class: observed
  • Source: librecrawl · lane technical
  • Scope: template · 3 pages
  • Measured: https://millandgable.com/ → https://www.millandgable.com/
Measured
https://millandgable.com/ → https://www.millandgable.com/
Where on the site
  • /
  • /services
  • /about
Method
librecrawl · Technical crawl

Exact repair

Self-referencing canonical on the preferred host; 301 the other host.

Verify after fix. Fetch / and confirm rel=canonical matches the requested URL.

Current state: https://millandgable.com/ canonicalizes to https://www.millandgable.com/

FINDING 04 · ON-PAGE · MEDIUM IMPACT

Missing unique H1 on city pages

Where on your site. On these pages: /areas/cedar-falls, /areas/waterloo, /areas/waverly, /areas/independence.

Medium15 minContent
In plain terms

The H1 is the main on-page heading — the large title text at the top of the page content, separate from the browser-tab title

What we saw on your site: City pages reuse the homepage H1.

Why it matters to your business. It helps both readers and search engines quickly confirm the page delivers what they were looking for.

Technical detail

Missing unique H1 on city pages

City pages reuse the homepage H1. Recommended change: One H1 per city that names the service and the town.

  • Evidence class: observed
  • Source: firecrawl · lane on_page
  • Scope: template · 4 pages
  • Measured: H1 = Home of Mill & Gable on 4 URLs
Measured
H1 = Home of Mill & Gable on 4 URLs
Where on the site
  • /areas/cedar-falls
  • /areas/waterloo
  • /areas/waverly
  • /areas/independence
Method
firecrawl · On-page

Exact repair

One H1 per city that names the service and the town.

Verify after fix. Each /areas/* page has a distinct H1.

Current state: City pages reuse the homepage H1.

FINDING 05 · ON-PAGE · MEDIUM IMPACT

Missing meta descriptions on priority pages

Where on your site. On these pages: /services, /financing, /warranty, /get-a-quote.

Medium15 minContent
In plain terms

The meta description is the short summary text that can appear under a page's title in search results

What we saw on your site: 8 money pages have an empty description.

Why it matters to your business. It doesn't directly affect ranking, but a clear one gives a searcher a reason to click your result instead of a competitor's.

Technical detail

Missing meta descriptions on priority pages

8 money pages have an empty description. Recommended change: Write a unique 140–160 character description that states the offer.

  • Evidence class: observed
  • Source: firecrawl · lane on_page
  • Scope: sampled · 4 pages
  • Measured: 8 pages, empty description
Measured
8 pages, empty description
Where on the site
  • /services
  • /financing
  • /warranty
  • /get-a-quote
Method
firecrawl · On-page

Exact repair

Write a unique 140–160 character description that states the offer.

Verify after fix. Confirm a meta description on each listed URL.

Current state: 8 money pages have an empty description.

FINDING 06 · ON-PAGE · HIGH IMPACT

Duplicate title tags on service pages

Where on your site. On these pages: /services/roof-repair, /services/emergency-roof, /services/roof-replacement.

High1-2 hrsContent
In plain terms

The page title is the clickable headline shown in a Google search result and in the browser tab — separate from the heading on the page itself

What we saw on your site: Three service URLs share the title "Roofing Services | Mill & Gable".

Why it matters to your business. It's one of the strongest signals search engines use to understand what a page is about, and the first thing a searcher reads before clicking.

Technical detail

Duplicate title tags on service pages

Three service URLs share the title "Roofing Services | Mill & Gable". Recommended change: Unique title per service that names the job and the city.

  • Evidence class: observed
  • Source: firecrawl · lane on_page
  • Scope: template · 3 pages
  • Measured: 3 pages, same title
Measured
3 pages, same title
Where on the site
  • /services/roof-repair
  • /services/emergency-roof
  • /services/roof-replacement
Method
firecrawl · On-page

Exact repair

Unique title per service that names the job and the city.

Verify after fix. Compare <title> across /services/* — no duplicates.

Current state: Three service URLs share the title "Roofing Services | Mill & Gable".

FINDING 07 · TECHNICAL CRAWL · MEDIUM IMPACT

Sitemap lists URLs that return 404

Where on your site. On these pages: /services/old-shingle-line, /blog/2022-hail-checklist, /careers/estimator-2024.

Medium15 minOwner
In plain terms

A client error (like a 404) means the page at that address doesn't exist — often because a link points to a page that moved or was deleted

What we saw on your site: sitemap.xml includes 6 URLs that 404.

Why it matters to your business. Broken pages waste the crawl budget search engines give your site and frustrate real visitors who click through.

Technical detail

Sitemap lists URLs that return 404

sitemap.xml includes 6 URLs that 404. Recommended change: Remove retired URLs from the sitemap; keep only 200 pages you want indexed.

  • Evidence class: observed
  • Source: librecrawl · lane technical
  • Scope: full · 3 pages
  • Measured: 6 of 194 sitemap URLs return 404
Measured
6 of 194 sitemap URLs return 404
Where on the site
  • /services/old-shingle-line
  • /blog/2022-hail-checklist
  • /careers/estimator-2024
Method
librecrawl · Technical crawl

Exact repair

Remove retired URLs from the sitemap; keep only 200 pages you want indexed.

Verify after fix. Fetch every sitemap loc and confirm HTTP 200.

Current state: sitemap.xml includes 6 URLs that 404.

FINDING 08 · AI ANSWER VISIBILITY · MEDIUM IMPACT

GPTBot is blocked from /resources

Where on your site. On these pages: /resources, /resources/shingle-guide.

Medium15 minOwner
In plain terms

This checks whether your robots.txt file is accidentally blocking the bots that let AI tools like ChatGPT, Perplexity, and Google's AI answers cite your site — a different, separate decision from blocking the bots that train AI models

What we saw on your site: robots.txt Disallow: /resources for GPTBot.

Why it matters to your business. Blocking the wrong bot removes you from AI-generated answers entirely, for no privacy or training benefit — almost always an accident from an old "block all AI" robots.txt rule.

Technical detail

GPTBot is blocked from /resources

robots.txt Disallow: /resources for GPTBot. Recommended change: Allow GPTBot on pages you want cited; keep private paths blocked.

  • Evidence class: observed
  • Source: robots_txt · lane ai_visibility
  • Scope: full · 2 pages
  • Measured: Disallow: /resources
Measured
Disallow: /resources
Where on the site
  • /resources
  • /resources/shingle-guide
Method
robots_txt · AI answer visibility

Exact repair

Allow GPTBot on pages you want cited; keep private paths blocked.

Verify after fix. robots.txt for User-agent: GPTBot no longer blocks /resources.

Current state: robots.txt Disallow: /resources for GPTBot.

FINDING 09 · TECHNICAL CRAWL · MEDIUM IMPACT

Redirect chain on the contact form

Where on your site. On these pages: /contact, /contact-us.

Medium15 minDeveloper
In plain terms

A redirect chain happens when a web address forwards to another address, which forwards to another, before landing on the real page

What we saw on your site: /contact → /contact-us → /get-a-quote (2 hops).

Why it matters to your business. Every extra hop slows the page down and makes it more likely a search engine gives up before reaching the real content.

Technical detail

Redirect chain on the contact form

/contact → /contact-us → /get-a-quote (2 hops). Recommended change: One 301 from each old path straight to the final URL.

  • Evidence class: observed
  • Source: curl · lane technical
  • Scope: single url · 2 pages
  • Measured: 2-hop chain, 412ms extra
Measured
2-hop chain, 412ms extra
Where on the site
  • /contact
  • /contact-us
Method
curl · Technical crawl

Exact repair

One 301 from each old path straight to the final URL.

Verify after fix. Request /contact and confirm a single hop to the live form.

Current state: /contact → /contact-us → /get-a-quote (2 hops).

FINDING 10 · AI ANSWER VISIBILITY · LOW IMPACT

No llms.txt published

Where on your site. On /llms.txt.

Low15 minOwner
In plain terms

llms.txt is a short plain-text file at the root of your website (similar idea to robots.txt) that explains what your business does, which pages matter most, and how AI tools should cite you

What we saw on your site: https://millandgable.com/llms.txt returns 404.

Why it matters to your business. AI assistants that recommend local services increasingly look for this file. Without it they guess from scraps of your site — or skip you when someone asks for a provider in your market.

Technical detail

No llms.txt published

https://millandgable.com/llms.txt returns 404. Recommended change: Publish a short llms.txt that names the business, services, and city.

  • Evidence class: observed
  • Source: curl · lane ai_visibility
  • Scope: full · 1 page
  • Measured: HTTP 404
Measured
HTTP 404
Where on the site
  • /llms.txt
Method
curl · AI answer visibility

Exact repair

Publish a short llms.txt that names the business, services, and city.

Verify after fix. GET /llms.txt returns 200 with business facts.

Current state: https://millandgable.com/llms.txt returns 404.

COPY-PASTE SCHEMA

Pasteable JSON-LD blocks

Add these structured blocks into your CMS or HTML head so search engines and AI systems get clean business facts. Replace placeholder phone, hours, and services with your real details before publishing.

LocalBusiness

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "@id": "https://millandgable.com/#organization",
  "name": "MILLANDGABLE",
  "url": "https://millandgable.com",
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "MILLANDGABLE Services",
    "itemListElement": [
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Core Service"
        },
        "position": 1
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Consultation"
        },
        "position": 2
      }
    ]
  }
}

BreadcrumbList

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://millandgable.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Services",
      "item": "https://millandgable.com/services"
    }
  ]
}

CONTENT OPPORTUNITY

Frequently Asked Questions & Service Guidance

RECOMMENDED H1
Frequently Asked Questions About MILLANDGABLE Services
TARGET PATH & INTENT
/faq · Informational & Commercial Investigation
WHY THIS MATTERS
Site lacks a dedicated FAQ page. Adding an FAQPage schema-enabled guide targets high-intent local customer questions and AI citation queries.
RECOMMENDED SECTIONS
  • What services do you offer and what areas do you cover?
  • How much does a standard inspection/service cost?
  • What is included in the full service report?
  • How quickly can a service appointment be scheduled?

GLOSSARY

Terms used in this report

Quick reference for jargon that showed up above. Each implementation card already explains its own issue in plain terms — this list is for sharing with the rest of the team.

Canonical link
A canonical link tells search engines which version of a page is the "real" one, when the same content is reachable at more than one address.
Why it matters. Without it, search engines can split credit for that page across several web addresses instead of ranking one properly — or index the wrong copy.
Internal links
Internal links are the links from one page on your site to another. A page with none pointing to it is called "orphaned." Broken ones lead to dead ends.
Why it matters. Search engines mostly discover and rank pages by following links — broken or missing links waste crawl budget and frustrate real visitors.
Broken page
A client error (like a 404) means the page at that address doesn't exist — often because a link points to a page that moved or was deleted.
Why it matters. Broken pages waste the crawl budget search engines give your site and frustrate real visitors who click through.
Sitemap
A sitemap is a list you publish of the pages you want search engines to find. It should only include pages that are allowed to appear in search.
Why it matters. Pages left out of the sitemap can stay undiscovered; pages that should stay private but are listed waste crawl time and blur which URLs actually matter for ranking.
Redirect chain
A redirect chain happens when a web address forwards to another address, which forwards to another, before landing on the real page.
Why it matters. Every extra hop slows the page down and makes it more likely a search engine gives up before reaching the real content.
Page title
The page title is the clickable headline shown in a Google search result and in the browser tab — separate from the heading on the page itself.
Why it matters. It's one of the strongest signals search engines use to understand what a page is about, and the first thing a searcher reads before clicking.
H1 heading
The H1 is the main on-page heading — the large title text at the top of the page content, separate from the browser-tab title.
Why it matters. It helps both readers and search engines quickly confirm the page delivers what they were looking for.
Meta description
The meta description is the short summary text that can appear under a page's title in search results.
Why it matters. It doesn't directly affect ranking, but a clear one gives a searcher a reason to click your result instead of a competitor's.
Local listing / NAP
NAP means Name, Address, and Phone — the core facts customers and Google use to trust that your website and your Google Business listing are the same business.
Why it matters. Mismatched or missing NAP confuses Google’s local pack and makes you look less trustworthy next to competitors who show one clean phone and address everywhere.
AI crawler access
This checks whether your robots.txt file is accidentally blocking the bots that let AI tools like ChatGPT, Perplexity, and Google's AI answers cite your site — a different, separate decision from blocking the bots that train AI models.
Why it matters. Blocking the wrong bot removes you from AI-generated answers entirely, for no privacy or training benefit — almost always an accident from an old "block all AI" robots.txt rule.
llms.txt
llms.txt is a short plain-text file at the root of your website (similar idea to robots.txt) that explains what your business does, which pages matter most, and how AI tools should cite you.
Why it matters. AI assistants that recommend local services increasingly look for this file. Without it they guess from scraps of your site — or skip you when someone asks for a provider in your market.
Security header
Security headers are settings a web server sends that tell browsers how to handle your site safely — they're a site-hygiene detail, not a ranking factor.
Why it matters. They protect visitors from certain attacks; worth fixing, but they won't move your search rankings on their own.

ALSO OBSERVED

Hygiene, outside the SEO grade

These are real observations, but they are not SEO defects. They do not affect the search health score.

  • Missing CSP on responses

    In plain terms

    What we saw on your site: Content-Security-Policy header is absent sitewide.

    Technical detail

    CSP header missing

    Content-Security-Policy header is absent sitewide.

SCOPE AND LIMITS

What this audit did and did not check

The search health score reflects observed technical and on-page checks within the pages crawled. It does not measure rankings, revenue, backlink quality, local pack position, or whether an AI system will cite your business. “Not tested” is not a pass.

LANESTATUSWHY / NOTES
Technical crawlTested — 5 findings5 open findings in this lane
On-pageTested — 3 findings3 open findings in this lane
PerformanceNot testedField Core Web Vitals need a CrUX data source. We never invent a speed score.
Local visibilityTested — 1 finding1 open finding in this lane · Public observation: on-site name/phone/address and Google Maps listing match (no owner Insights).
AI answer visibilityTested — 2 findings2 open findings in this lane

WHAT WE DID NOT TEST

Honest gaps — and the natural next step

  • GBP Insights (owner metrics) — calls, direction requests, and search-query volume still need your Google login (Growth and above). Public Maps listing + on-site NAP comparison runs without linking when the local lane is tested.
  • Map-pack rank tracking over time (geo-sensitive; not a one-shot crawl grade)
  • Google Search Console and Analytics (requires your login)
  • Competitor and backlink research (provider-backed; Growth and above)
  • Live multi-prompt AI citation testing (Authority / AI Visibility)
  • Field Core Web Vitals / mobile speed (needs CrUX — never invented as a fake score)

Missing access is labeled not tested. It is not treated as a pass or a fail.

TIER
Complete Audit
PAGE BUDGET
2,500 URLs
REVIEW
Automated