UOutdoors · Delivery record · Audited September 2026

653

pages of original hunting and fishing content, built, verified and ready to deploy.

The UOutdoors Organic Search Engine

One static content system covering all 50 US states and 20 page families. It answers the searches hunters and anglers actually type, and the searches landowners, outfitters and charter captains type when they are looking for bookings. No server, no build step, no runtime cost. Below is exactly what was delivered, figure by figure, with links into the real pages.

653

static HTML pages across 20 page families and 50 states

631 / 22

indexable pages, plus 22 deliberately noindex,follow to carry link equity

718

URLs published across 7 XML sitemap segments

745

files total — 13.5 MB zipped, 27 MB on disk

02Both sides of the marketplace

The same build recruits supply and captures demand.

Marketplaces stall when one side outruns the other. These page families were split deliberately: some catch the hunter or angler looking for access, some catch the landowner, outfitter or captain looking for bookings, and the state hubs serve both.

Demand side

Hunters and anglers searching for access

453

pages across 11 families

Species by state, statewide overviews, water types, city charters and national species hubs — the queries someone types while planning a season.

  • hunting-species-state323
  • hunting-state46
  • fishing-species-state34
  • fishing-state22
  • species-hub16
  • hunting-country4
  • fishing-water-type-state3
  • fishing-charter-city2
  • fishing-species-city1
  • fishing-country1
  • hunting-species-country1

Supply side

Landowners, outfitters and charter captains searching for bookings

142

pages across 7 families

State-level recruiting pages, lease pages for the states where leases move, platform comparisons for hosts already shopping around, and long-form guides that answer host objections before a sales call.

  • list-your-outfitter50
  • list-your-fishing-charter49
  • lease-your-land26
  • guide9
  • comparison4
  • supply-hub3
  • compare-hub1

Serving both sides

57

State discovery hubs and directory pages route a visitor to whichever side they belong to, and keep every page in the build within two clicks of the header or footer.

  • state-discovery-hub50
  • directory7

03The twenty page families

Each block is a family. Its size is its page count.

Click any block to see the family, its count and real example pages. Darker green is supply, lighter green is demand, bone is a family that serves both.

Demand side

hunting-species-state

323

pages in this family

One page for every huntable species in every state that holds it — the deepest layer of the build.

Example pages

Median page length is 924 words of original copy, with a range of 194–3,182. Across all 653 pages there are 0 duplicate titles, meta descriptions, H1s, canonical URLs or slugs, and 0 pieces of placeholder text or unrendered template variables.

04Architecture

Wired together, not stacked up.

26,352

internal links, connecting the families to each other

0

broken links across all 652 generated pages

2 clicks

maximum depth from the header or footer to any indexable page — 0 orphan pages

1,807

local asset references, 0 of them missing

Species range data is sourced from GBIF, the global biodiversity occurrence dataset. 321 pages were re-verified against that dataset, and 351 carry county-level occurrence detail — so a page never claims an animal lives somewhere it does not.

There are 0 lines of executable JavaScript in the delivery. Every word is already in the raw HTML, which means search engines and screen readers receive the complete page with nothing to run and nothing to wait for.

05Every page passes

Seven permanent validators. All green.

These are not one-time checks. They are part of the build, so they run again every time a page is added or edited. If one fails, nothing ships.

  1. Link graph

    Passing

    Every one of the 26,352 internal links is checked against the file it points to. 0 broken links across all 652 generated pages.

  2. Image registry

    Passing

    All 1,807 local asset references are confirmed present on disk. No page can ship with a missing image.

  3. Truth-lock

    Passing

    No numeric claim reaches a page unless it traces back to a source. Unsourced numbers fail the build.

  4. Discovery / click depth

    Passing

    Every indexable page is reachable from the header or footer in at most 2 clicks. 0 orphan pages.

  5. Directory completeness

    Passing

    Index and hub pages must list every child page they are responsible for — nothing quietly falls out of the directory.

  6. Structured data

    Passing

    Valid JSON-LD on all 653 pages, 0 invalid, 1,609 unique entity IDs. This is what search engines read.

  7. No-JavaScript completeness

    Passing

    The page is compared with scripting off. Every word must already be in the raw HTML — and it is: 0 lines of executable JavaScript.

06Structured data

The part that turns a blue link into a rich result.

Structured data is a machine-readable summary embedded in every page — it tells Google what the page is about and how it fits in the site, which is what lets a listing show breadcrumbs, place names and other rich detail instead of a plain link.

653 / 653

pages carrying valid JSON-LD structured data

0

invalid structured data blocks

1,609

unique entity IDs, so entities reference each other instead of repeating

Entity types emitted

BreadcrumbList
652
AdministrativeArea
603
WebPage
501
Taxon
375
CollectionPage
151
Service
128
ItemList
91
Article
9
Country
6
Place
3

07Going live

It is a folder. You upload it.

No server

745 plain files served as-is. Any static host or CDN will do.

No build step

The HTML in the archive is the HTML the visitor gets. Nothing compiles at deploy time.

No runtime cost

Nothing executes per visit, so traffic does not create infrastructure spend.

Sitemaps included

718 URLs across 7 sitemap segments, ready to submit to Search Console.

Example links on this page point to

https://www.uoutdoors.com

That domain is set in one constant, so switching to the final live domain is a one-line change and every example link on this page follows.