# Back on the Open Side

*Structured data doesn't make our site more crawlable, it makes the facts in it liftable. Here's the Organization and BlogPosting JSON-LD we just added, live.*

addAI.dev &middot; Field Notes

By [Jay](mailto:jay@addAI.dev) &middot; September 2026

`#AIVisibility` `#TechDeepDive` `#AITools`

[How to Make Your Website Visible to AI](/blog/how-to-make-your-website-visible-to-ai.html) and [How We Keep Our Own Blog Readable to AI Agents](/blog/agent-readable-blog.html) were both about being read openly. [The One Page We Didn't Make Agent-Friendly](/blog/form-security.html) drew a single deliberate exception. [The Standards Aren't Written Yet](/blog/standards-arent-written-yet.html) closed by naming exactly what was coming next in this series: structured data. Here it is, live today, and it's about as literal as "being read" gets: structured data that hands an agent the facts about us directly, instead of making it infer them from prose.

## What schema.org actually is

Not a meta tag, and not specific to any one AI company. [schema.org](https://schema.org) is a shared vocabulary, maintained jointly by Google, Microsoft, Yahoo, and Yandex since 2011, for describing things on a page in a structured, typed way: an `Organization`, a `BlogPosting`, a `Product`, a `Review`. Expressed as [JSON-LD](https://json-ld.org), it sits in a single `<script>` tag in the page's `<head>`, entirely separate from the visible HTML - nothing about how the page looks or reads changes.

Here's the exact block now live on our homepage:

```
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "addAI.dev",
  "url": "https://addai.dev/",
  "logo": "https://addai.dev/assets/icon/mark-512.png",
  "description": "One task automated, no dev team required.",
  "contactPoint": {
    "@type": "ContactPoint",
    "email": "jay@addAI.dev",
    "contactType": "customer service"
  }
}
</script>
```
*every page's \<head\>*

An agent that wants to know what we do, or how to reach us, doesn't need to parse a sentence to find out. It's a typed field, not a guess.

## Every post gets one too

The blog posts carry their own type, `BlogPosting`, with the specifics that matter for a single article rather than the whole site:

```
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "The One Page We Didn't Make Agent-Friendly",
  "datePublished": "2026-09-13",
  "author": { "@type": "Person", "name": "Jay" },
  "publisher": { "@type": "Organization", "name": "addAI.dev" }
}
```
*blog/form-security.html (trimmed)*

`datePublished` is the actual date each post's HTML file first landed in git, not a rounded-off "September 2026" - if a byline states the real ship date, the machine-readable version of the same fact should match it.

## Why this matters more than it looks like it should

This isn't a ranking play, the same caveat we've made about every layer in this series. What it changes is precision. A crawler reading plain HTML has to infer that "Jay" in a byline is the author, that "September 2026" is a publish date, that the business described in paragraph three is the same one the domain belongs to. Structured data doesn't ask it to infer any of that - the type system says so directly.

> A crawler reading plain HTML has to infer who the author is, when something published, what business a domain belongs to. Structured data doesn't ask it to infer any of that.

It also rides along for free once real content negotiation is built: per [Cloudflare's own docs](https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/), their Markdown-for-Agents conversion preserves a page's JSON-LD in a fenced code block rather than dropping it. Add the structured data once, and it survives every future format the page gets served in.

Everything on this list so far - named bot rules, a sitemap, Content Signals, a Markdown twin, now structured data - is the same argument from a different angle: being read isn't passive. It's a series of decisions about what a machine gets to understand cleanly versus what it has to guess at.

**It's also the kind of groundwork we add to a client's site directly: no redesign, just making the facts already sitting in the page something a machine can act on instead of guess at.**

[Get in touch](/contact.html)
