Note

What we did to this site, and why you can check all of it

A firm selling AI citation whose own site is not readable has no argument left. Every technical decision behind martenfield.com, including the ones that cost us something.

Published

This site is the product demo. That single fact ruled out most of the normal choices, and it is worth writing down which ones and why, because you can verify every claim here against the page you are reading.

The constraint

A firm selling AI citation whose own site is not readable by a crawler has no argument left. So: every page is complete static HTML at its URL, with the full content present when JavaScript is disabled.

That rules out client-side rendering, gated content, JavaScript-dependent tables, infinite scroll, and any marketing platform that injects wrapper markup. It also rules out the pattern where content sits behind an accordion or a tab, which is worth stating plainly because we charge clients to fix that pattern and could hardly ship it ourselves.

Check it: disable JavaScript and reload. Nothing should change. There is one <script> tag on any page here and it contains JSON-LD, not code.

Zero JavaScript, and what it cost

Built on Astro rather than the framework we use for everything else. On most stacks you configure your way toward static HTML and fight the framework’s tendency to hydrate. Here that was the starting state.

The cost is real: the interactive scorecard tool we eventually want will not share a codebase with this site. We took that trade because a hydration mistake on this particular site is not a performance regression, it is the argument collapsing.

Markdown mirrors

Every research post, guide, and service page on this site is served twice. Once as HTML for you, and once as plain markdown at the same path with a .md extension, linked from the HTML head with rel="alternate".

The mirrors are generated from the same source the HTML renders from, not maintained alongside it, so the two surfaces cannot drift. Pages whose prose lives only in a template do not advertise a mirror, because a mirror somebody has to remember to update is a mirror that will eventually be wrong. All of it is concatenated at /llms-full.txt.

This is not a trick. It is the most direct possible answer to the question “what does a model actually receive from your page”, and it makes that question checkable by anyone rather than arguable.

It also made us honest during the build. Several drafts read fine as designed pages and turned into mush as plain text, which is a reliable signal that the layout was doing work the writing should have been doing.

Crawler access, checked from outside

robots.txt explicitly names and allows the agents that matter: GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, PerplexityBot, Perplexity-User, Google-Extended, CCBot, Bingbot, and Applebot-Extended.

Explicit rather than a blanket allow, because the point of this file on this site is to be legible to a human auditing us.

The part that catches people, and caught us on the checklist: permitting a crawler in robots.txt does not mean your edge is letting it through. Several CDN bot-management products block AI crawlers by default under managed rules, and the block is invisible from your own testing because you are not the bot. The verification step is fetching your own pages from outside with the actual user agent, not reading your configuration and assuming.

Provenance next to every number

Every page carrying data also carries a measurement stamp: what was collected, when, against which engines, at how many runs per query, under which method version. Same position, same format, every time.

It is the one visually distinctive element on the site and it earns its place by being the ethic of the business made visible. The competitive set publishes numbers with no provenance attached.

The stamp has one behaviour worth calling out. Where a figure is illustrative rather than measured, the stamp says so in red, unprompted. The home page scorecard currently carries that flag, because the measurement pipeline has not produced its first real run yet and we would rather ship a visible placeholder than an invisible fabrication.

Structured data that resolves

Organization, WebSite, and a Person node for the founder, plus Service on each service page, Article on research posts, FAQPage on genuine question blocks, and BreadcrumbList throughout.

Two details that are usually skipped. The Person node reuses the same @id used across our other properties rather than minting a new one, so the founder resolves to one entity across the web instead of three weak ones. And every @id reference in the graph resolves to a node that actually exists, verified in the build rather than assumed, because a graph with dangling references describes nothing.

Entity sameAs links were validated against the Wikidata API one at a time during the build. Anything we could not confirm has no sameAs at all, on the principle that a wrong one is worse than a missing one.

Light, on purpose

Nearly every site in this category is dark with a neon accent. We went light, and not as a taste call.

The register is analyst publication and that world is paper. Long table scanning is harder on dark. Index pages get forwarded and printed, and dark sites produce garbage when printed to PDF, which matters because those are the pages that travel inside a company.

Dark is used here for exactly one thing: showing what the machine sees. Raw responses, JSON-LD, robots.txt samples, markdown previews. Colour carries meaning on this site or it does not appear, and the same rule governs the only two accent colours, which appear inside tables and nowhere else.

What we have not built

No CMS, for one author publishing weekly. No component library, for a site that needs six components. No tags, categories, related posts, or pagination on a reverse-chronological list with three entries on it. No analytics beyond a privacy-friendly counter, because the metric that matters is citation share and we already measure that. Nothing with a login.

Every one of those is a thing we would have to maintain in exchange for solving a problem we do not have yet.

The measurement that matters

martenfield.com is in the tracking pipeline against its own query set. The early results will show we do not appear for most of it. We are going to publish them quarterly regardless, starting from the baseline where we look bad, because that is the only case study we can run without asking anyone’s permission.

Start here

Find out whether the models cite you.

The audit measures 50 buyer-intent queries across five engines at three runs each, maps the sources the models draw from, and returns a ranked 90-day roadmap. Two weeks, $3,500.

See what the audit covers