Prototype Only For prototype purposes only. All content and images are not final and are only here to show what is possible.
SEO / AEO Compare
Performance Analysis

Site Speed Report

Prototype vs. Projected React Build

This Page Loaded In
—
seconds (HTML prototype)
Projected React Load
—
seconds (estimated)
Estimated Improvement
Calculating...
faster load with React + code splitting + image optimization
JSON-LD Schema

Checking for schema blocks on this page...

What improves in the React build (all else equal):
  • Code splitting — only the current page's JS is loaded
  • Image optimization — WebP conversion + lazy loading via React Image
  • CDN caching of static assets via Vercel/Netlify edge network
  • Tree-shaking removes unused CSS and JS from the bundle
  • Prefetching — next pages load before the user clicks

Developer note: Remove this banner and modal entirely from the React production build.

SEO / AEO / Local SEO in-depth

In-depth audit

Every check in the audit (29 in total), grouped by SEO, AEO, and Local SEO, with the live finding, the prototype finding, the source, and why it matters.

North Central Utility · www.ncutility.com vs the redesign prototype · Audit date 2026-09-27

SEO readiness

58/100
79/100

14 checks. Not verified and excluded: live 1, prototype 0.

AEO readiness

60/100
60/100

5 checks. Not verified and excluded: live 0, prototype 0.

Local SEO readiness

67/100
79/100

10 checks. Not verified and excluded: live 4, prototype 3.

SEO

Crawl, index, and on-page basics · 14 checks
CheckLive sitePrototypeWhy it matters
robots.txt
Crawl and index

Needs work

Present and crawlable. Sets crawl-delay: 10 for all bots and has no Sitemap: line.

Source: L-ROBOTS

Opportunity

Designed for go-live, add at launch. No robots.txt in the prototype folder yet.

Source: P-HTML

robots.txt tells crawlers what they may fetch and where the sitemap lives. Google ignores crawl-delay, but Bing honors it, so a 10-second delay slows discovery of new inventory and location pages. Adding a Sitemap: line is free.
XML sitemap
Crawl and index

Gap

/sitemap.xml returns HTTP 500. /sitemap_index.xml and /wp-sitemap.xml return 404.

Source: L-SITEMAP

Opportunity

Designed for go-live, add at launch. No sitemap.xml in the prototype folder yet.

Source: P-HTML

A working XML sitemap is the main way Google and Bing find every location, service, and inventory URL. A server error on the sitemap means search engines rely on link-following alone.
Canonical tags
Crawl and index

Pass

Homepage declares https://www.ncutility.com/. Other pages not verified.

Source: L-HTML

Opportunity

Designed for go-live, add at launch. 0 of 48 pages carry a canonical tag.

Source: P-HTML

Canonical tags consolidate signals on the preferred www URL and protect against the apex and www duplicates the live site serves.
Indexable pages
Crawl and index

Pass

Homepage meta robots is max-image-preview:large (indexable).

Source: L-HTML

Pass

All public pages indexable. Only the internal seo.html and aeo.html reports are noindex.

Source: P-HTML

Public sales, service, and location pages must be indexable. Internal reports should not be.
Location URL collisions
Crawl and index

Gap

/locations/eau-claire/ opens a 2013 'Coming Soon' blog post and /locations/north-mankato/ opens a 2016 'Ground Breaking' post, not the location pages.

Source: L-CRAWL

Pass

Location pages use long, unique slugs only. The short-alias 301 plan is documented, with human review for the two blog collisions.

Source: P-GUIDE

People and crawlers who guess the short URL land on an old post, which dilutes the real location page and confuses answer engines about the address.
Custom 404 page
Crawl and index

Not verified

Not verified.

Source: L-NONE

Opportunity

Designed for go-live, add at launch. A 404 template exists in _templates/, but there is no 404.html at the root.

Source: P-HTML

A helpful 404 with links to Locations, Parts, and Service keeps visitors from bouncing when an old URL breaks.
Title tags
On-page

Pass

