Skip to main content
GliscoLab

Internal · Agency website

Rebuilding our own site to pass our own AI extraction test.

We migrated GliscoLab from a Vite SPA to Next.js 15 with full server-side rendering, a structured-data graph, and AI-extractable content architecture — because we failed our own audit on the previous build. This is the why, the how, and what changed.

The problem.

GliscoLab's original site was a Vite SPA. It looked good. It loaded quickly in a real browser. It crashed every test that mattered for the discipline we sell.

We ran the homepage through our own AI extraction audit — the same one we run for clients. When a Googlebot user agent fetched the page, it returned roughly 40 words of crawlable content. Everything else was waiting for JavaScript that the crawler never ran. The schema graph existed in client-side state but never made it into the initial HTML response. Structured-data validators returned errors. AI extraction tools couldn't find the entity signals we'd carefully written.

The site we were selling didn't pass the standard we sell. That had to change before we wrote another line of client-facing copy claiming AI SEO expertise.

The structural choices.

We rebuilt on Next.js 15 App Router with the following hard requirements:

  • Server-rendered by default. Every page returns populated HTML — real paragraph tags, real headings, real entity signals — before any JavaScript runs.
  • Full JSON-LD graph in initial response. Organization, LocalBusiness, Service, FAQPage, Article, BreadcrumbList — all server-rendered, never injected client-side.
  • Performance as a build requirement. First Load JS budget under 114 KB per route, LCP target under 2.5s, no layout shift. Performance treated as a content-extractability prerequisite, not an optimisation phase.
  • AI-ready content structure. Answer-first content, FAQ schema on relevant pages, speakable markup where applicable, and clear entity signals (GliscoLab as a named entity, with knownAbout, areaServed, and sameAs links).

What we built.

The rebuild took six weeks of focused work. Notable structural decisions:

  • Dark-mode only. Removed the light-mode codepaths entirely. Brand identity is dark; maintaining two themes added complexity for zero conversion benefit.
  • Single Container component. Every section reads from one max-w-7xl container with adaptive horizontal padding. Edges align across the entire site.
  • AuditModal as the global CTA. Every primary audit CTA on the site opens one modal via React context — never routes to /contact. Pre-fill for service and industry. Submit posts to GHL + formsubmit and routes to /thank-you.
  • Industry pages as data, not duplicated JSX. Nine industries, one <IndustryPage> template. Each page is ~150 lines of structured data feeding the template — change the template once, every industry page benefits.

The measurable outcome.

The metric that mattered most: crawlable content density. The old Vite SPA homepage returned roughly 40 words of crawlable HTML to a Googlebot user agent. The current Next.js homepage returns 141 paragraph tags of real, indexable content — every section, every callout, every FAQ answer.

Performance budget held: First Load JS under 114 KB per route, LCP consistently under 2.5s on desktop, no layout shift. Google Rich Results Test passes for Organization, FAQ, and BreadcrumbList schema on the homepage. AI extraction tools now find every entity signal we wrote.

What this proves about the discipline.

The structural work is not glamorous. None of this involved a creative breakthrough. What it required was the discipline to fail your own audit, document the gap, and rebuild from the foundation up. That's the same work we do for clients — except we got to do it on our own site first, which means we don't have to claim it. You can verify any of it: view source on this page, run it through Lighthouse, or fetch it with a Googlebot user agent.

The site you're reading is the case study.

Want a site that passes the same test?

Start with a free AI visibility audit — 30 minutes, three opportunities.

Newsletter

AI search insights, once a month. No noise.

What's changing in GEO, AEO, and AI-first marketing — distilled. One email a month. Unsubscribe in one click.