Jack's Ski Club has the two things that are hardest to build: genuinely good content and rare coaching authority. The camp pages carry real dates, prices, itineraries and Stubai/Innsbruck detail; the coaching roster includes a two-time Olympic racer and World Cup-level coaches; and the free Skier Levels, Ski IQ, technique and fitness libraries are exactly the answer-shaped material that both Google and AI engines reward. The raw materials are strong.
What is broken is everything around that content — the machine-readable layer. The business cannot decide what it is called: the brand says "Jack's Ski Club" but every schema block, the Open Graph tag and most of the copy say THESKICLUB.ORG, with two email domains and a placeholder user@domain.com left in the markup. There is effectively no useful structured data — no camp dates, prices, FAQs or coaches marked up — the five revenue pages have no H1, eleven pages have no meta description, and the sitemap is ~64% junk.
Almost none of this is a content problem — it is a packaging and hygiene problem, which makes it unusually recoverable. A focused first week lifts the score by roughly thirteen points; a focused month takes it from 53 to approximately 88.
Performance Elite + Technical Progression camps, 20 min from Innsbruck. Luxury full-board, airport transfers, GS race courses, video analysis. The flagship product.
The same small-group, video-analysis coaching model run on Canadian snow — plus adult performance camps for the North American market.
30+ hours of ski-technique video, 70+ at-home workouts & 28-day plans, brand discounts and early camp access. The year-round, low-friction entry product.
Online video analysis and customised improvement programmes — a growing, under-served search demand the site barely addresses today.
user@domain.com placeholderThe strongest dimension. Camp pages carry genuine first-hand operator detail — real 2026 dates, €/CAD pricing, the Stubai Glacier hotel, Innsbruck transfers, daily on-snow structure. The technique and fitness libraries are filmed first-hand, some with a two-time Olympian. This is the brand's moat; it simply is not packaged for machines.
Real, rare credentials: a two-time Olympian & World Cup medalist (Mike Janyk), a former Japanese World Cup / Olympic SL team coach, and multiple BASI Level 4 instructors. But five of the six coach cards are headed only "COACH" with no name, no Person schema, and no sameAs to Olympic/FIS profiles — so the expertise can't be attributed.
The entity is unresolvable. The brand name conflicts across the site (Jack's Ski Club vs THESKICLUB.ORG), the founder's headline credential is told four different ways, and there are no authoritative external links (Wikipedia, FIS, press) declared in schema. Google's Knowledge Graph cannot consolidate a single business.
The weakest dimension. Two email domains, a typo'd phone number across the camp pages, a user@domain.com placeholder live 36 times, a stale 2025 pricing page still indexed, an empty Reviews page that claims "all 5-star Google reviews" with no review schema, and a broken LocalBusiness block whose hours read as permanently closed.
The hosting fundamentals are sound. Every redirect vector (http→https, www→non-www) resolves in a single clean 301 hop, HSTS is enabled, the homepage canonical and title are correct, the site is fully server-rendered, and Squarespace delivers a ~270ms server response over HTTP/2 with gzip. The camp pages are deep (1,300–1,550 words) and more specific than most competitors — the content layer is genuinely competitive.
Three structural problems cap traditional search visibility, and all three are fixable without writing new content.
1. The entity is ambiguous. Google ranks businesses, not just pages. When the brand name, the schema name, the Open Graph tag and the contact emails disagree about whether this is "Jack's Ski Club" or "TheSkiClub.org", Google cannot consolidate authority onto one entity — so links, reviews and mentions are split and diluted. This is the single biggest ranking ceiling on the site.
2. The money pages are mis-signalled. The five pages that hold the dates and prices — both Austria camps, both Canada camps and private coaching — carry no H1, so Google has no primary topic signal exactly where it matters. Titles are duplicated and templated ("Performance Ski Camps" is used twice; the FAQ wears a camp title; two pages are literally "Jack's Ski Club | Jack's Ski Club"), and eleven pages have no meta description, ceding the SERP snippet to Google's guesswork.
3. The pages cannibalise each other. Four pages compete for "ski camps Austria" (europe-camp-type, the-camps and the two deep Austria pages), and a parallel set competes for Canada. Thin 360–430-word hub pages dilute the authority of the deep 1,500-word pages that should win. Collapsing each cluster to one canonical page concentrates the ranking signal.
| Target query | Winnable? | Best page today | Action |
|---|---|---|---|
| Stubai Glacier ski camp | High | austria-performance-elite-camp | Low-competition, high-value, you own the content. Put "Stubai" in the H1, title and opening sentence. |
| ski camps Austria | High | austria-performance-elite-camp (1,455w) | The natural winner. Add an H1 + geo title; 301 the thin europe-camp-type hub into it to kill the split. |
| ski camps Canada | High | canada-performance-elite-camp (1,289w) | Make this THE Canada page; repurpose/301 the thin canada-camp-type-1. |
| adult ski camp / improvement camp | Medium | the-camps + adult performance page | Make /the-camps a true hub targeting "adult ski camps", linking down to the country pages. |
| online ski coaching / video analysis | Medium | private-coaching (275w, 0 H1) | Under-served, growing demand and almost no real page. Build it out — an easy capture. |
| improve ski technique / how to carve | High | ski-iq, ski-technique library | Already answer-shaped. Add HowTo structure + internal links down to membership & camps. |
The content is genuinely AI-citable — the FAQ, the 12-level Skier Levels rubric and the Ski IQ glossary are exactly the self-contained, answer-shaped passages LLMs love to quote. AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended) are all allowed, so nothing is blocked. But two things stop the engines recommending the brand: there is no machine-readable structure (zero Event, Course, FAQ, Person or Review schema, and no llms.txt), and the entity is ambiguous — an AI reading the page cannot decide whether the business is "Jack's Ski Club" or "theskiclub.org", so it hedges or omits the citation entirely. Both are recoverable, and the fixes are mostly configuration.
The bright spot. FAQ, Skier Levels and Ski IQ are direct, self-contained answers an LLM would quote — capped only by the entity noise and missing schema around them.
The five revenue pages have 0 H1; ski-news has 13 H1s and ski-iq has 3. The camp dates and prices live in styled <div>s with no heading anchor, so they read as ambient text.
A deep video inventory (30+ technique, 70+ workout clips) and good alt-text discipline — but videos are "WATCH VIDEO" links with no transcripts and no VideoObject schema, so they're invisible to AI.
The core blocker. info@theskiclub.org appears 267× vs 49× for the real domain; schema, og:site_name and copy all conflict; an Olympian's authority is never attached to a named Person. AI can't cite what it can't resolve.
All AI bots allowed (good), but /llms.txt returns 404, structured data is effectively zero, and a 64%-junk sitemap wastes the crawl budget AI bots spend on the pages that matter.
llms.txt fileAn llms.txt is a single plain-text file at the site root that hands AI assistants a curated, machine-readable summary of who the brand is, what it sells, and where the canonical pages live — so when someone asks ChatGPT, Perplexity or Claude "what's the best adult ski camp in Austria?", the engine can ground its answer on Jack's Ski Club's own facts in one fetch instead of guessing from scattered third-party pages. Right now jacksskiclub.com/llms.txt returns 404. With real camp dates, prices and a star coaching roster, a curated llms.txt is unusually high-leverage here — but pick one canonical brand name first so every line agrees.
# Jack's Ski Club > Jack's Ski Club (jacksskiclub.com) runs adult performance & technical > ski camps in Austria (Stubai Glacier, near Innsbruck) and Canada > (SilverStar), plus a $20/yr online ski-improvement membership and > private video-analysis coaching. For strong-intermediate to expert > adult skiers. Coaching led by BASI Level 4 instructors, including > Olympians and World Cup-level coaches. ## Ski Camps — Austria (Stubai Glacier) - Camp 1: Nov 29 – Dec 5 2026 — from €2,700 / ~CAD 4,350 - Camp 2: Dec 5 – 12 2026 — from €2,950 / ~CAD 4,800 - Includes luxury full board, Innsbruck transfers, daily coaching, video analysis. Excludes lift pass, rentals, flights, insurance. ## Ski Camps — Canada (SilverStar) - Performance Elite + Technical Progression adult camps. ## Membership - $20/year: 30+ hrs technique video, 70+ workouts, brand discounts. ## Coaches - Includes Mike Janyk — two-time Olympian & World Cup medalist. ## Key pages - Camps: https://jacksskiclub.com/the-camps - Coaches: https://jacksskiclub.com/coaches - FAQ: https://jacksskiclub.com/faq ## Contact - info@jacksskiclub.com · +1 (604) 203 4429
Note: Squarespace will not serve an arbitrary root .txt by default — publish via a URL mapping / redirect and confirm it returns HTTP 200 with text/plain.
| AI query the brand could win | Status today | What unlocks it |
|---|---|---|
| "Best adult ski improvement camp in Austria / Europe" | Blocked | Resolve the entity, add Event/Course + Offer schema, name the coaches. |
| "Ski race training camp for adults" | Blocked | The GS-course content exists — mark it up and attach it to a named, credentialed entity. |
| "Stubai Glacier ski camp" | Close | llms.txt + camp Event schema; you own the only first-hand content for this. |
| "Online ski technique membership / coaching" | Blocked | Build the coaching page, add Product/Offer for the membership, publish llms.txt. |
| "What ski level do I need for a ski camp?" | Close | Skier Levels + FAQ are perfect; add FAQPage + DefinedTermSet schema. |
The only structured data on the site is the Squarespace default — a WebSite and a LocalBusiness block — and both are broken. The name is THESKICLUB.ORG, the description is empty, the LocalBusiness has no address, no geo, no priceRange and no sameAs, the image URL is truncated, and the opening hours read Mo 00:00-00:00 ... Su 00:00-00:00 — which a parser interprets as permanently closed. Fixing the Business Information once in Squarespace repairs the defaults across all ~191 pages instantly; then the high-value types get added via per-page Code Injection. The camps are the prize: they have real dates and prices and zero markup.
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Performance Ski Camp — Stubai Glacier, Austria (Camp 1)",
"startDate": "2026-11-29",
"endDate": "2026-12-05",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"location": {
"@type": "Place",
"name": "Stubai Glacier",
"address": "Stubaier Gletscher, Tyrol, Austria"
},
"organizer": {
"@type": "Organization",
"name": "Jack's Ski Club",
"url": "https://jacksskiclub.com"
},
"offers": {
"@type": "Offer",
"price": "2700",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"url": "https://jacksskiclub.com/austria-performance-elite-camp"
}
}
The same pattern applies to Course/Offer for the membership, Person for each named coach (with sameAs to Olympic/FIS profiles), FAQPage for /faq, and AggregateRating once real reviews are embedded on the Reviews page.
name, the og:site_name, and most body copy say THESKICLUB.ORG. Across the saved pages, info@theskiclub.org appears 267 times versus 49 for info@jacksskiclub.com; a third address (bookings@jacksskiclub.com) and a literal user@domain.com placeholder (36 times) are also live. Google ranks entities, not just pages — with two competing names it cannot consolidate links, reviews and mentions onto one business, and AI engines cannot cite a brand they cannot resolve. This single issue caps both the Authoritativeness and AI scores.
theskiclub.org to the canonical domain), and remove the user@domain.com placeholder. Then make every social profile and the GBP match.
WebSite + LocalBusiness blocks exist, and both are broken (wrong name, empty description, no address/geo/priceRange, opening hours that read as permanently closed, truncated image). There is zero Event, Course, Product, FAQPage, Person or AggregateRating schema anywhere — despite the camps having real dates and prices, a dedicated FAQ page, named credentialed coaches, and a claimed five-star review record. This is the largest single category gap (18/100) and the layer both rich results and AI extraction depend on.
Organization sitewide, Event/Course + Offer on camp pages, Product/Offer on the membership, Person on coaches, FAQPage on /faq, and AggregateRating once reviews are embedded.
austria-performance-elite-camp, austria-technical-progression-camp, canada-performance-elite-camp, canada-technical-progression-camps and private-coaching all render 0 H1 — the visible headline is marked up as an H2. These are the exact pages holding the dates and prices, so Google and AI engines have no primary topic signal where it matters most. Elsewhere the opposite problem appears: ski-news has 13 H1s and ski-iq has 3, flattening the document outline.
the-camps and coaches. Separately, 11 pages have no meta description (incl. memberships, pricing, private-coaching, ski-fitness, ski-technique, reviews), and 4 camp pages plus the FAQ share one duplicated description that says "coached by ex World Cup" — conflicting with the about page's "ex-British Team" claim.
europe-camp-type (H1 "Austrian Ski Camps", 361 words), the-camps, and the two deep Austria pages (1,300–1,550 words). A parallel set (canada-camp-type-1, 388 words) competes with the deep Canada pages. The thin hubs dilute the authority of the deep pages that should rank, and split internal-link equity.
europe-camp-type and canada-camp-type-1 into them. Keep /the-camps as a genuine hub targeting "adult ski camps" that links down, not across.
/ski-fitness/v/* and /ski-technique/v/* video URLs with malformed/duplicate slugs (15-minj, 20-mi, day-7-off, random hashes), plus index bloat: four live Squarespace demo posts (blog-post-title-one…four), an indexed URL with a Facebook tracking string baked into the slug (/thecampsfbclid...), an empty /location page, duplicate pairs (/memberships + /membership-sales-page-2; /newsletter + /newsletter-1), three near-identical t-shirt product URLs, and a stale 2025 pricing page still live while the camps now run in 2026.
Person schema, and no sameAs linking to Olympic.org / FIS / Wikipedia profiles. The founder's headline credential is also told four inconsistent ways across pages (ex-British Team vs ex-World Cup vs ex-professional racer; BASI Level 4 vs ISTD Level 4; 15+ years vs decades). Authority that isn't attributed to a named person can't be credited by Google or cited by AI.
Person schema with sameAs to each coach's Olympic/FIS/Wikipedia profile. This converts a wasted asset into a strong, machine-readable E-E-A-T signal.
/reviews page renders only a heading with no embedded reviews and no Review/AggregateRating schema, and the /location page is an empty placeholder (just "Canada Camps" + a newsletter signup). For a camp business, social proof and destination detail are exactly what converts and what AI engines look for — both are being left blank. A real Google Business Profile appears to exist but is mis-branded and never surfaced on the site.
/reviews and back them with AggregateRating schema. Rebuild /location as proper destination pages (see the architecture below) with maps, getting-there and accommodation detail. Re-brand and link the GBP as a single service-area business.
srcset, and lazy-loading is barely applied (camp pages lazy-load only 4 of 38 images). Estimated mobile CWV (lab): LCP ~3.8–4.6s, INP ~200–350ms, CLS ~0.05–0.12. The og:image is also served over insecure http://.
og:image over https. The Squarespace core bundle itself is platform-owned and out of scope.
As a destination/multi-location coaching business, Jack's Ski Club should run a single service-area Google Business Profile (not one GBP per venue) and build dedicated destination spokes rather than one empty /location page:
• /ski-camps-austria-stubai — Stubai Glacier detail, resort facts, Innsbruck travel/transfers, accommodation, the 2026 dates, embedded map, links to the two Austria camp pages.
• /ski-camps-canada-silverstar — the same depth for the Canadian resort: terrain, getting there, lodging, dates, map.
• /the-camps — kept as the hub targeting "adult ski camps", linking down to both destination pages and the individual camps.
Each destination page carries consistent NAP, LocalBusiness/Place schema, and the camp Event schema — turning geographic intent ("Stubai ski camp", "ski camp near Innsbruck") into bookings instead of bouncing visitors off a blank page.
Jack's Ski Club has already done the genuinely hard part: real first-hand camp content, a $20 membership library, and a coaching roster that includes a two-time Olympian and World Cup-level coaches. The fundamentals of the site — hosting, redirects, mobile rendering, the depth of the camp pages — are intact. What is missing is the machine-readable layer that Google and AI engines now use to identify, trust and rank a business: a single brand name, structured data for the camps, named experts, proper headings, and a clean index.
Because the substance already exists, this is a packaging problem, not a writing one — which makes the 53 unusually recoverable. One focused week of configuration and template work (Sprint 1) lifts it by roughly thirteen points and resolves the entity confusion that caps everything. Sprint 2 adds the schema and trust layer that turns the camps into rich results and AI citations. By the end of Sprint 3 the site is genuinely positioned to win the high-intent Austria, Canada and Stubai ski-camp searches — in both traditional Google results and AI answers — that it currently cedes.