Skip to content
Ben Peetermans

Ben Peetermans

Builder. 20 years shipping for the web.

Let's talk
Build Notes
Build Notes

You Are Invisible to Machines

I ran 5 websites and wrote 58 articles. To every crawler and AI, I didn't exist. Here's the entity coherence audit that fixed it — and a checklist so you can fix yours.

You Are Invisible to Machines

I ran 5 websites. Wrote 58 articles. Built 3 SaaS products. Spent months promoting all of it.

Then I asked a simple question: “Can a crawler tell who built itbroke.dev?” — a monitoring SaaS I built from scratch, one of the products I’d been actively promoting.

The answer was no. Not reliably. Not from structured data. Not from meta tags. Not from any machine-readable signal on any of my 5 sites.

I was a ghost with a portfolio.

The test

I built an auditor that checks entity coherence across sites — whether a person exists as a structured, machine-readable identity that crawlers and AI can actually parse. Not whether content exists. Whether the builder exists.

The audit asked one question across 5 layers: Can a machine connect “Ben Peetermans” to the things Ben Peetermans built?

What I saw: 5 live sites, press kits, articles, a projects page listing everything I’ve shipped

What crawlers saw: 5 disconnected websites with no structured Person entity, no author attribution, no cross-site links, and bylines that just said “Ben”

Five layers, all zeros

The audit checked structured data, HTML meta tags, AI crawler signals, visual attribution, and cross-site links. Every layer came back empty.

1
JSON-LD — No Person schema on any site. Organization schemas existed on 2 sites but with no founder property and empty sameAs arrays. Zero creator declarations.
2
HTML meta — No <meta name="author"> anywhere. No article:author. No rel="me". No twitter:creator. Article bylines said “Ben” — no last name.
3
AI signals — llms.txt files existed on 4 sites but none mentioned my full name or linked to a press kit. An AI reading these files couldn’t attribute the product to a person.
4
Visual attribution — Footers said “Launch With Ben” but never “Ben Peetermans.” No social links. My /about page returned a 404. Kit pages existed but weren’t linked from any navigation.
5
Cross-site links — My products didn’t link back to me. My portfolio didn’t link to the live product URLs. The entity web was completely disconnected.

The headline finding: “Ben Peetermans” did not exist as a structured entity on any of 5 websites.

An AI asked “Who built itbroke.dev?” would have to scrape HTML and hope. There was no machine-readable path from any product to a person.

Why this matters now

When someone asks ChatGPT or Perplexity “who built itbroke.dev,” the answer comes from entity signals — Person schema, sameAs links, author meta tags. Not from scanning your homepage and guessing.

LLM-powered search pulls from structured data. Google’s Knowledge Graph connects people to things through structured signals. If you don’t provide those signals, you don’t exist in the graph. Your products float in isolation. Your articles have no author. Your portfolio is a list of things that belong to nobody.

This is the difference between an AI confidently answering “Ben Peetermans built itbroke.dev, SerpDelta, and LayerView — he’s a solo builder with 20 years of experience” and responding with “I don’t have enough information to answer that.”

What I fixed

The entire fix took about 2 hours across the main hub site. Here’s what shipped:

Person JSON-LD on every page — the single highest-impact fix. Created the entity that didn’t exist:

{
  "@type": "Person",
  "@id": "https://launchwithben.com/#person",
  "name": "Ben Peetermans",
  "sameAs": [
    "https://www.linkedin.com/in/...",
    "https://itbroke.dev",
    "https://serpdelta.com",
    "https://layerview.dev"
  ]
}

The @id creates a reusable identity anchor. Every other schema on every other site can now reference this single Person entity instead of creating disconnected copies.

Organization schema with founder — connected the business to the person:

{
  "@type": "Organization",
  "founder": {
    "@type": "Person",
    "@id": "https://launchwithben.com/#person"
  },
  "sameAs": ["https://itbroke.dev", "https://serpdelta.com", "..."]
}

The rest of the fixes:

  • <meta name="author" content="Ben Peetermans"> on every page
  • 6 rel="me" links in the <head> (LinkedIn, Threads, all product domains)
  • Article JSON-LD with author referencing @id: #person
  • article:author OG meta pointing to /about
  • Footer: “Built by Ben Peetermans” + Press Kit link + social icons
  • Created /about page with ProfilePage schema
  • Created humans.txt
  • Updated llms.txt with full name and press kit link
  • Fixed article bylines from “Ben” to “Ben Peetermans”

I also found bugs: breadcrumb schema was producing doubled URLs (https://example.comhttps://example.com/learn), and article:published_time was outputting unix timestamps instead of ISO 8601. Both the kind of silent failures you only catch by actually checking what the code produces instead of trusting that it works.

The checklist

This is the generalized version. Run it against your own site — especially if you’re a solo builder with multiple projects.

Entity Coherence Checklist
  • Person JSON-LD exists on your main site with @id, name, url, sameAs linking to all your profiles and projects
  • Organization schemas on every product site include a founder property referencing your Person @id
  • <meta name="author"> on every page uses your full name — not a first name, not a brand name
  • rel="me" links in your <head> point to your social profiles and product domains
  • Article pages have article:author OG meta and Article JSON-LD with author referencing your Person @id
  • Footer attribution on every site says “Built by [Full Name]” with a link to your hub site
  • /about page exists and doesn’t 404 — this is your canonical author destination
  • Cross-site links go both directions: hub → products AND products → hub
  • llms.txt mentions your full name and links to your press kit or about page
  • humans.txt exists with your name and site URL

Every item is a signal. Alone, each one is small. Together, they create the entity graph that tells machines who you are and what you built.

Verify it worked

Shipping fixes without checking is the same mistake that got me here. After you implement the checklist, confirm machines can actually read what you added:

  1. Google’s Rich Results Test — paste any page URL. Check that Person and Organization schemas parse without errors. If sameAs or founder don’t appear, they’re malformed.
  2. Schema.org Validator — more detailed than Google’s tool. Shows every property and flags missing recommended fields.
  3. Ask an AI — literally ask ChatGPT or Perplexity “Who built [your-site.com]?” If the answer is confident and correct, the signals are landing. If it hedges or gets it wrong, something’s missing.
  4. View source — search for application/ld+json in your page source. Count the Person references. Check that @id matches across schemas. Check that article:published_time is ISO 8601, not a unix timestamp (I had that bug).

If you skip this, you’re doing what I did: promoting in the dark. Spending time and money making things people can find — while machines can’t connect any of it to you.

The good news: unlike most SEO, this isn’t a game. It’s just telling the truth in a format machines can read. Two hours of work, and now the question “Who built itbroke.dev?” has a structured answer.


Related:

  • Audit Before You Spread the Mess — The same principle applied to code: find structural problems before they multiply
  • AI Trusts Your Docs. That’s the Problem. — Why “looks right” isn’t “works right” — and the bugs I found by checking
  • Flying Blind with Expensive Instruments — Promotion without signals is the same trap as analytics without the right conversions