Island Expeditions has been running active travel and tours in Belize since 1987, and the content and authority foundations are genuinely strong. Trip pages run 2,000–2,800 words with full day-by-day itineraries and real pricing — deeper than the OTA listings they compete with. A 481-post blog covers snorkelling, kayaking, Maya ruins and Garifuna culture first-hand, and the brand carries real earned media (National Geographic, Outside, Lonely Planet, Globe and Mail). Infrastructure is sound: HTTP/2, ~65ms server response, correct homepage canonical, and all redirect paths resolving cleanly.
What is missing is the structured-data, freshness and technical-hygiene layer that Google and AI engines now use to identify and rank a tour operator. The XML sitemap broadcasts every one of its 829 URLs on the wrong domain (the Pantheon staging host, over http). There is zero structured data anywhere on the site. The 481-post blog has no author bylines, no publish dates, and section headings rendered as plain paragraphs. The result is a site that is doing the hard part — the content — while leaking the easy wins.
Most of the highest-impact fixes are config and template changes, not content work. A single day of work lifts the score by roughly twelve points; a focused month takes it from 54 to approximately 88.
The strongest dimension. Trip pages carry genuine first-hand operator detail — day-by-day itineraries, real pricing and durations, original photography. The 481-post blog is written from inside Belize. This is the brand's biggest moat; it is simply not packaged in a form Google and AI engines can attribute.
All 481 blog posts byline to “Island Expeditions Company Limited”. No individual authors, guides, or staff bios appear anywhere. Google’s Quality Rater Guidelines require demonstrated expertise to attach to identifiable people, and AI engines will not credit claims to an unnamed entity.
A real earned-media archive exists — National Geographic, Outside, Lonely Planet, Globe and Mail, Fodor’s, AFAR — referenced inside the blog but never declared in schema sameAs or surfaced as press credentials. The 40-year track record is under-stated rather than absent.
No publish or modified dates appear on any post, so freshness cannot be assessed. The contact page renders a broken Google Maps error (“valid API key required”), phone format is inconsistent, and no Belize street address is published. A live “Brochure Request TEST” page is indexable.
The website loads correctly, returns valid HTTP 200 responses, ranks for its brand name, and resolves every redirect vector (http→https, non-www→www, staging→canonical) in a single hop. The homepage canonical tag is correct, the content is server-side rendered, and hosting on Pantheon delivers a ~65ms server response. Trip pages are deeper and more specific than the OTA listings they compete against. The raw materials are strong.
Three shifts in how travellers find tour operators shape the work recommended below.
First, online travel agencies (Viator, GetYourGuide, TripAdvisor, Expedia) dominate the commercial SERPs for terms like “Belize vacation packages” and “things to do in Belize” through structured product and review data. An operator competes there on schema and trust signals, not word count. Second, AI assistants (ChatGPT, Perplexity, Google AI Overviews) now answer “best snorkelling trip in Belize” or “Belize kayaking expedition” inline, and they require machine-readable structure — TouristTrip, Organization, semantic headings, named authors, dates — before they will recommend a specific company. Third, the entity behind the brand has to be unambiguous and consistent across the web for any of this to consolidate.
The recommended work falls into two tracks that share most of their underlying effort:
• AI & entity readiness: Organization / TravelAgency, TouristTrip + Offer, BlogPosting and BreadcrumbList schema; an llms.txt file; AggregateRating populated from live TripAdvisor data; named authors and visible dates; semantic headings on the blog.
• Google search hygiene: a sitemap regenerated on the canonical https://www domain; removal of /node duplicates and test pages; one H1 per page; HSTS and security headers; Core Web Vitals fixes; a topic-cluster pillar structure that funnels the 481 blog posts to bookable trips.
Fixing the sitemap domain and adding the Organization schema block are the two single highest-impact items — both are configuration changes measured in hours, not content projects.
The content is genuinely AI-citable — blog posts open with textbook 40–60-word direct answers ("April enjoys highs of 85°F/29°C and evening lows of 76°F/24°C"), and the brand entity is stated unambiguously ("Belize adventure travel operator since 1987"). But the HTML markup strips out every structural signal an AI extractor relies on — semantic headings, lists, dates, authors and structured data. AI engines can read the words but can’t isolate a clean, attributable passage or confirm the facts. This is a templating problem, not a content problem, which makes it highly recoverable. All AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended) are already allowed, so nothing is blocked — the content just isn’t served in a form they can use.
Content is answer-shaped and direct, but section headings are plain <p> tags, so engines can’t isolate answer chunks to quote.
Trip pages have good IA (Overview / Itinerary / Dates / FAQ). Blog headings are non-semantic and the homepage carries three H1s.
Strongest dimension — rich photo/video galleries, PDF itineraries, real itinerary tables. Images lack consistent alt context.
"Since 1987" entity statement repeated; deep 481-post topical coverage. No author bylines/dates on posts; no Wikipedia/Wikidata entity.
Fully server-rendered (great for crawlers) and all AI bots allowed — but zero JSON-LD, the 404 serves a 30KB JS bundle, and the sitemap points to the Pantheon origin.
llms.txt fileAn llms.txt is a single plain-text file at the site root that gives AI assistants a curated, machine-readable summary of who the brand is, what it sells, and where the canonical pages live — so ChatGPT, Perplexity and Claude can ground an answer about “the best snorkelling trip in Belize” on the operator’s own facts in one fetch, instead of guessing from scattered third-party pages.
Right now islandexpeditions.com/llms.txt and /llms-full.txt both return 404 — and the 404 page itself serves a 30KB New Relic JavaScript bundle instead of a clean error, so a probing crawler gets noise. With a 45-trip catalog and a 481-post blog, a curated llms.txt is unusually high-leverage here. A starting template:
# Island Expeditions > Belize adventure travel operator since 1987. Small-group kayaking, > snorkelling, stand-up paddleboarding, reef & atoll, and jungle/Maya > expeditions, guided from Dangriga, Belize. ## About - Founded 1987; offices in Dangriga, Belize and Canada. - Specialises in active, small-group, guided multi-day Belize trips. - Featured in National Geographic, Outside, Lonely Planet, Globe and Mail. ## Trips - Double Atoll Adventure: https://www.islandexpeditions.com/... - Belize Barrier Reef & Coral Atolls: https://www.islandexpeditions.com/... - Rainforest, Rivers & Ruins: https://www.islandexpeditions.com/... # ...link the full 45-trip catalog ## Travel resources - Belize travel blog (481 articles): https://www.islandexpeditions.com/belize-vacations-blog - Trip planning & packing: https://www.islandexpeditions.com/clients/planning-and-packing ## Contact - Reservations: 1-800-667-1630 - https://www.islandexpeditions.com/connect-with-us/contact-us
Pair it with fixing the 404 handler so it returns a clean error rather than the JS bundle.
<p><br/>…</p> — the only real <h2>/<h3> on the page belong to the nav and footer. Content heading count is 0, and a "Top 5" article contains 0 <ol> elements. AI engines pull answers from heading-scoped passages and marked-up lists; with neither, the fact-dense content is invisible as a citable unit.
<h2>/<h3> and "Top N" content uses <ol>/<ul>. No re-writing required — the words are already there.
Organization / TravelAgency (foundingDate 1987, address, logo, sameAs) sitewide; TouristTrip + Offer + AggregateRating on trip pages; Article (author + datePublished/dateModified) on posts; FAQPage on the FAQ. Always use the https://www.islandexpeditions.com domain in schema, never the pantheonsite.io origin.
og:type uses invalid values (travel on the homepage, Belize Vacations on the blog), og:url omits the trailing slash, and the sitemap fragments the entity across the pantheonsite.io host — so citations can attribute to the wrong domain.
Article schema. Correct og:type to valid values (website / article), fix og:url, and regenerate the sitemap on the canonical https://www domain so AI crawlers attribute citations to the right entity.
<loc> entries in sitemap.xml (plus 1,295 image entries) point to http://live-island-expeditions.pantheonsite.io — the Pantheon platform origin, over plain http — instead of https://www.islandexpeditions.com. Verified by curl: every single URL 301-redirects to the live domain. So 100% of the sitemap is redirecting, insecure, wrong-domain URLs.lastmod dates. It also means earned links seeded via the sitemap leak equity to a host that isn’t even in the web graph.
settings.php (or the Simple XML Sitemap base-URL override) to https://www.islandexpeditions.com, regenerate, confirm every <loc> uses the canonical https://www domain, and resubmit in Google Search Console.
typeof="foaf:Image" RDFa attributes, which carry no SEO value. This is a greenfield — every high-value type is missing.Organization / TravelAgency (brand entity, logo, sameAs, contactPoint — the foundation everything else references), TouristTrip + Offer on the 45 trip pages, BreadcrumbList on the deep URL hierarchy, BlogPosting across 481 posts, and AggregateRating from the real TripAdvisor reviews. This single category scores 3/100 and is the largest gap in the audit.
Organization / TravelAgency JSON-LD block to the global template today (name, logo, foundingDate 1987, Dangriga + Canada address, social sameAs). Then add TouristTrip + Offer + AggregateRating to trip pages and BlogPosting to posts once dates/authors are surfaced. Always use the https://www.islandexpeditions.com domain in schema URLs — never the pantheonsite.io origin. Ready-to-paste blocks are in the schema sub-report.
/node/N URLs plus 7 /node-XXX-reviews pages. Verified: /node/501, /node/712 and /node/738 return 200, index,follow, and self-canonicalize to the ugly /node path rather than their clean alias — so each one competes with its own aliased page. The sitemap also lists test/dev stubs: /belize-vacations-blog/test, /test-contact-page, /test-brochure-request (a live “Brochure Request TEST” node), /trip-search, /vs, and /covid-test-requirements.
/node/* and the test stubs from sitemap generation. This drops the sitemap to ~770 clean URLs and removes the duplication.
<title> leads with “Belize Travel & Vacation Packages,” a term whose SERP is ~90% OTA, airline and resort results (Expedia, Kayak, Southwest, Marriott) where the site does not appear — wasted title real estate. Meanwhile “things to do in Belize” is a 100% listicle SERP that 481 blog posts could win, and the site is absent. Trip pages also carry no page-level trust: reviews and ratings live in the global header/footer, not in the trip body.
poster — the fold sits dark until it buffers, and the real H1 (“Belize Adventure Experts Since 1987”) renders at y=1120px, below the fold. Separately, the homepage has a +140px horizontal-scroll overflow on mobile, caused by an unstyled 500px fixed-width form table with an embedded reCAPTCHA — a Google mobile-usability “content wider than screen” defect. Image hygiene compounds it: 34 images, 0 lazy-loaded, 13 missing width/height (layout shift), no srcset, no WebP.
poster to the hero video (reuse the existing hero JPG) and overlay the H1 + value prop on the desktop hero. Add one CSS rule (table{width:100%} + max-width:100% on inputs/reCAPTCHA) to kill the mobile overflow. Enable loading="lazy" sitewide and set image dimensions.
<p> tags rather than <h2>/<h3> — with “Top N” posts using no <ol> lists. The substance is genuinely citation-grade (direct answer openers, specific stats like “April highs 85°F/29°C”), but the HTML strips out exactly the structural signals Google freshness ranking and AI extractors rely on.
BlogPosting schema). Convert section headings to <h2>/<h3> and “Top N” bodies to <ol> — the single biggest AI-citability lift available.
/contact page renders the public Google Maps error string (“a valid API key is required”), and the single TripAdvisor link is a header icon pointing to the Glover’s Reef basecamp hotel listing rather than the operator. No Viator presence, no review widget, no aggregateRating. Three overlapping contact URLs (/contact, /connect-with-us, /connect-with-us/contact-us) split the signal.
tel: link, and add an operator-level TripAdvisor/Viator review widget backed by aggregateRating schema.
-0 slugs, and a test post. The biggest clusters — Snorkelling/Reef (~96), Trip-Planning (~56), Kayak/SUP (~53, where the brand essentially owns “SUP Belize”), Maya/Jungle/Caves (~50) — are all unwired.
Strict-Transport-Security header (nor CSP, Referrer-Policy or Permissions-Policy). Performance is dragged down by the front-end delivery: 9 render-blocking stylesheets and 8 head scripts with zero defer, the reCAPTCHA script loaded twice, Bootstrap JS in the head, zero resource hints, and a heavy third-party footprint (GTM, Facebook Pixel, CrazyEgg, New Relic, Salesforce). Estimated mobile CWV (lab): LCP ~3.5–4.5s, INP ~150–250ms, CLS ~0.15–0.25.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload. Add defer to head scripts, delete the duplicate reCAPTCHA include, move Bootstrap JS to the body end, and preload the LCP hero with fetchpriority="high" as WebP.
Island Expeditions has spent nearly four decades building exactly what modern travel search rewards: deep first-hand trip content, a 481-post library, real press authority, and competent hosting. The fundamentals are intact. What is missing is the machine-readable layer — structured data, a correct sitemap, named authors, visible dates, semantic headings — that Google and AI engines now use to identify and rank a tour operator.
Because the content already exists, this is a packaging problem, not a writing one — which makes the score unusually recoverable. Sprint 1 alone, a single day of configuration and template work, lifts the score by roughly twelve points. Sprint 2 adds the schema and freshness that drive the largest visibility gains. By the end of Sprint 3 the site is in genuine shape to compete with the OTAs for high-intent Belize travel searches it currently cedes.