- Dashed underline: my idea or design decision, written up jointly.
- Margin note: an argument or fact the model contributed, not me.
Status: v0.1 · draft · MIT license Repository: github.com/tomasgauthier/weid Live demo: La estandarización de la prosperidad (in Spanish), the first text published with the convention
weid- — the Proto-Indo-European root meaning to see. From it come vision, idea and evidence: literally, what is plainly seen. The etymology is the thesis: this makes visible which ideas are human, which is why it is called evidence and not proof.
1. The gap it fills
The debate about text and AI got stuck on a binary question: did a person write this, or did a machine? For almost everything written today that question no longer has an answer, because it is not the question.
Two things can be true of the same essay: that an AI drafted nearly every sentence, and that every idea is human. The disclosure standards that exist cannot express that. They operate on the whole document — “this involved AI” — and there they stop.
The gap widened when the W3C AI Content Disclosure Community Group merged its assisted and generated values into a single ai-assisted. The merge is correct at document level: the boundary between “assisted” and “generated” is impossible to police. But it leaves one value carrying the entire range of human-machine collaboration, from light editing of human prose to an AI-drafted text a human reviewed.
weid marks the other thing: what is human, and in what way it is. It complements ai-disclosure, it does not compete with it: use both.
The underlying bet is that thinking is still a human activity, only now augmented, and that an honest disclosure ought to be able to show that sentence by sentence instead of hiding it.
2. The base rule
In a document declared as AI-assisted, unmarked text was written by the AI.
The marks point at the human. The opposite of what you would expect, and deliberately so: in an assisted text the human part is the scarce thing, and marking the scarce thing is the only thing cheap enough to actually do. If you marked your own, you would mark 90% of the document and nobody would read any of it.
A document carrying weid marks but no disclosure attribute is malformed: without the baseline, the marks assert nothing.
3. Document level
The declaration goes on the root element of the work — the <article>, or <body> if the whole page is the work:
<article data-ai-disclosure="ai-assisted"
data-ai-model="claude-opus-5"
data-ai-provider="Anthropic">
data-ai-disclosure takes the three values from the W3C proposal:
| Value | Meaning |
|---|---|
human-only | positive assertion that no AI was involved |
ai-assisted | AI was involved, with human authorship and/or review |
ai-autonomous | published with no human intervention or review |
Absence of the attribute means unknown, not human-only. weid applies to ai-assisted documents: that is the value the marks subdivide, and the reason they exist.
The data- prefix is deliberate: it is valid HTML today, it survives validators, and it mirrors the proposed attribute one to one, so a document marked now stays correct if the unprefixed attribute is ever adopted.
4. Whose voice is the AI writing in?
A model writing in its default register and a model running a persona built from the author’s published work are not the same act, and no existing standard tells them apart. An optional attribute does:
<article data-ai-disclosure="ai-assisted"
data-weid-voice="author"
data-weid-voice-source="tgdoppelganger">
| Value | Meaning |
|---|---|
model | the model’s own default voice. This is the default; omit it |
author | the model writes in the author’s voice, reconstructed from the author’s own texts |
third-party | the model writes in someone else’s voice |
data-weid-voice-source names the artifact — a skill, a system prompt, a fine-tune, a style guide. It is optional for model and author, and mandatory for third-party: imitating someone without saying so is precisely the case this attribute exists to expose.
Readers see this as a pill above the legend rather than buried in the prose, because whose voice this is is the first thing they want to know.
5. Sentence level: the three human marks
Three classes on <span>, inline, in the text. Nothing more is required, and nothing more should be added without evidence that three are not enough.
| Class | Marks | Rendered as |
|---|---|---|
weid-verbatim | the human’s words, verbatim or nearly so | solid underline |
weid-idea | an idea or intuition of theirs, written up jointly | dashed underline |
weid-experience | their lived experience, anecdote or personal fact | dotted underline |
The marks nest, and nested they mean exactly what they look like: an experience told in the human’s own words.
<p><span class="weid-experience"><span class="weid-verbatim">Yesterday I saw a
poster for a band with three sold-out nights.</span> The dates: March
2027.</span> Which is to say, thousands of people have already paid to be
together seven months from now.</p>
Why <span class="…"> and not a custom element. Custom tags are eaten by WordPress’s KSES sanitizer, most email clients and several feed readers; class on a <span> survives all of them. That floor is what makes the convention portable.
The three marks are distinguished by line style, not colour, so they survive monochrome printing and are legible to readers who do not distinguish colours.
6. The model’s side
The inverse claim — this argument came from the AI — is carried by a note placed inside the paragraph it annotates:
<p><span class="weid-note">The counter-argument here was the model's.</span>
Variety is not the side effect of the system that works: it is the mechanism
by which it works.</p>
With CSS the note moves to the margin; without CSS it stays in the flow of the text, legible and true. Disclosure that falls apart when the stylesheet fails to load is not disclosure.
The test for whether something warrants a note: if the author had not had the model, would this argument be in the text? If the answer is no, it gets a note. Three cases that warrant one: an argument where the model pushed back and won, research or references the author did not bring, and a structural move in the text the model proposed. One that does not: having drafted the paragraph well. That is the default, and it is already declared above.
7. The legend is mandatory
A document using weid must carry a visible legend declaring the base rule and explaining every mark it uses. Marks without a legend are decoration. This page’s legend is at the top; the block ready to copy is in example.html.
8. Installing it
Two things, and neither is a plugin: load the CSS once and make the markup survive your editor.
| Platform | How you load weid.css |
|---|---|
| Hand-written HTML | <link rel="stylesheet" href="weid.css"> |
| WordPress | Appearance → Customize → Additional CSS. Or wp_enqueue_style() in the child theme |
| Ghost | Settings → Code injection → Site header, inside a <style> |
| Hugo / Jekyll / 11ty | Copy the file to assets/ and link it from the base layout |
| Astro | import "../styles/weid.css" from the .astro file, not with @import inside another CSS file |
| Substack, Medium, LinkedIn | Not possible: they do not allow CSS. The markup survives as text, but is invisible |
Two known traps, both found while building this:
- Vite / Astro. If you put
@import "./weid.css"inside yourglobal.css, Vite does not watch the imported file: it caches the processed CSS and keeps serving the stale version until you restart. It looks as though your new rules do not exist. Import it from the.astrocomponent instead. - The document attribute. It is usually painted by the theme template, not the editor. If you cannot touch the template, wrap the content in a
<div data-ai-disclosure="ai-assisted">inside the post itself: the CSS does not depend on the attribute. The attribute is for machines; the classes are for eyes.
WordPress needs no plugin: KSES allows class and data-* on the elements it already accepts, and <span> is one of them. The only awkward part is typing the marks, because Gutenberg’s format bar has no button for this.
9. The markup is not written by hand
Nobody is going to tag 3,000 words manually. The point is that the markup comes out of the writing session itself: the model knows which sentence was yours because you just said it. That information exists only while the conversation is alive — the model cannot recover it afterwards — and from it follows the convention’s single process rule: you mark while writing, not at the end.
So the producer comes in two forms, both in the repository:
PROMPT.md— portable, copy and paste into any LLM.skills/weid/— a skill, for runtimes that support them (Claude Code, among others). It activates on its own when you are writing something meant to be published. This is the strong form: a prompt has to be remembered.
The skill composes with voice skills, it does not replace them: if you are writing with a persona built from your own texts, weid detects it and declares it in data-weid-voice.
10. Relation to existing standards
ai-disclosure(W3C AI Content Disclosure Community Group) solves the document level. weid uses it as is, with thedata-prefix.- IPTC digital source types and C2PA cover images and cryptographic provenance.
- Article 50 of the EU AI Act makes machine-readable marking an obligation.
None of them marks the sentence. That is the gap.
11. What weid is not
- Not a detector. It records what the author declares. It does not verify it.
- Not proof. And the distinction is in the name: weid is evidence — what is left in plain sight — not proof. A mark shows; it does not demonstrate. Anyone willing to lie in a weid mark was already willing to lie in the byline. Cryptographic provenance is a different problem, and C2PA is on it.
- Not a compliance certificate. It can help; it does not discharge the duty.
- Not a percentage. No “17% human”: the unit is the claim, not the proportion, and a single marked sentence can carry the whole idea of an essay. That is why weid does not emit the draft’s optional
ai-assisted-percent, and there lies its one substantive disagreement with that proposal: a percentage has no well-defined numerator, and the reader’s real question — which parts are human — is not a quantity.
12. Known ceiling: accessibility
The marks are visual. Screen reader users hear the legend and the notes — both are real text — but get no signal on the marked passages themselves. Anyone who needs that today should add visually hidden text inside the span. v0.1 does not specify it, rather than specify it badly.