# The site you’re on is the SEO case study.

> How this site is built for search and answer engines: prerendered HTML, a strict CSP, JSON-LD on every page, llms.txt and build-time guards.

Page: https://adjltechnology.com/work/this-site/
Updated: 2026-11-12

Case study · This website

We can’t name clients yet, so here’s a build we can open all the way. Every page is HTML before any script runs. Nothing loads from another origin. Each page describes itself in structured data, and the build fails if the copy uses a hype word or an unmeasured number. The numbers on this page are measured in your browser.

[Talk to Daniel](https://adjltechnology.com/work/this-site/#contact)

- **Rendering:** Static HTML, prerendered at build
- **Scripts:** Same origin only, no inline script
- **Data:** One JSON-LD graph per page
- **Checks:** The build fails on any guard

People read the top layer, crawlers follow the middle one and machines parse the bottom one.

Telemetry

## Measured on your visit.

The sizes below were measured when this page was built. The timings come from your browser’s performance APIs, measured now, on your device. If a browser doesn’t report a metric, the field says so instead of guessing.

How each one is measured

- **html, css, js:** gzip sizes of this page’s own files, measured at build
- **LCP:** the largest-contentful-paint entry
- **CLS:** layout-shift entries in session windows, ignoring shifts right after input
- **slowest input:** the longest event duration per interaction
- **3rd-party:** resources from any origin that isn’t this one
- **cookies:** read from document.cookie

Prerendering

## Readable before any script runs.

Every page is rendered to complete HTML at build time by plain string functions. Scripts add motion and measurement, and run the two tools that call a server: the scanner and the scoping assistant. Turn JavaScript off and every word is still there. The meter below compares the words in the raw HTML with the words your browser rendered.

Response headers

## Nothing loads from anywhere else.

No font host, no outside script host, no analytics and no embeds. The content security policy says so, and your browser enforces it. When scripts run, the panel fetches this page’s real response headers as it comes into view. Without them, it shows the policy this site ships.

- **`default-src 'self'`:** Nothing loads from anywhere else.
- **`script-src 'self'`:** No inline script and no eval.
- **`style-src 'self' 'unsafe-inline'`:** Inline style attributes, used for animation offsets.
- **`img-src 'self' data:`:** Images from this site and inline data images.
- **`font-src 'self'`:** Fonts are self-hosted.
- **`media-src 'none'`:** No video or audio at all.
- **`connect-src 'self'`:** The live readouts fetch from this site and nowhere else.
- **`frame-src 'none'`:** No embeds.
- **`object-src 'none'`:** No plugins.
- **`frame-ancestors 'none'`:** Nobody can frame this site.
- **`base-uri 'self'`:** Relative links can’t be pointed elsewhere.
- **`form-action 'self'`:** A form can post only back to this site.
- **`upgrade-insecure-requests`:** Any plain http request is upgraded.

Structured data

## Every page describes itself.

Each page carries one JSON-LD graph. The company, its founder, the site, the page and what the page is about, joined by stable IDs. The same IDs appear on every page, so a machine reading two pages knows they describe one company.

Machine-readable files

## Files written for machines.

Each of these is generated from the built pages on every deploy, so none of them can describe a site that no longer exists.

- sitemap.xml (dates from git history)
- robots.txt
- llms.txt
- llms-full.txt
- A markdown copy of every page
- build-report.json

Build guards

## Checks that fail the build.

These run on every deploy. If one fails, the previous version stays live. If you’re reading this, every check passed.

| Guard | What it stops |
| --- | --- |
| check-css | A class with no style, or a style nothing uses |
| check-links | A link to a page or fragment that doesn’t exist, or a page nothing links to |
| check-claims | Hype words, and any number attached to a performance claim |
| check-contact | The contact address missing, unlinked or half-changed |
| check-motion | An animation module with nothing on any page to animate |
| check-markers | An authoring marker shipped as visible text |
| check-usage | British spellings, the wrong firm name, or a description that’s too long |
| check-voice | Copy drifting into the padded register we don’t write in |
| check-seo | A missing canonical, a second h1, a relative share image or broken structured data |
| check-provenance | A demo without a label saying whether it’s live |
| check-budget | A page over its byte budget, or a file nothing uses |

Motion tiers

## Motion that knows when to stop.

Every animation here runs at one of three levels. Full on a desktop, lighter on phones and low-memory devices, and none at all if you’ve asked your system for reduced motion. Anything that loops pauses when it’s off screen. The Pause button stops all of it.

Left out

## What it doesn’t do.

No cookies. No trackers. No third-party scripts. A form can post only back to this site. Ask This Site is retrieval only, and no language model writes its answers. The one place a model runs is the scoping assistant on the start page. It’s called from a server function, so no key ever reaches your browser.

Built under

- [SEO & AI Search](https://adjltechnology.com/services/seo/)
- [Websites & Apps](https://adjltechnology.com/services/software/)

Next

- [How the trading pipeline works](https://adjltechnology.com/work/trading-infrastructure/)

Start here

## Tell us what’s slow, or what can’t be found.

One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too.

[Start a project](https://adjltechnology.com/start/)

[daniel@adjlcapital.com](mailto:daniel@adjlcapital.com)

[Email Daniel](mailto:daniel@adjlcapital.com)

Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone.

[ADJL Technology](https://adjltechnology.com/)

Today’s investment, tomorrow’s legacy.

ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski.

[daniel@adjlcapital.com](mailto:daniel@adjlcapital.com)

Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts.

ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds.