Homepage: 'Trailer Sales, Service & Parts | North Central Utility'. The Eau Claire page has a city-specific title.

Source: L-HTML

Pass

48 of 48 pages have a title, and there are no duplicates.

Source: P-HTML

Titles are the headline in search results. Unique, intent-led titles per page and per city help each page win its own query.
Meta descriptions
On-page

Needs work

Homepage has one, but it leads with 'one of the largest authorized Utility dealers', which is not substantiated on-site.

Source: L-HTML

Pass

45 of 48 pages have a description. The 3 without are the internal seo.html, aeo.html, and brand.html.

Source: P-HTML

The description is the sales line under the title. Unsubstantiated superlatives can be ignored or rewritten by Google and repeated inaccurately by AI assistants.
H1 headings
On-page

Needs work

The homepage H1 is 'SHOP FOR PARTS' (a parts banner), not what the business is.

Source: L-HTML

Pass

Every page has exactly one H1. Home: 'Built for the Road Ahead'. Inner pages use descriptive H1s.

Source: P-HTML

The H1 tells crawlers and screen readers the page's main topic. The homepage should say trailer sales, service, and parts, not one sub-offer.
Open Graph / social share tags
On-page

Gap

No og: or twitter: tags on the homepage.

Source: L-HTML

Opportunity

Designed for go-live, add at launch. No OG tags in 48 pages yet, and the og-share image has not been produced.

Source: P-HTML

Without OG tags, links shared in texts, LinkedIn, and Facebook show a random image and snippet. That matters for recruiting posts and sales follow-ups.
Image alt text
On-page

Needs work

Homepage: 5 of 27 images lack alt text. Media library: 140 of 354 images have an empty alt field.

Source: L-HTML / L-MEDIA

Pass

All 26 img tags across 48 pages have alt attributes. Decorative images are marked empty on purpose.

Source: P-HTML

Alt text feeds image search (trailer types, inventory) and accessibility. Empty alts on product photos leave both on the table.
Mobile viewport
On-page

Pass

Responsive viewport meta present.

Source: L-HTML

Pass

Responsive viewport on all pages. Checked at 390 and 1440.

Source: P-HTML

Google indexes the mobile version first.
Service, parts, rental, and brand pages
Content and IA

Pass

Dedicated URLs exist for sales, inventory, Utility, MAC, Cargobull, parts, service, DOT inspections, rentals, Moore Space, and parking.

Source: L-CRAWL

Pass

The same IA is kept as 48 flat pages, with a shared header and footer on every page.

Source: P-HTML

Each offer having its own page lets it rank for its own intent (for example 'DOT trailer inspection Madison').
Unsubstantiated claims
Content and IA

Needs work

Homepage states 'over $5 million in parts', 'one of the largest semi-trailer dealerships in the nation', and 'the Midwest's leader in semi-trailer wreck repair'.

Source: L-HOME

Needs work

The new homepage avoids them. Inner pages keep them with a visible 'confirm with client' flag.

Source: P-HTML

Answer engines quote claims verbatim. Claims that cannot be backed up are a trust and compliance risk, and specific, provable facts (10 locations, 40+ years, authorized brands) quote better.

AEO

Answer-engine readiness: can AI assistants and rich results understand and quote the site · 5 checks
CheckLive sitePrototypeWhy it matters
Organization / WebSite schema
Answer engines (AEO)

Gap

No Organization or WebSite JSON-LD. The only schema is 10 LocalBusiness blocks on the homepage.

Source: L-HTML

Opportunity

Designed for go-live, add at launch. The static prototype emits no JSON-LD.

Source: P-HTML

Organization schema ties the brand, logo, phone, and social profiles into one entity that AI assistants and Google's Knowledge Graph can trust. It also records the Badger Utility heritage.
FAQ content / FAQPage schema
Answer engines (AEO)

Gap

No general FAQ page among the discovered URLs. The Youth Apprentice FAQ shipped a placeholder answer ('I need info for this').

