Two things that are usually left out: where the mark came from, and how the pages are made.
Specification, then artefact
A blazon is text — unambiguous, style-free, and older than any drawing of it. Hand the same sentence to ten artists and you get ten shields that are all correct. I have spent fifteen years doing the same thing with software, which is why this is the mark I have used since 2004.
The blazon
Azure, a chevron argent, in chief a lion passant argent, a canton gules, within a bordure or.
Formal description. Written once, in the 14th century’s own terms.
As a spec
field: #30347achevron: #d1d3d4lion: #d1d3d4canton: #bc282ebordure: #fff200 The same sentence, read as structure. Every clause is a field.
The draught
Geometry only. Where each charge sits, before any colour is chosen.
The arms
One implementation of that spec. Mine, drawn in 2004.
What is drawn here is the escutcheon — the shield alone. The complete achievement carries three more clauses: Crest: a mullet of seven points or · Supporters: on the dexter a horse rampant argent, on the sinister a bear rampant proper · Motto: Imaginare, upon an escroll.
Note what is not there: no helm, no compartment, and not a word about where the scroll sits or whether the supporters stand on it. That is the artist’s business, not the blazon’s — and it is exactly the line I try to hold in a spec. Say what must be true; leave the rest to whoever implements it.
Static HTML with hand-written CSS. The only JavaScript that ships is the agent, the scroll rail and two easter eggs — every page reads with it off.
One markdown source builds both PDFs, the /resume page and the agent’s grounding. A correction lands in all four or it lands nowhere.
OpenAI Realtime over WebRTC, tools wired to the DOM so it drives the page while it answers. The server owns the model, the instructions and the tool catalog, and mints a one-session key; the standing key never reaches the browser. It runs under a persisted daily budget.
Self-hosted analytics. No third-party trackers, no cookies, no consent banner to dismiss — because there is nothing to consent to.
Cinzel, self-hosted, standing in for Trajan on his name. Small capitals come from the face’s own lowercase glyphs rather than from the browser squashing capitals.
There is a humans.txt and an llms.txt, and something in the browser console.
Transcript
An agent I built. It answers from my résumé and the pages of this site — nothing else — and says so when it does not know.
It can also open and scroll to whatever it is describing, so the answer and the evidence arrive together.
Type a question, or press the mic and talk to it.