The Well
at Nine Yards
The Well is a wellness centre in Johannesburg. Brightwork built its brand site and its bookable experience on Shopify — a short quiz that points you to the right programme, a live class calendar that's always current, and memberships — and shipped it with a team of AI agents.
The Well at Nine Yards is a wellness centre in Johannesburg. Brightwork built its brand site and its bookable experience on Shopify — a short quiz that points you to the right programme, a live class calendar that's always current, and memberships — and shipped it with a team of AI agents. Warm on the surface, carefully engineered underneath, and mobile-first throughout.
The brief
The Well is a Johannesburg wellness brand with a clear point of view: urban wellbeing, done well. The positioning is deliberately not spa-and-luxury — it's grounded and intelligent, built on language of recalibration: regulation, rhythm, coherence. The site had to feel like that, not like every other wellness template.
What they needed was two things at once: a brand site that carried that voice, and a bookable experience spanning memberships, classes, events and treatments — with the scheduling itself handled in their booking platform, Rezerv, and the brand experience living on Shopify. Signed in March 2026, it's a phased, ongoing build.
Not spa. Not luxury. A grounded, intelligent place to recalibrate — regulation, rhythm, coherence.
— the brand brief, in a lineMobile-first from the brief
Most people meet The Well on a phone, so the whole thing was designed for the small screen first — the same warmth, the same quiz, the same live calendar, on the device most visitors actually hold.
The brand, built
The site runs on a bespoke Shopify theme we built for The Well — codenamed "Oasis". It opens on a cinematic hero with a word-by-word reveal, a film-grain texture and gentle parallax, then unfolds into homepage story tiles: a warm, editorial design in the brand's own palette (Root, Mousse and Clay), set in Arsenal and Poppins.
This is the part worth being clear about: it is hand-built, not a template drop-in. Around 90 custom theme sections make up the site, each one designed for The Well rather than adapted from something generic — which is what lets a Shopify store feel like a brand instead of a storefront.
Find your pathway
A wellness catalogue is overwhelming when you don't know where to start. So we built The Well Guide: three short questions — "how are you feeling right now?" (frazzled, flat, motivated, happy…) — that match a visitor to one of three pathways: Reset, Revitalise or Deepen.
Crucially, we rebuilt the Guide to educate, not sell. The result gives a personalised "why this matched" line, three "did you know" education cards — Where you are, Classes that help, Recovery that supports — and exactly one soft membership nudge. No prices, no hard sell. The result is also shareable (encoded in the URL) and printable (it injects a QR code that deep-links straight to booking).
Left: three plain questions about how you feel right now. Right: a result that teaches rather than sells — a "why this matched" line, three education cards, and a single soft nudge.
◇ For engineers The rubric, the shareable URL, and the printed QR
The Guide is a 3-question rubric: each answer
contributes weighted points toward the three pathways, and the
highest score selects Reset,
Revitalise or Deepen — with the
"why this matched" copy generated from the same signals, so the
explanation always agrees with the result.
The full result is encoded in the URL as a
compact ?s= state parameter, which is what makes it
shareable: send the link and the recipient lands on the exact
same pathway page without re-taking the quiz. On print, the page
injects a QR code that deep-links to booking,
so a paper hand-out still walks a visitor straight to the right
classes.
One idea, everywhere
The Reset / Revitalise / Deepen taxonomy isn't just a quiz gimmick — it's a single language for "where you are right now" that threads through the whole site. The same three pathways drive the pathway pages, colour the chips on the live class list, and become the email tags a visitor is assigned — so every touchpoint speaks the same, coherent language.
A calendar that keeps itself current
The client's booking system, Rezerv, has no public API. Its off-the-shelf widget works, but it can't be styled to feel like The Well and it can't understand pathways. So Brightwork found the private API its own widgets use and built a live, native class list on top of it — one that belongs to the brand, not to a third-party embed.
Two genuinely hard problems came with that. First, staying current: Rezerv creates a brand-new class category every month, so any hardcoded list quietly goes stale. Our list rebuilds the category list live from the API, so a new month simply appears — zero code changes, nobody to remember. Second, pathway chips: because the stock widget can't tag classes by pathway, we built a custom class list that matches each class to Reset / Revitalise / Deepen and colours it accordingly, with a graceful "taking a moment" fallback if the API is ever down.
And a quieter detail that matters: the calendar anchors to Johannesburg business time, so it opens on "today" for a visitor in any timezone — not yesterday for someone loading it from another continent.
◇ For engineers Reverse-engineering Rezerv, live category rebuild, and pathway mapping
The class list talks directly to the private
widget-api.rezerv.co/v1/public surface — chiefly
/classes and /timetable — the same
endpoints Rezerv's own widgets call. On load it
rebuilds the category list live from
/classes, so when Rezerv rolls a new monthly
category the site picks it up with no deploy: the "self-updating
calendar" is really a refusal to hardcode what the API already
knows.
Pathway chips come from a substring → pathway
mapping: class names are matched to
Reset (Mousse), Revitalise (Clay) or
Deepen (Root), and coloured with the brand tokens
already in the theme — no new palette, just the pathway's own
colour. If the API is unreachable, the list degrades to a calm
"taking a moment" state rather than an error.
The events page runs a two-pass, editorial + live
merge: a curated editorial layer is hydrated against a
concurrent scan of /timetable,
results cached in localStorage for ~20 minutes to
keep it fast and kind to the API. Every business date is anchored
to Africa/Johannesburg, so "today" is the
studio's today regardless of the visitor's own timezone.
Everything under one roof
Under the brand and the booking sits a lot of surface area. We built four membership tiers — Origin, Stream, Well and Source — a full massage menu (deep tissue, hot stone, lymphatic, Kahuna, Thai, mother-to-be and more), and The Well Collective of practitioner services (Reflexology, Reiki, Crystal Therapy, Jin Shin Jyutsu, and others).
Around 30 individual pages for classes, therapies and recovery give each offering its own home, and an accessible FAQ ships with FAQPage JSON-LD so search engines and answer engines can read it directly.
Memberships, the massage menu, the practitioner Collective, and per-treatment detail pages — one coherent brand across a wide catalogue.
Built from the client's own words
The best part of this build is how the client's feedback became the work. A submittable review checklist turned their notes directly into GitHub issues, and of the ten items approved, eight were built by AI agents — three running concurrently, across two waves — and shipped live. Feedback in one end, shipped changes out the other.
A client screen recording did something a spec never could: it exposed a booking dead-end on the events page, which we turned into a concrete, measured reorder rather than a vague "make booking easier". Watching a real person get stuck is worth a hundred assumptions.
- Their decisions, respected. We kept the Services page and the "credit" wording exactly as the client asked — even where it ran against our own conversion research. It's their brand; our research is advice, not a veto.
- No invented prices. We never displayed a price the client hadn't confirmed. Where a number wasn't set, the page simply doesn't pretend to know it.
- Feedback as a pipeline. The review checklist → GitHub issues → agent build → live loop is how a small team turns a client's own words into shipped changes, fast.
Built by a team of AI agents
The Well was built the way Brightwork builds everything — with a coordinated team of AI agents, orchestrated by Loom on GitHub. Every task became an issue, built on its own branch, reviewed as a pull request, and merged when it was clean. Over the build that added up to roughly 545 commits, with concurrent builder agents moving work in parallel.
The assembly line
A task is filed on GitHub — a feature, a fix, an idea.
An agent enriches it into a clear, buildable spec.
A builder agent implements it in an isolated worktree, opens a PR.
A judge agent reviews the PR for quality and safety.
A champion agent merges it — and the change ships.
The result is a build process that's fast, parallel and — crucially — auditable: every decision lives in a pull request you can still read. And in the same spirit, this very case study was built the same way, as a tracked GitHub issue run through a Loom cycle.
◇ For engineers The Loom role model
Loom coordinates agents through GitHub as the shared source of
truth, with one git worktree per issue (branch
feature/issue-N) so agents work in parallel without
colliding. Labels drive the state machine
(loom:issue → loom:building →
loom:review-requested → loom:pr). The
client's own review round — issues #60–#65 — was
built three agents concurrent, across two waves.
The roles:
- Curator enriches a raw idea into a spec-ready issue
- Builder implements it in an isolated git worktree, opens a PR
- Judge reviews the PR for quality, security & correctness
- Champion auto-merges once it is clean and mergeable
- Hermit hunts down complexity and proposes removing it
Governance is deliberate: a capped number of parallel agents, no unattended daemon, and auto-merge restricted to pull requests GitHub reports as genuinely mergeable and clean.
The result
The Well is live at thewell.africa: a warm brand site, a quiz that guides rather than sells, a class calendar that's always current, and memberships — all mobile-first, and shipped fast because AI agents turned the client's feedback straight into shipped changes. A bookable wellness brand, built end to end.
A bespoke Shopify theme with ~90 custom sections — warm, editorial and unmistakably The Well, not a template.
A live, self-updating class list on Rezerv's private API, with pathway chips and correct Johannesburg dates.
~545 commits by AI agents, with client feedback turning into live changes in the same short cycle.
What we built
- Bespoke Shopify theme "Oasis" — ~90 hand-built theme sections, no template drop-in
- Cinematic hero word-by-word reveal, film grain, parallax
- Editorial system Root / Mousse / Clay palette, Arsenal + Poppins type
- Story tiles homepage narrative modules in the brand voice
- Rezerv live integration native class list on the private widget API
- Self-updating calendar category list rebuilt live — new months, zero code
- The Well Guide quiz 3 questions → Reset / Revitalise / Deepen
- Pathway taxonomy one language across quiz, chips and email tags
- 4 membership tiers Origin · Stream · Well · Source
- Massage menu deep tissue, hot stone, lymphatic, Kahuna, Thai, more
- The Well Collective Reflexology, Reiki, Crystal Therapy, Jin Shin Jyutsu…
- ~30 detail pages individual class, therapy & recovery pages
- FAQPage JSON-LD structured data for search & answer engines
- Accessibility semantic headings, alt text, keyboard-navigable
- Mobile-first every page designed for the phone first
- Loom + GitHub AI agents building through issues & pull requests
This is what Brightwork does for website clients: a brand you can feel, a booking experience that runs itself, and a build fast enough to turn your feedback into live changes.
Visit the live site