Source: L-CRAWL / L-CRIT

Gap

No general FAQ page yet. The placeholder is flagged for rewrite.

Source: P-HTML

Question-and-answer blocks are the format answer engines lift most often. Common buyer questions (financing, warranty repair brands, DOT inspections, rental terms, hours) are not answered anywhere in Q&A form today.
Plain-language 'who, what, where' answer
Answer engines (AEO)

Pass

Homepage: 'North Central Utility has 10 dealerships conveniently located in Wisconsin, Minnesota, and North Dakota.'

Source: L-HOME

Pass

The homepage lead states sales, parts, service, and rentals across WI, MN, and ND. The region band states 10 locations and 40+ years.

Source: P-HTML

A single quotable sentence covering who, what, and where is what assistants surface for 'who sells Utility trailers near me'.
AI crawler access
Answer engines (AEO)

Pass

GPTBot, ChatGPT-User, CCBot, ClaudeBot, and Google-Extended are allowed, with crawl-delay: 10. Only serpstatbot is blocked.

Source: L-ROBOTS

Opportunity

Designed for go-live, add at launch. The robots.txt policy should keep AI crawlers allowed.

Source: P-HTML

If AI crawlers cannot read the site, assistants answer from third-party listings instead.
Authorized brands and warranty-repair list
Answer engines (AEO)

Pass

Homepage lists authorized warranty repair for Utility, MAC Trailer, Trail King, Stoughton, Wells Cargo, Wilson, Timpte, and Kentucky Trailers.

Source: L-HOME

Pass

Service Capabilities keeps the full authorized warranty-repair list.

Source: P-HTML

Brand plus service plus place is exactly the entity triple assistants use to answer 'where can I get Trail King warranty repair near Fargo'.

Local SEO

Google Business Profile, NAP consistency, local schema, location pages, and reviews · 10 checks
CheckLive sitePrototypeWhy it matters
LocalBusiness schema
Local SEO

Needs work

10 LocalBusiness blocks on the homepage, with name, address, phone, hours, and image. There is no geo, url, hasMap, or sameAs, and the generic LocalBusiness type is used. Presence on location pages is not verified.

Source: L-HTML

Opportunity

Designed for go-live, add at launch: one LocalBusiness (AutomotiveBusiness) block per location page, using the verified NAP already on each page.

Source: P-LOC

Per-location structured data is the clearest signal tying each shop to its Google Business Profile, map pin, and hours. Putting all 10 on the homepage, and not on each location page, weakens the local match.
NAP consistency: addresses
Local SEO

Gap

Schema mismatches the visible addresses. Madison's schema pairs 'Madison' with ZIP 53532 (the DeForest shop ZIP). Waukesha's schema lists '1100 Silvernail Road, Waukesha 53187', but the shop is in Pewaukee 53072 and 53187 is the PO box ZIP. Names are cased 'EAU Claire' and 'ST. Cloud'.

Source: L-HTML / L-HOME

Pass

Each location page separates Physical / shipping from Mailing, with the correct city and ZIP (for example Madison: 4334 Daentl Rd., Deforest, WI 53532).

Source: P-LOC

Local ranking depends on the name, address, and phone matching across the site, schema, Google Business Profile, and directories. A PO box ZIP on a street address is a classic mismatch.
NAP consistency: phone numbers
Local SEO

Needs work

The homepage footer pairs Kaukauna's (800) 233-9122 with Eau Claire's (855) 259-9595. The Green Bay and St. Cloud numbers show a click-to-call overlay artifact in text extraction but are clean in the page HTML.

Source: L-HOME / L-CRAWL

Pass

One tel link per location page, matching that shop's listed number.

Source: P-LOC

A wrong or doubled phone next to a location confuses callers and local-search matching.
Location landing pages
Local SEO

Pass

Long-slug location pages exist with local copy. Eau Claire mentions Highway 53, the Chippewa Valley, and nearby towns.

Source: L-LOC / L-CRAWL

Pass

