Skip to main content
Case Studies8 min read

My First Official SEOJack Client: Building the Cactus Canyon Marble Race Website

Cactus Canyon Marble Race is the first official client of SEOJack — and the build turned into the most interesting website I have made. Here is the brief, what I built, and what I learned.

Jack Price, Founder, SEOJack

Jack Price

Founder, SEOJack • August 27, 2026

Laptop showing a race archive website with results and standings

I Have a First Official Client — and I Am Genuinely Buzzing

I have been building websites for a while. I have built demos, rebuilt my own sites more times than I care to admit, and put a lot of hours into making SEOJack the thing I actually wanted to run. But there is a specific milestone you only get once, and I hit it this summer: the first business to say yes, this is our website now.

That client is Cactus Canyon Marble Race, and on 30 July 2026 the show adopted the site I built as its official home. Their own domain, their own audience, live. I still grin every time I open it.

I want to write this one up properly, because it is the best possible example of what I think a website should be: not a brochure, but a place that does a job nobody else was doing.

Who the Client Is

Cactus Canyon Marble Race is a marble racing show on TikTok. If you have not fallen down that particular rabbit hole: marbles with names and personalities race down a track, seasons run over months, there are standings, champions, rivalries, and a genuinely invested community that argues about all of it.

It is a media brand, not a trades business. Which meant the usual done-for-you website playbook — services, service areas, contact form, local SEO — was completely the wrong shape. So I threw it out and started from the actual problem.

The Problem: Everything Existed, Nothing Was Findable

The show had years of content and a real audience. What it did not have was anywhere to look things up.

  • Every race result lived inside a video. To know who won a given race, you watched the video.
  • Career records existed only in people's heads and in community chat.
  • Standings were announced on stream and then scrolled away.
  • The roster, the rules, and the lore were folk knowledge — obvious if you had been there since the start, invisible if you arrived last week.
  • None of it was searchable. Not on the platform, not on Google, not anywhere.

That last point matters commercially. A show with hundreds of videos has hundreds of potential search entry points — marble names, season numbers, race names, rules questions — and every one of them was landing nowhere.

What I Built

The site is a proper archive, not a landing page:

The full race archive — every race, with the video, a transcript, and the finishing order pulled out of that transcript so it can be read, linked and searched as text.

Career statistics — win counts, appearances, and per-marble history built from the archive rather than typed in by hand, so they cannot drift out of sync with the races they come from.

Two standings boards — the recorded season and the live-stream league are separate competitions with separate points, so they are kept separate on the site. Merging them would have been easier and wrong.

The roster — every marble, with its record and its races.

A Lorebook and a Rulebook — the accumulated canon and the actual format, written down in plain language for the first time.

A live bar — the site knows when the show is streaming and says so at the top of the page.

Every page is its own URL with its own title and description, which is the unglamorous part that makes a content site work in search. One long page would have been faster to build and would have thrown away almost all of the value.

The Hard Part Was Honesty, Not Code

Here is the bit I am proudest of, and it is not a design decision.

Results are derived from transcripts. Anything derived can be wrong. So the build has a rule: a result is only accepted when two independent methods of reading the transcript agree on it. If they disagree, the result is held for a human to check rather than published. Anything derived rather than officially confirmed is labelled as provisional on the page.

The same principle runs through the rest of the data. Champions come from confirmed announcements, not from whoever happens to be top of a table. Names are spelled the way the show spells them, including the ones that look like typos — a marble called "Cowgorl" is called Cowgorl, and "fixing" it would be me overwriting the client's own canon with my assumptions.

None of that is visible as a feature. All of it is the difference between an archive the community trusts and one they correct in the comments.

It Updates Itself, and the Client Does Nothing

The show posts constantly. A website that needs its owner to log in and type in results is a website that is out of date by week three.

So the site maintains itself. Scheduled jobs pick up new videos, transcribe them, extract the results, recompute the stats and standings, refresh view counts, and publish — every day, automatically, running on the show's own infrastructure rather than mine. Anything the automation is not certain about gets flagged for a human instead of guessed. Judgement calls — champions, lore — are never automated at all.

The creator's job is to make the show. Not to update a website.

What This Taught Me About Client Work

Build around the data the business already has. This client had years of content and no way to use it. The website's entire value came from turning what already existed into something structured. Plenty of businesses are sitting on the same thing — a job history, a product range, a set of questions they answer every week.

The right structure beats the right template. A generic five-page site would have been quicker, cheaper, and useless here. The shape of the site had to come from the shape of the business.

Never fake certainty. It would have been trivial to publish every derived result as fact. It also would have been the fastest way to lose the audience's trust the first time one was wrong.

Make it maintain itself. Every manual step you leave in a client's website is a step that will eventually stop happening.

What Happens Next

The site went live as the show's official home at the end of July, so it is early days for search — I would rather tell you nothing than tell you an impressive-sounding number I cannot stand behind. I will write a follow-up once there is real data worth reporting.

What I can tell you is that the thing works, the client is using it, the archive fills itself in every morning, and I got to build something genuinely unusual for the first business that trusted me with theirs. That is a very good first client to have.

If you have a business sitting on content, records, or a back catalogue that nobody can search — that is exactly the problem I like solving.

See how SEOJack works, view pricing, or get started.

Topics covered

case studyclient workwebsite buildcontent siteseo

Written by

Hi, I’m Jack. I built SEOJack for people who were done wrestling with WordPress, Wix, Shopify and every other do-it-yourself website builder. The websites I build for you are custom built by me, optimised for speed and search engine optimisation. Or you can make your own first draft with my AI builder.

More Articles You Might Like

UK small business owner reviewing SEO checklist on laptop
SEO10 min read

UK Small Business SEO Checklist for 2026

A practical SEO checklist for UK small businesses: what to check, what to fix first, and what actually makes the difference in local search in 2026.

Ready to Put This Into Action?

Let us build you a professional website that implements all these best practices— so you can focus on running your business.

Privacy Policy