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.
SEO readiness
14 checks. Not verified and excluded: live 1, prototype 0.
AEO readiness
5 checks. Not verified and excluded: live 0, prototype 0.
Local SEO readiness
10 checks. Not verified and excluded: live 4, prototype 3.
SEO
Crawl, index, and on-page basics · 14 checks| Check | Live site | Prototype | Why 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| Check | Live site | Prototype | Why 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| Check | Live site | Prototype | Why 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.