LOG 08 · STRATEGY

Performance & SEO Engineering

Structured data, sitemaps, and semantic metadata treated as part of the build from day one — not a checklist run the week before launch.

Published · Updated

Structured data describes the business, not just the page

This site ships a JSON-LD graph describing the person, the website, the service offering, the portfolio items, and a FAQ block — all typed as real schema.org entities, not a flat meta-description. Search engines (and increasingly, AI answer engines) can parse that graph directly instead of inferring it from prose, which is a meaningfully different bar to clear than 'has a title tag'.

This journal you're reading is itself part of that strategy: each entry is a real, indexable page about one specific technology, linked from a real navigation path — topical depth a single all-purpose homepage can't provide on its own.

Performance budgets around the fun parts

A WebGL-heavy homepage is exactly the kind of page that can quietly fail a Core Web Vitals audit if nobody's watching — a render loop that never yields, a synchronous asset load blocking first paint. Building with that constraint in mind from the start (async asset loading with a visible fallback, effects that degrade gracefully rather than freeze under load) is what keeps the 'impressive to look at' version of a site from being the 'ranks lower because it's slow' version too.

Audit the exported HTML, not the dev server

The document a crawler reads is the built file, and it is not the thing you were looking at while developing. So the build ends with a pass over the exported output: strip the legacy `nomodule` polyfill bundle, which is the only script on the page without async or defer and therefore the only one that reads as render-blocking, even though no browser in the support matrix would ever execute it. Remove duplicate preload hints. Then read what is left.

The checks worth automating are the boring ones. Does every page have exactly one h1? Is every title and heading unique across the whole site, including the translated copies, where a brand name that is identical in three languages will quietly produce three identical headings? Is page-specific structured data actually on the page it describes, rather than stamped into every route by a shared layout? Those questions are cheap to answer against a folder of HTML files and expensive to answer after launch.

Services that use this