Internal — not indexed

SEO QA: company name title case

Every public surface below must render the company name as Japanese Knotweed Elimination — each word capitalised, no lowercase variants, no "Ltd", no "JK Elimination", no "knotweed wales".

Single source of truth: all rendered output must read from SITE.name in src/lib/site.ts. If you spot a hardcoded string anywhere else, replace it with {SITE.name}.

Header

FileSurfaceExpected valueOK
src/components/Header.tsxLogo / wordmark textJapanese Knotweed Elimination
src/components/Header.tsxMobile menu brand labelJapanese Knotweed Elimination

Footer

FileSurfaceExpected valueOK
src/components/Footer.tsxBrand name beside leaf iconJapanese Knotweed Elimination
src/components/Footer.tsxCopyright line© <year> Japanese Knotweed Elimination
src/components/Footer.tsxBody copy mentionReads as 'Japanese Knotweed Elimination' wherever named

Metadata — root

FileSurfaceExpected valueOK
src/routes/__root.tsx<title> defaultJapanese Knotweed Elimination | M4 Corridor Specialists
src/routes/__root.tsxmeta name=authorJapanese Knotweed Elimination
src/routes/__root.tsxog:site_nameJapanese Knotweed Elimination

Metadata — index

FileSurfaceExpected valueOK
src/routes/index.tsxog:titleJapanese Knotweed Elimination — M4 Corridor Specialists

Metadata — about

FileSurfaceExpected valueOK
src/routes/about.tsx<title> and og:titleAbout — Japanese Knotweed Elimination

Metadata — contact

FileSurfaceExpected valueOK
src/routes/contact.tsxog:title and meta descriptionContact — Japanese Knotweed Elimination

Metadata — services

FileSurfaceExpected valueOK
src/routes/services.tsx<title> and og:titleIncludes 'Japanese Knotweed Elimination' or correct title case where named

Metadata — areas

FileSurfaceExpected valueOK
src/routes/areas.tsx<title> and og:titleIncludes 'Japanese Knotweed Elimination' where named

Metadata — faq

FileSurfaceExpected valueOK
src/routes/faq.tsx<title> and og:titleIncludes 'Japanese Knotweed Elimination' where named

Metadata — city pages

FileSurfaceExpected valueOK
src/routes/areas.$city.tsxDynamic <title> / og:title / descriptionUses SITE.name = 'Japanese Knotweed Elimination'

JSON-LD — LocalBusiness

FileSurfaceExpected valueOK
src/routes/areas.$city.tsxname fieldJapanese Knotweed Elimination — <City>

JSON-LD — Service

FileSurfaceExpected valueOK
src/routes/services.tsxprovider.nameJapanese Knotweed Elimination

JSON-LD — Service (areas)

FileSurfaceExpected valueOK
src/routes/areas.tsxprovider.nameJapanese Knotweed Elimination

JSON-LD — ContactPage

FileSurfaceExpected valueOK
src/routes/contact.tsxmainEntity.nameJapanese Knotweed Elimination

JSON-LD — Organization (root)

FileSurfaceExpected valueOK
src/routes/__root.tsx or index.tsxOrganization nameJapanese Knotweed Elimination

Single source of truth

FileSurfaceExpected valueOK
src/lib/site.tsSITE.name and SITE.shortNameJapanese Knotweed Elimination

Sitemap host

FileSurfaceExpected valueOK
src/routes/sitemap[.]xml.tsxURLs referenceNo company name string here, but route should exist

Quick verification commands

Run these from the project root to catch stray casing:

# Any lowercase / mixed-case variants of the brand
rg -i "japanese knotweed elimination" src/ public/ \
  | rg -v "Japanese Knotweed Elimination"

# Legacy names that must not appear publicly
rg -i "knotweed wales|jk elimination|elimination ltd" src/ public/