← PJ Geldenhuis · Portfolio Live · updated daily
Case study · Generative Engine Optimization

Making five production sites visible to AI answer engines

Search is splitting in two: the ten blue links, and the answer that ChatGPT, Perplexity, Copilot, and Google's AI Overviews synthesize before anyone clicks. This is the system I built to compete on both — and a live board tracking the climb from day zero.

The problem

I run five live products across three deploy stacks. Each was invisible to AI answer engines for the same reason most sites are: no machine-readable identity. An LLM can read a page, but to cite a source confidently it wants structured signals — who published this, what the product is, how the entity connects to a real person and their other work. Getting that right across five sites, on Next.js/Vercel and static/Netlify, by hand, doesn't scale. So I built it to ship and measure itself.

What shipped

Structured data, 5/5 sites

schema.org JSON-LD — Organization, WebSite, SoftwareApplication, Article — deployed and verified against the live HTML, not just the build.

One entity, everywhere

A sameAs graph links the founder identity across GitHub, X, and LinkedIn so "PJ Geldenhuis" resolves to one person across every property.

Autonomous deploy bridges

A fixed-action bridge per repo: verify → commit → push → build, across Vercel and Netlify — each deploy confirmed on the served page.

A measurement loop

A daily probe checks rank and AI-citation for each site's target query against a fixed baseline. The numbers below are that loop.

The board

Baseline set 16 Jul 2026. Rankings and AI citations take weeks to move — this is honest day-zero, and it climbs from here.

Loading
Per-site status
SiteTarget queryRankAI-citedSchema
Visibility over time
Target queries where the site ranks top-10 or is cited by an AI engine (out of 5). Grows as the daily loop runs.