Endura Coaching
At first glance the site looked fine. Underneath, very little was.
- Result
- 98%technical health score
- 100PageSpeed on best practices and SEO
Where they stood
Gaëtan coaches endurance athletes and cyclists. His website had been built in Lovable by an external developer, and it was not performing. That was why he got in touch.
The problem was not what you see, but what lies underneath.
Opening the code showed the quality was not there. In 13 places a button sat inside a button: invalid HTML causing an error on every page. The sitemap pointed to a page that did not exist, missed other pages and every blog article, and carried outdated dates. One page's canonical pointed at that same non-existent URL, which actively harms indexing.
Beyond that the site was full of what comes along with a build environment like Lovable: 49 installed interface components of which 6 were used, a long list of unused parts, and an empty test setup. Dead code that makes everything heavier and harder to follow.
The design had issues too: the site was needlessly long on mobile, reviews scrolled horizontally without anyone noticing, and key elements were barely legible.
What we did
Build
The site was rebuilt in Next.js and React, with the appearance deliberately kept identical: Gaëtan had to recognise his own site. What changed sat under the bonnet. We also refreshed and modernised the components, and added more calls to action to increase conversion.
The nested buttons were fixed, the sitemap is now generated automatically from all existing pages and blog articles, and canonicals point at URLs that exist. 43 unused components and the redundant parts were stripped out.
On the design side the friction points were resolved: shorter pages on mobile, a clear swipe indicator on the reviews, more legible trust badges, a clearer services menu, a new footer and a custom video player instead of the browser's default bar. Plus a proper 404 page that does not lose visitors but sends them towards a conversation.
Fill
The site was explicitly prepared for AI search engines. Server-side rendering, so the content sits in the HTML instead of appearing after load: what a crawler cannot see, a language model cannot see either. A robots file that explicitly allows GPTBot, ClaudeBot, PerplexityBot and Google-Extended. An llms.txt with an overview of the site for language models. Structured data for the FAQ and the blog articles. And a short summary at the top of each article, which also sits in the structured data.
We also removed every em dash from the copy. Those count as a well-known signal that a text was written by a language model. Making sure AI reads your site is one thing; making sure your writing does not sound like AI wrote it is another.
Convert
We introduced a dynamic contact form on the site, letting visitors send an enquiry or book an intro call. That route is visible from every page: including the blog articles and the 404 page.
What came out
The site looks the same and works completely differently. Technically it is demonstrably healthy, and it is ready for the visibility it never got round to before.
Where we are now
The foundation is in place and the SEO and AI work has just begun. Visibility figures will follow once there is enough measured to say anything meaningful.
More numbers
- 43
- unused components removed
- 13
- places with invalid HTML fixed
- 89 / 98
- PageSpeed on mobile and desktop
- sitemap
- now automatic and complete
- structured data
- for FAQ and blog
Want to work together too?
