Thomas Cheesman

Case study · a patient site

A rare-disease site, written by a patient

Five plain-language guides to ultra-rare conditions, marked up so a search engine or an AI assistant can tell what each page is, who wrote it, and when it was last reviewed.

Stack
WordPress with a hand-coded Astra child theme · page content lives in the theme, not the editor
Status
Live
Hosted
Hostinger, behind Cloudflare since September 2026 · a push to main deploys
Repo
Private
Since
March 2026, as a hand-coded theme
The ask

What I would have wanted to find

I have Hajdu-Cheney syndrome (HCS), a rare connective-tissue disorder.

Bare Your Rare is a patient-led site for ultra-rare conditions, built because most people searching for one of them find almost nothing. It now carries five guides written for patients rather than clinicians — Hajdu-Cheney syndrome, Erdheim-Chester disease, Fechtner syndrome, POEMS syndrome and stiff person syndrome — each one a long read assembled from the literature and put into plain language.

“I built it from a patient(me)’s point of view. I asked myself what would be helpful to me to come across on the internet? What can explain the nuances of HCS? And then I thought I may as well expand this to more rare disorders so I researched several others. I also wanted to work on my web design and building skills.”

In March 2026 I started moving the site out of the page builders it had been built with and into a theme written for it.

“I wanted freedom to do things I couldn’t or that were a pain in the butt because of the extra weight handling the themes and plugins. Why pay for a plugin when I can ask [an AI] to make it my way for my content?”

The standard

Cited, dated, and readable before any script runs

Each guide links to the medical literature and patient organisations it was written from, and says when it was last reviewed. The words are in the page the server sends, so nothing has to run before a reader, a search engine or an AI assistant can read them.crawl audit, §2 & §5

The machine-readable copy says the same things. Each guide tells software what it is (a medical web page, written for patients), which condition it covers, who wrote it, and when it was last reviewed. That date comes from the same function as the date printed on the page, so the two can’t disagree.handoff-012, O-11

{
  "@type": "MedicalWebPage",
  …
  "medicalAudience": {
    "@type": "Patient"
  },
  "about": {
    "@type": "MedicalCondition",
    "name": "Hajdu-Cheney Syndrome",
    …
  },
  "author": {
    "@type": "Person",
    "name": "Thomas Cheesman",
    …
  },
  …
  "lastReviewed": "2026-04"
}
Part of the structured data /hcs-guide/ serves, verbatim, trimmed to the fields named above. “…” marks what was left out.bareyourrare.org/hcs-guide
What the AI got wrong

A charity that didn’t exist, and an audit that overreached

  1. A charity that didn’t exist

    A site analysis invented a registered charity for the site, “Bare Your Rare Foundation”, and drafted its structured data and its summary for AI tools around it, with made-up social-media links to go with it. Bare Your Rare is one person’s project. Part of that framing shipped: from April, every page told software the site was a non-governmental organisation, and went on saying so until September.

    Kind of miss: plausible but invented · drift across sessions · receipts-001, R-140, R-141
  2. Two problems that weren’t there

    A crawl audit of the site said a poetry category collided with the POEMS syndrome guide. The category was empty. It said the header image had no text alternative on nearly every page. The image had carried an empty one since April, which is how a decorative image is marked.

    Kind of miss: plausible but invented · not seen, so called missing · receipts-001, R-147, R-149
  3. A fix recorded as done

    The same audit’s most serious finding was that the host refused automated fetchers. That matters here: when a patient asks an AI assistant about their condition, the assistant fetches the page on their behalf. The site was moved behind Cloudflare, and the notes recorded the problem as fixed. Five days later, pages the host had not cached were still being refused to some AI agents, by the host itself.

    Kind of miss: looked right but was not measured · receipts-001, R-150
How I caught it

Read it before fixing it, test it before believing it

  1. A read-through, then a live check

    A later read-through took the invented foundation out, while the privacy page was rewritten in plain first person. The structured data kept the old framing for five more months. A check of what the live pages actually serve, made before this page was written, found it, and it was fixed that day.

    Falls under: never invent a date, a figure or an organisation; unknown means ask me · receipts-001, R-140, R-141
  2. Reading the real thing before changing it

    The session that made the audit’s fixes read the code and the live page first. The category held one unpublished post, so the fix became keeping any empty category out of search results. The image’s empty text alternative was already there, so nothing needed doing.

    Falls under: say what you read, not what exists · receipts-001, R-147, R-149
  3. Testing from outside, before this page said “fixed”

    A script fetched the site every six seconds, as a browser and as five AI agents, once with pages forced past the host’s cache and once without. Everything cached came back. Past the cache, one agent was refused every time and two others some of the time. The refusals came from the host’s own server, behind Cloudflare.

    Falls under: “done”, “verified” and “deployed” are claims; prove them from outside · receipts-001, R-150
Each correction, the standing rule it falls under, and where that rule lives.
The correctionThe standing ruleEnforced in
An analysis invented a charity for the site, and its schema outlived the correction Never invent a date, a figure or an organisation. Unknown means ask me CLAUDE.md · rule 11
An audit reported two problems that weren’t there Say what you read, not what exists CLAUDE.md · rule 6
A host fix was recorded as done without a re-test “Done”, “verified” and “deployed” are claims. Prove them from outside CLAUDE.md · rule 2
What shipped

Readable by people and by software, with one gap left

Every guide now tells software who wrote it and when it was last reviewed. It gives one breadcrumb trail instead of two. An empty category no longer appears in search results. The plain-language summary for AI tools, llms.txt, is linked from every page and from robots.txt. And the site no longer describes itself to software as a non-governmental organisation.handoff-012

The honest limits

Checked in September 2026: the host still refuses some AI agents when a page isn’t in its cache, and emptying the cache after an update reopens that gap. The filter is the host’s, it sits behind Cloudflare, and it isn’t fixed yet. The pages are also heavy for a phone on a rural connection, and that hasn’t been worked on.bot check, 2026-09-25

Receipts

The files behind every claim above