How ChatGPT, Perplexity, Gemini, Claude, Bing Copilot and Google AI Overviews actually parse, recall, and cite the property, and what to fix so guests doing AI-assisted travel research can find Kokomo at all.
https://kokomobotanicalresort.com/ · 33 core URLs + sitemap (93 unique URLs)What this report is. An LLM/GEO audit, how the existing pages read to AI search engines and answer assistants. It is the AI-readability companion to the broader Kokomo Website Analysis 2026, which covers strategic, UX, mobile and direct-booking conversion problems. Findings here describe what AI sees today; they assume the site will be rebuilt and recommend baking the LLM layer in from day one rather than retrofitting.
Right now, when a wellness traveler asks ChatGPT, Perplexity, Gemini, or Claude about Turks and Caicos, Kokomo is barely citable. Not because the brand lacks substance, there is plenty: a Caribbean Wellness Resort of the Year award, BioGeometry architecture, 20-year botanical gardens, Marriott Bonvoy Homes & Villas listing, a top-50 Caribbean restaurant, six cottage variants, a spa. The problem is mechanical: those facts are either locked inside meta tags AI models discard, or stated nowhere on the page in extractable form, or typed wrong in the structured data so AI classifies the property as a "Person" or a generic "Article" instead of a Resort.
LodgingBusiness, HotelRoom, Restaurant, DaySpa or FAQPage schemaog:image, every shared link renders blankalt textPerson + Organization root entity and types itself as Article. There is no LodgingBusiness, HotelRoom, Restaurant, DaySpa, EventVenue, FAQPage or AggregateRating anywhere. AI assistants prioritising hospitality types skip Articles.200 OK. Some assistants now downrank or refuse to recommend domains carrying this pattern. See §10.The clearest way to read this audit is to picture an LLM trying to answer the questions a wellness traveler actually types. Below is what is currently extractable from the live site for each question, based on the body content and JSON-LD parsed on 7 May 2026.
"Tell me about Kokomo Botanical Resort in Turks and Caicos."
Cited from current site: name, location ("Providenciales"), domain, the phrase "wellness resort," and the phrase "Caribbean Wellness Resort of the Year" if the model reads meta description (most do not). Not extractable: the BioGeometry architecture, the Marriott Bonvoy Homes & Villas affiliation, the 20-year garden age, the chemical-free positioning, the founder/owner story, total cottage count, total acreage, the awarding body, the year of the award.
"What does a Luxury 2-King cottage at Kokomo cost?"
Nothing extractable. The cottage detail page contains zero "$", zero "USD," zero "from," zero rate range. The model either returns "I don't have current pricing, check the website" or hallucinates. Same outcome for square footage, max occupancy as a number, and whether the unit faces ocean or garden.
"Best wellness resort in Turks and Caicos?"
AI answers favor properties with: LodgingBusiness or Resort schema, AggregateRating in JSON-LD, an og:image for the answer card, and a body-content statement of the wellness positioning. Kokomo provides none of these. The answer card goes to a competitor with weaker on-property credentials but better technical signals.
"Best restaurants in Grace Bay, Providenciales?"
WE Market Cafe is unlikely to be cited. The page has no Restaurant schema, no servesCuisine, no openingHoursSpecification, no priceRange, no menu URL. The "50 Best Restaurants in the Caribbean" accolade is mentioned in a single blog post, not on the restaurant's own page or in schema.
"Wedding venues in Turks and Caicos under 80 guests, beach ceremony, Caribbean."
Kokomo will not match this query. The wedding venues page has no capacity number, no "beach ceremony" label, no "garden ceremony" label, no EventVenue schema, no maximumAttendeeCapacity. The query depends on facts the page does not state.
"What's the phone number / cancellation policy / pet policy at Kokomo?"
Phone (+1 649 941 3121) is in the page header but not in telephone schema, so AI answers may not cite it confidently. Cancellation, pet, kid, currency and payment-method policies are not stated in body text on the reservations page. Each one is a candidate AI Overview question, and right now Kokomo cannot answer any of them.
"Buy a wellness ownership / villa at Kokomo Casitas."
Effectively invisible. The Casitas funnel runs on a separate subdomain (casitas.kokomobotanicalresort.com) with no <title>, no meta description, no canonical, no robots tag, no og:image, and six H1 elements on a single page. The single highest-revenue product on the property is also the least visible to AI.
The pattern across all of the above is the same: the resort has the substance, but it is encoded in places AI does not read. The next sections walk through each cluster and what to fix.
Six cottage detail pages plus the parent /cottages/ hub. None of them give an AI assistant the facts a guest asks for.
| Fact a traveler asks AI about | Mentions across all 6 pages |
|---|---|
| Square footage / room size | 0 |
| "From $" / nightly rate range | 0 |
| USD / currency declaration | 0 |
| "Ocean view" / "garden view" / "pool view" labels per cottage | "view" generic; specific view type never stated per cottage |
| Maximum occupancy as a number | Implied in name only, never written as "Sleeps 4" |
| Bed size dimensions (King / Queen / Twin) | 0 |
| Walking distance to beach / spa / restaurant in minutes | 0 |
| Wi-Fi, A/C, kitchen, balcony, washer-dryer, as a structured list | 1–3× on average; never as a list |
Top-tier cottage URL slugs use luxury-... and the page titles say "Luxury 2BR Cottage." The main site navigation labels the same products "Ultra-Lux King and Two Twin Cottages" / "Ultra-Lux Two King Cottages." Pick one term, easiest path is to update the menu labels to match the URL/title ("Luxury"), since URL slug is the harder signal to change.
{
"@type": "HotelRoom",
"@id": "https://kokomobotanicalresort.com/cottages/luxury-two-bedroom-cottage-2-king/#room",
"name": "Luxury Two-Bedroom Cottage (Two Kings)",
"description": "Adults-oriented two-bedroom cottage with two king beds, ...",
"containedInPlace": { "@id": "https://kokomobotanicalresort.com/#resort" },
"occupancy": { "@type":"QuantitativeValue", "maxValue": 4 },
"bed": [
{ "@type":"BedDetails", "numberOfBeds":2, "typeOfBed":"King" }
],
"amenityFeature": [
{ "@type":"LocationFeatureSpecification","name":"Wi-Fi","value":true },
{ "@type":"LocationFeatureSpecification","name":"Air Conditioning","value":true },
{ "@type":"LocationFeatureSpecification","name":"Kitchen","value":true },
{ "@type":"LocationFeatureSpecification","name":"Private Patio","value":true }
],
"floorSize": { "@type":"QuantitativeValue", "value": 950, "unitCode":"FTK" },
"image": [ "..." ],
"url": "https://kokomobotanicalresort.com/cottages/luxury-two-bedroom-cottage-2-king/"
}
Page mentions "menu" 7×, breakfast/lunch/dinner each 4×, but contains no operating hours, no signature dish, no chef name, no price range, no reservation policy, and no Restaurant / FoodEstablishment schema. The top-50 Caribbean restaurants accolade lives in one blog post, not on the restaurant page itself, not in schema. AI assistants asked "best restaurants in Grace Bay" have nothing to grab.
1 mention of "hours" without a timetable. 2 mentions of "menu" without a treatment list. 0 mentions of treatment names. No DaySpa schema. AI cannot answer "spa treatments at Kokomo," "spa hours at Kokomo," or "spa prices at Kokomo."
No capacity numbers, no venue layout types (beach ceremony / garden ceremony / indoor reception), no package starting prices, no sample timeline, no list of included services. AI assistants asked "wedding venues in Turks and Caicos under 80 guests" cannot match Kokomo because the page does not state a guest range.
/gatherings/ and /kokomo-corporate-retreat/ are byte-identical except for canonical. To AI this looks like duplicate content under two URLs, fragments topical authority. Pick one URL or split into two genuinely distinct pages targeting "corporate retreat Turks and Caicos" and "weddings/gatherings Turks and Caicos" separately.
JSON-LD is the cheapest-and-highest-leverage GEO investment a resort can make. It is also the largest mechanical gap on this site. Across 33 audited pages, every page renders an identical, generic schema graph:
@graph: • Person + Organization ← @id "#person", name "Kokomo Botanical Garden Resort" • WebSite • ImageObject (200×200 PNG) • WebPage • Person (the CMS author "kokomo_resort") • Article ← every page is described to AI as an "Article"
Person. The root entity is @type: ["Person", "Organization"]. Resorts should be Resort (a subclass of LodgingBusiness). Today AI reads "Kokomo is a person."Article. Cottage pages, the spa page, the restaurant page, even Terms & Conditions. AI assistants ranking content by type for hospitality questions skip Articles.FAQPage schema, despite visible FAQs. Homepage and /wellness/ have actual FAQ blocks in HTML. The single highest-leverage GEO win available: turn the existing FAQ content into structured FAQPage entries and the resort starts surfacing in AI Overviews and "people also ask."HotelRoom on six cottage pages. See §4.Restaurant on WE Market Cafe. See §5.DaySpa on Lovina Spa. See §5.EventVenue on weddings/gatherings. See §5.AggregateRating or Review. The homepage has a guest-quotes section and the resort holds two named awards. None of this is in schema. Ratings in JSON-LD are exactly what AI assistants pull when summarising a property.telephone schema.BreadcrumbList. Hierarchy and context for AI lost.{
"@context": "https://schema.org",
"@graph": [
{
"@type": ["Resort", "LodgingBusiness"],
"@id": "https://kokomobotanicalresort.com/#resort",
"name": "Kokomo Botanical Resort",
"alternateName": "Kokomo Botanical Garden Resort",
"url": "https://kokomobotanicalresort.com/",
"telephone": "+1-649-941-3121",
"email": "reservations@kokomobotanicalresort.com",
"priceRange": "$$$",
"image": [ "https://.../hero-1200x630.jpg" ],
"logo": "https://.../kokomo-logo.svg",
"address": {
"@type": "PostalAddress",
"streetAddress": "Venetian Road Settlement",
"addressLocality": "Providenciales",
"addressRegion": "Turks and Caicos Islands",
"postalCode": "TKCA 1ZZ",
"addressCountry": "TC"
},
"geo": { "@type": "GeoCoordinates", "latitude": 21.78, "longitude": -72.27 },
"amenityFeature": [
{ "@type":"LocationFeatureSpecification","name":"Free Wi-Fi","value":true },
{ "@type":"LocationFeatureSpecification","name":"On-site spa","value":true },
{ "@type":"LocationFeatureSpecification","name":"Botanical gardens","value":true },
{ "@type":"LocationFeatureSpecification","name":"On-site restaurant (WE Market Cafe)","value":true }
],
"starRating": { "@type":"Rating", "ratingValue":"4" },
"aggregateRating": {
"@type":"AggregateRating",
"ratingValue":"4.7", "reviewCount":"312", "bestRating":"5"
},
"award": [
"Caribbean Wellness Resort of the Year",
"TripAdvisor Travelers' Choice"
],
"sameAs": [
"https://www.tripadvisor.com/Hotel_Review-...",
"https://www.facebook.com/kokomobotanicalresort",
"https://www.instagram.com/kokomobotanicalresort",
"https://homes-and-villas.marriott.com/..."
],
"hasMap": "https://maps.google.com/?q=...",
"checkinTime": "15:00",
"checkoutTime": "11:00"
}
]
}
Each cottage page declares a HotelRoom linked back via containedInPlace. /we-market-cafe/ declares Restaurant, /lovina-spa/ declares DaySpa, /wedding-venues/ + /gatherings/ declare EventVenue. FAQPage on the homepage and on each pillar (wellness, cottages, weddings, dining).
For LLM entity resolution the canonical name of the property must be identical across every signal AI ingests. The site is sending mixed signals:
| Signal | String currently used |
|---|---|
Page <title> (homepage) | Caribbean Wellness Resort of the Year | Kokomo, Turks & Caicos |
og:site_name | Kokomo Botanical Resort |
JSON-LD name | Kokomo Botanical Garden Resort |
| Top-of-header kicker line (visible) | Caribbean Family Cottages |
| Domain | kokomobotanicalresort.com |
Schema names the entity Kokomo Botanical Garden Resort, every other surface drops "Garden." Knowledge Graph and Perplexity match on schema first; the canonical record is being split. Pick one canonical name (likely the domain-aligned "Kokomo Botanical Resort"), and use it identically in JSON-LD name, og:site_name, footer copyright, GBP, TripAdvisor, Marriott Bonvoy listing, and every social profile. The header kicker "Caribbean Family Cottages" sits above a wellness-resort H1 and adds a third positioning that AI has to reconcile, drop it or rewrite to a wellness-aligned line.
Cross-reference: the GBP-side damage from the same fragmentation, mobile-Maps truncation of the "- Caribbean Family Cottages" tail and classifier confusion with the family segment, is documented in GBP Analysis §2. The fix is two coordinated edits: this file's schema rewrite plus that file's GBP profile rename.
Across the 33 audited pages, ~93% of <img> tags ship with empty (alt="") or missing alt attributes. Per-page counts in §12.
Why this matters specifically for LLMs:
Format mandate: "[Subject] at Kokomo Botanical Resort, Providenciales,[short context]." Examples: "Two-king cottage interior with botanical garden view at Kokomo Botanical Resort, Providenciales, soft morning light"; "Lovina Spa massage room at Kokomo Botanical Resort, Providenciales, stone wall, plants, candle lighting." Decorative images keep alt="" only after a deliberate audit.
Three live URLs in the public sitemap, returning 200 OK with index, follow, are publishing third-party spam under Kokomo's brand template. They are an LLM-trust problem because some assistants now downrank or refuse to recommend domains carrying this pattern, and the spam pages are absorbing crawl budget from legitimate pages.
| URL slug | Live page title | Category |
|---|---|---|
/live-spiele-...-bann/ | Live-Spiele ziehen Spieler mit Authentizität in den Bann | German online gambling |
/microsoft-office-activator-free-download/ | Microsoft Office Activator Free Download ✓ Activate Office 2025… | English software piracy |
/oscarspin-casino-bonus-...-digitale/ | Oscarspin Casino Bonus explorează cele mai noi tendințe digitale | Romanian online casino |
The CMS has been breached or a vulnerable plugin is being exploited. These three are almost certainly the visible tip, backdoors, hidden admin users, and modified crawler-redirect rules typically accompany this pattern. Action sequence:
410 Gone (not just unpublish) for faster Google deindex.Why this lives at P0 inside an LLM analysis, domain trust is one of the inputs LLM assistants use to weight a site as a citation source. A wellness resort domain serving casino/warez content is exactly the pattern that triggers AI-side downranking, independent of any traditional SEO penalty. Marriott Bonvoy reputation review is a separate concern and reinforces the urgency.
Compressed coverage of the supporting hygiene issues that matter for LLM crawl quality. None of these are headline findings, but each one is a small drag on AI-side trust and indexation.
| Sitemap | URLs | Issue |
|---|---|---|
post-sitemap.xml | 44 | Includes 3 spam posts (§10) |
page-sitemap.xml | 38 | Includes /wellness-retreat/ and /kokomo-corporate-retreat/, both canonicalize elsewhere; should be 301'd and dropped from sitemap |
promotion-sitemap.xml | 5 | OK |
archive-sitemap.xml | 2 | Stale since 2024,410 if unused |
category-sitemap.xml | 4 | Includes /category/uncategorized/, remove |
| URL | Issue | Fix |
|---|---|---|
/blog/ | Description 4 chars (essentially blank) | Real 150-char description naming categories |
/giveaway/ | Title 34 chars, no positioning | "Win a Wellness Stay | Kokomo Botanical Resort, TCI" |
/kokomo-rewards/ | Description 66 chars | Spell out the program in 150 chars |
/privacy-policy/ | Description 42 chars | Set noindex, follow instead |
/terms-and-conditions/ | Description 10 chars | Set noindex, follow instead |
/thank-you/ is index, follow. Should be noindex, follow./wellness-retreat/ and /kokomo-corporate-retreat/ are indexable with canonical pointing elsewhere. Replace with 301.en-CA in HTML and schema, while og:locale says en_US. Pick one, for TCI tourism, en-US is the more common AI-assistant default./blizzard-snow-storm-policy/ on a Caribbean resort, repurpose or 410.Word-count is from rendered body text. "Top issues" lists the LLM-relevant per-page items.
| URL | Words | Title | Desc | Imgs (no alt) | Schema | Top issues |
|---|---|---|---|---|---|---|
| / (home) | 2127 | 62 | 162 | 19 (18) | Generic Article | No og:image; FAQ in HTML but no FAQPage schema; BioGeometry/Marriott not in body |
| /about-us/ | 1119 | 62 | 228 | 11 (10) | Generic Article | No founder/owner story; no awards block; no BioGeometry/Marriott narrative |
| /amenities/ | 1536 | 67 | 238 | 9 (9) | Generic Article | Amenity list not structured; no schema amenityFeature |
| /cottages/ | 1165 | 71 | 244 | 8 (8) | Generic Article | No comparison table; no ItemList schema |
| /cottages/classic-...-1q-2t/ | 828 | 59 | 133 | 11 (11) | Generic Article | No HotelRoom schema; no SQFT/price/view facts |
| /cottages/deluxe-...-1k-2t/ | 838 | 67 | 147 | 11 (10) | Generic Article | Same pattern |
| /cottages/deluxe-2k/ | 802 | 55 | 135 | 11 (11) | Generic Article | Same pattern |
| /cottages/luxury-...-1k-2t/ | 877 | 59 | 152 | 11 (10) | Generic Article | Same pattern; menu calls this "Ultra-Lux" |
| /cottages/luxury-2k/ | 950 | 62 | 149 | 11 (11) | Generic Article | Same pattern; menu calls this "Ultra-Lux" |
| /cottages/2-queens/ | 861 | 54 | 150 | 11 (10) | Generic Article | Same pattern |
| /dining-at-kokomo/ | 1660 | 68 | 230 | 14 (14) | Generic Article | Chef mentioned 8×, no chef name/bio; no menu link; no Restaurant schema |
| /we-market-cafe/ | 982 | 61 | 230 | 10 (9) | Generic Article | "50 Best" award not on page; no hours; no Restaurant schema |
| /lovina-spa/ | 1057 | 69 | 226 | 8 (8) | Generic Article | No treatment list; no DaySpa schema |
| /wellness/ | 1286 | 68 | 239 | 11 (11) | Generic Article | FAQ on page; no FAQPage schema |
| /wellness-retreat/ | 1286 | 68 | 239 | 11 (11) | Duplicate of /wellness/ | 301 to /wellness/ |
| /wedding-venues/ | 1119 | 40 | 157 | 9 (8) | Generic Article | No capacity numbers; no venue layouts; no EventVenue schema |
| /gatherings/ | 1392 | 69 | 235 | 8 (8) | Generic Article | No EventVenue schema; mixes corporate + wedding intents |
| /kokomo-corporate-retreat/ | 1392 | 69 | 235 | 8 (8) | Duplicate of /gatherings/ | 301 or split |
| /reservations/ | 1319 | 38 | 147 | 11 (10) | Generic Article | Only 1 Bonvoy variant linked; no booking facts in copy |
| /contact-us/ | 460 | 68 | 227 | 9 (8) | Generic Article | No ContactPoint schema; address not structured |
| /lifestyle-investments/ | 1364 | 47 | 154 | 11 (11) | Generic Article | No entity link to Casitas subdomain |
| /living-the-dream/ | 1048 | 49 | 141 | 10 (9) | Generic Article | Sales-y; light on specifics |
| /gallery/ | 386 | 66 | 162 | 8 (8) | Generic Article | Image-heavy with thin alt & thin captions |
| /promotions/ | 621 | 71 | 221 | 12 (12) | Generic Article | Three competing promotions URLs; no Offer schema |
| /giveaway/ | 504 | 34 | 150 | 9 (9) | Generic Article | Title too short; no schema for promo |
| /blog/ | 561 | 30 | 4 | 15 (15) | Generic Article | Description blank; no Blog schema |
| /kokomo-rewards/ | 416 | 40 | 66 | 9 (8) | Generic Article | Rewards program details thin |
| /hurricane-policy/ | 636 | 42 | 155 | 8 (8) | Generic Article | Could expand with month-by-month risk |
| /blizzard-snow-storm-policy/ | 695 | 52 | 158 | 8 (8) | Generic Article | Off-brand; 410 or repurpose |
| /tci-assured/ | 1011 | 37 | 156 | 13 (12) | Generic Article | Could become a strong "is TCI safe?" pillar |
| /tci-new-visitors-entry-requirements/ | 579 | 61 | 156 | 13 (12) | Generic Article | Date-sensitive; needs "last reviewed" date |
| /turks-and-caicos-islands-map/ | 1341 | 56 | 137 | 27 (27) | Generic Article | Best AI-grounding asset; no Place schema; alt missing on all 27 images |
| /terms-and-conditions/ | 4939 | 46 | 10 | 10 (9) | Generic Article | Should be noindex |
| /privacy-policy/ | 1371 | 40 | 42 | 9 (9) | Generic Article | Should be noindex |
Sequenced for AI-visibility impact-per-hour. Built to be implemented inside the planned site rebuild rather than retrofitted onto pages that will be replaced anyway.
Resort + LodgingBusiness entity, address, phone, email, awards, aggregateRating, sameAs. (§6)FAQPage schema. (§6)og:image + Twitter card to every page. (§8)HotelRoom schema to all 6 cottage pages with bed configs, occupancy, view type, amenityFeature, floorSize, priceRange. Publish those facts in body content too. (§4)Restaurant schema to /we-market-cafe/ with hours, servesCuisine, priceRange, award, menu URL. Publish hours and signature dishes in body. (§5)DaySpa schema to /lovina-spa/ with hours, treatments, priceRange. Publish treatment list in body. (§5)EventVenue schema to /wedding-venues/ and /gatherings/ with maximumAttendeeCapacity, layouts, priceRange. (§5)noindex thank-you / terms / privacy. (§11)CreativeWork.Place schema.Service schema per treatment.https://kokomobotanicalresort.com/sitemap_index.xml and the five child sitemaps (post, page, promotion, archive, category).https://casitas.kokomobotanicalresort.com/.Live-site fetch, sitemap parsing, JSON-LD extraction, body-text normalisation and entity-keyword counts performed against snapshots taken on 7 May 2026. Findings verified by re-fetching anomalous pages a second time. Where this report quotes a count (e.g. "BioGeometry 0× in body"), the count is from the rendered, script-stripped, style-stripped DOM text, what an LLM would actually parse.
8Sharing previews, blank link cards P1
When any URL on this site is pasted into iMessage, WhatsApp, Slack, Discord, Facebook, Twitter, LinkedIn, Pinterest, or quoted as a card by Perplexity, Bing Copilot, Google AI Overviews, the card has no preview image. Verified by inspecting
og:tags on the homepage and the Casitas subdomain.Why this is an LLM-relevant loss: AI assistants that quote URL preview cards (Perplexity, Bing Copilot, AI Overviews) miss the chance to render the resort image alongside an answer. WhatsApp link cards, the dominant pre-trip "show my friend" mechanism for Caribbean travel, are blank. Pinterest fails to scrape pinable images automatically without explicit
og:image.Fix:
og:image1200×630 minimum per page, plusog:image:width,og:image:height,og:image:alt,twitter:card = summary_large_image,twitter:image. Cottage pages each ship with their own hero image, not a shared default.