Jim Bramlett
An executive coach's site selling a ten-module leadership programme to business owners and managers, alongside his book and free self-scoring diagnostic tools.

What they came with
One person sells several different things here. There is a ten-module programme with three ways in, a book, a discovery call and a set of free diagnostics, and each arrives from a different kind of visitor. A single enquiry form cannot tell them apart. The programme itself has ten modules that each have to argue their own case before anyone commits to the set. And the diagnostics that qualify a lead are not brochure pages; they are instruments that must produce a result the visitor believes in.
What the build had to do
A syllabus that argues module by module
Each of the ten modules carries the same three-part structure: the pain, the fix, the outcome. Holding that shape across every card, on the home page and again on the course page, makes the module the unit of content rather than the page layout, and lets the modules be grouped into phases without rewriting them.
Three ways into one programme
The course is sold as a free first module, as the full set of ten, and as a discovery call for anyone who cannot choose. The enrolment page has to keep those offers distinct without letting the free one read as the whole product.
Diagnostics as first-class pages
A growth audit and two quizzes each run as their own multi-step interface rather than a form dropped onto a marketing page. The audit asks for an email before scoring begins, so an address is captured whether or not the visitor reaches the end.
A podcast type, not a blog
Interviews live in a registered `podcast` post type with its own archive and a `podcast_category` taxonomy. That lets one appearance carry a permalink of its own while the same records are pulled onto the about page.
Lead capture split across two systems
Enrolment and the newsletter run on a HighLevel funnel at a separate subdomain, the book checkout goes to Stripe and the discovery call to Calendly, while site enquiries stay in Contact Form 7 on WordPress. Every call to action has to route to the right one, and the set has to read as a single site.
Technical detail
Scoring runs in the browser, results post twice
The competitor audit totals each criterion group in jQuery and normalises it with `Math.round((total / count) * 100)`, skipping the total and score rows so they cannot feed themselves. Those values are written into hidden fields on a Contact Form 7 form and posted with `fetch(formElement.action, ...)`, while jsPDF and AutoTable build the report client-side from the same numbers, chaining `doc.lastAutoTable.finalY` so tables flow down the page.
HTML cached at the edge
Pages return a long public `cache-control` max-age with `cf-cache-status: HIT`, sitting over an origin page cache that reports its own hit and miss state in `x-gateway-cache-status`. That puts the whole document out of reach of per-visitor logic, so form posts, quiz state and enrolment all have to live on paths that bypass the cached page rather than inside it.
Scroll reveals against a split stylesheet
Almost every block on the home page carries an AOS trigger with a staggered delay, and the responsive rules sit in `responsiveness.css`, separate from the base `styles.css`. Elements that animate in have to hold their space while still hidden, or the stagger plays against a page that is still settling.
The stack
Platform
Front end
Tools and output
Delivery and capture
- Sector
- Executive leadership education
- Audience
- Owners, executives, managers
- Shape
- Marketing site plus assessment tools
- Platform
- WordPress, custom theme



Something like this to build?
Tell us what runs today and where it hurts. An engineer reads it and replies.