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.