10 location pages with full NAP, hours, services at that shop, and a Locations hub linking all 10.

Source: P-LOC

A strong, unique page per shop is the landing page each Google Business Profile should point to.
Service-area and nearby-town copy
Local SEO

Pass

The Eau Claire page lists Altoona, Chippewa Falls, Menomonie, Lake Hallie, and Fall Creek. Other location pages not verified.

Source: L-LOC

Needs work

3 of 10 location pages (Eau Claire, Waukesha, Wausau) mention surrounding communities.

Source: P-LOC

Nearby-town copy helps a shop appear for searches from the towns it actually serves, without doorway pages.
Hours
Local SEO

Pass

Schema lists Mon-Fri hours per shop (for example Madison 06:00-18:00, Green Bay 07:00-16:30).

Source: L-HTML

Pass

Each location page lists hours. Madison shows Mon-Fri 6:00am-6:00pm, matching the live schema.

Source: P-LOC

Hours that match between the site, schema, and GBP stop 'closed' surprises and support 'open now' searches.
Map and directions links
Local SEO

Not verified

No Google Maps or GBP links found in the homepage HTML. Location pages not verified.

Source: L-HTML

Opportunity

No map embed or directions link on the location pages yet (add at launch).

Source: P-LOC

A directions link to the verified GBP listing helps drivers find the yard and reinforces the site-to-listing connection.
Google Business Profile listings
Local SEO

Not verified

Not verified. There is no GBP access and no GBP links in the page HTML.

Source: L-NONE

Not verified

Not verified. Depends on client GBP access.

Source: L-NONE

For 'trailer repair near me' searches, the GBP listing usually outranks the website itself. Each of the 10 shops needs a claimed, verified profile with the correct category, hours, and landing page.
Reviews and ratings signals
Local SEO

Not verified

Not verified. There is no review schema or widget in the homepage HTML, and review counts or ratings were not checked.

Source: L-HTML / L-NONE

Not verified

Not verified. No review content in the prototype.

Source: P-HTML

Review volume and recency are strong local signals. No counts are claimed here because none were verified.
Directory / citation consistency
Local SEO

Not verified

Not verified.

Source: L-NONE

Not verified

Not verified.

Source: L-NONE

Directory listings (Bing Places, Apple Business Connect, Yelp, industry directories) should match the site and GBP NAP.

Sources

  • L-HTML: Live homepage HTML capture, www.ncutility.com (browser capture 2026-09-16, Nancy archive raw/home.html)
  • L-ROBOTS: Live robots.txt via WebFetch (2026-09-27)
  • L-SITEMAP: Live /sitemap.xml via WebFetch: HTTP 500 (2026-09-27); /sitemap_index.xml and /wp-sitemap.xml 404 (crawl notes 2026-09-15)
  • L-HOME: Live homepage text via WebFetch (2026-09-27)
  • L-LOC: Live /locations/eau-claire-wi/ via WebFetch (2026-09-27)
  • L-CRAWL: Live crawl notes and discovered-URL list (Nancy archive, 2026-09-15/16)
  • L-MEDIA: Live WordPress media library listing (live-media-all.json, 354 images)
  • L-CRIT: Nancy CRITICAL findings for the live site (references/nancy-critical.md)
  • L-NONE: No live source available: needs client or Google Business Profile access
  • P-HTML: Prototype HTML audit of all 48 root pages (repo main, 2026-09-27)
  • P-LOC: Prototype location pages (10 x locations-*.html)
  • P-GUIDE: Prototype PROJECT_GUIDE.md / SCOPE.md

How to read this. Scores are checklist readiness only (Pass = 2, Needs work or Opportunity = 1, Gap = 0; Not verified is excluded). They are not rankings, traffic, or search-volume estimates, and none are claimed here.

Live findings come from the sources named on each check. Anything we could not check directly is marked Not verified. Prototype items marked "Designed for go-live, add at launch" are technical plumbing (robots.txt, sitemap, schema, canonicals) that belongs on the production domain, not the review copy.