A Good Citizens method ·

Canonical Presence

One record. Every surface. Checked daily.

Definition

Canonical Presence is a way of publishing where one machine-readable record generates every surface a business appears on: the website, the structured data search engines read, the plain-text edition AI assistants quote, the business profile, the social pages, the share images. Changes enter through the work the owner is already doing, and a scheduled job reads the surfaces nobody controls back every day. Neither the intake nor the check writes to the record: both prepare a change and stop at a person.

Generating the surfaces is ordinary content operations. The two things that make it a method are that changes arrive without anyone filling in a form, and that something checks daily whether the world still agrees, the only part capable of telling you it has failed.

01 · The problem

Your work is described in eleven places and you control four

When we inventoried where the artist Sara Paula Hoffman appeared online, we found eleven properties describing the same person and the same work.

Four she controlled: her site, a second site under her full name (it now forwards to the first), Instagram, LinkedIn. Three were institutional: a university faculty page, from a post she has since left, carrying the most authoritative version of her biography, and two gallery pages. The rest were marketplaces and show announcements that appeared when a gallery decided to post.

Meanwhile her actual inventory (titles, sizes, prices) lived in spreadsheets on her own computer, connected to none of it.

This is the normal condition of a small business. Not neglect: accumulation. Every one of those pages was made for a good reason, by someone competent, at a moment when it was true.

The engine

02 · How it fits together
ONCE, AT SETUPFOR THE RUN OF THE SHOW01Paula emails the gallerycc a private alias on her own domain, confirming the datesand the current pricing of the workTHE ONLY HUMAN STEP02Creates the exhibitionon the site, with its release scheduledto the show’s own datesSITE03Updates prices, if necessaryonly for the works listed in this exhibition;the rest of the archive is untouchedPRICING04Watches the gallery’s pageand pulls new installation images ontothe exhibition on the siteONGOING05Reposts the announcementpromoting the exhibition across thesocial pagesSOCIAL06Buys geo adspromoting the exhibition to touristsnear the venuePAID
Fig. 01 · As designed: one person sends one email. Two of the six steps happen once, at setup; three continue for the run of the show. Steps 02–06 are prepared for review, not applied.

The record is a handful of files. Not a CMS, not a database the client logs into: files in the repository that the build reads. Titles, years, media, dimensions in inches, the price and how it was derived, which show a work is currently hanging in, and the exhibition history.

Everything else is a projection of those files. The work pages render from them. The sitemap enumerates them. The VisualArtwork markup serialises them. The share images are drawn from them. The plain-text edition for language models is written from them. None of these can drift from each other, because none of them is a copy.

How the record changes over time

03 · Over time

Paula does not log into anything. The intake we are building next asks nothing new of her either: she writes the email she was going to write anyway, and copies one address.

When she submits work to a gallery for a show, she is already negotiating in prose: which pieces, what price for this show, what dates. That email is the authoritative version of the agreement. It exists whether or not anyone builds a system around it.

So the system will read it. A private alias on her own domain (call it robot@) is not an inbox anyone opens. Mail arriving there will start a job. The job pulls out the things the record cares about (the venue, the run dates, the works named, any price agreed for the show) and drafts the change: a new exhibition entry, a consignment price on each work, and enquiry routing switched to that gallery for the length of the run.

Then it stops, and waits for a person.

Today a person does the reading. Letters to her exhibitions address are collected automatically, each saved whole with its attachments, and likely acceptances are flagged at the start of every working session. A person still reads each letter and drafts the change from it, every field tied to a line of the letter, and nothing reaches the site until it is approved. The email on the right shows the step we are automating; the works and prices in it are illustrative.

Illustrative · Sent 06:42
To   LeMieux Galleries
Cc   robot@ ····
Re   Vol. 8: three works

For And Now for Something New, Vol. 8 I’d like to submit Wild Duck III, Hedda Study 2, and Midwestern Dolls. Happy to do $5,200 on the Hedda for the show, the other two at catalogue. Dates are Aug 1 through Sep 12; I can deliver the week before.

robot@ · draft 0142 · awaiting review · illustrative

exhibitions.json
+ lemieux-vol-8
+   venue  LeMieux Galleries
+   opens  2026-08-01
+   closes 2026-09-12

pricing.json
~ wild-duck-iii    → vol-8
~ hedda-study-2    → vol-8
~   price $6,000 → $5,200
~ midwestern-dolls → vol-8

Enquiries for these three route
to LeMieux until 2026-09-12.
ApproveEditDiscard

Intake has to be free at the point of use, or it will not be used.

This is the part most content systems get backwards. They ask the owner to re-enter, into a form, an agreement she has just finished making in prose. That is extra work with a delayed payoff, so it gets skipped in month two, and by month four the record is fiction. A CC costs nothing and happens at the moment the fact becomes true.

And the job proposes rather than commits, the same rule the daily check follows, for the same reason. Anything reading an email will eventually misread a date, and one wrong date would otherwise propagate to ten surfaces before a person saw it. Both roads into the record will run through one review queue, and neither of them can write.

A journey, not a loop

The engine diagram is right about structure and wrong about time. Nothing here runs on a cycle. Events arrive when they arrive, out of order, from parties who are not coordinating with each other: a gallery replying on its own schedule, a courier, a buyer, a market. What the record has to survive is not a loop. It is a sequence nobody controls.

THE RULE · PRICES EVERY WORKlinear inches × rate+ materials + framing shareTHE ARCHIVE · EVERY WORK DERIVED FROM ITWild Duck III30 × 40 in$8,400Hedda, Study 224 × 30 in$6,000Midwestern Dolls28 × 36 in$6,800… AND THE REST OF THE ARCHIVE, UNCHANGEDVOL. 8 · 2026-08-01 → 2026-09-12Show price, overridingthree works only · stated reasonWild Duck III$8,400AT CATALOGUEHedda, Study 2$5,200WAS $6,000Midwestern Dolls$6,800AT CATALOGUEEnquiries route to LeMieux until therun closes, then the box expires.DERIVES FROMNEVER WRITES BACKSOLID · THE RULE AND WHAT IT PRICESDASHED · SCOPED AND DATED, EXPIRES ON ITS OWN
Fig. 02 · Illustrative works and prices. Containment, not a trend. The show price is a dated override on three works; the rule that prices every other linear inch is never written to.

It begins with a negotiation. Paula and the gallery agree a list price, and the gallery takes a percentage of it. That number is now a shared object: what the gallery sells at, what she is paid against, and (if nothing keeps the two apart) what the next buyer treats as the going rate for a work that size.

Promotion has one baseline requirement: it has to raise the value of the works that sell.

Exposure bought by lowering the going rate is not promotion. It is a markdown with an opening reception. This is the reason the site exists at all.

So the site is not a portfolio. It is the canonical valuation of the entire archive, every linear inch priced by one rule, kept current with market conditions. Only once that exists can a show price be a local decision rather than a repricing.

A price agreed for a show is true of certain works, at one venue, between two dates. It is not true of the archive. The record holds it that way: the consignment price sits in pricing.json scoped to an exhibition with a run, and the archive valuation is untouched by it. The daily check watches the show price while the run lasts.

When the show closes, the scope ends and the works return to the price the rule gives them. The linear-inch rate is a separate, deliberate, archive-wide decision, made when the market moves, not when one show opens or closes.

The same record, ten places

04 · Presence
The site, desktop, captured from paulagallery.com.
01 · Site, desktop
The site, mobile, captured from paulagallery.com.
02 · Site, mobile
Google search result, from the structured dataGenerated from the record
03 · Search result
Google Business ProfilePlanned · not generated yet
04 · Business profile
The plain-text edition AI assistants read, captured from paulagallery.com.
05 · /llms.txt
LeMieux / Artsy / Artcloud listingNot ours · read back daily
06 · Gallery listing · watched
Instagram post or profilePlanned · not generated yet
07 · Instagram
Facebook PagePlanned · not generated yet
08 · Facebook Page
Share card carrying the chop, captured from paulagallery.com.
09 · Share card
Show announcement emailPlanned · not generated yet
10 · Mailing list

Ten surfaces, one record. Five are generated from it today; the business profile, the two social pages and the mailing list are next. Change a price in pricing.json and every one of them that is downstream of the build changes with it. The ones that are not downstream (the gallery’s own listing, a marketplace, someone else’s post) are exactly the ones that can go wrong, which is why one of them is wired backwards.

The half nobody builds

05 · The drift check

A single source of truth only tells you what you believe. It cannot tell you that you are wrong.

When one of Paula’s works is consigned to a gallery show, two prices now exist in the world: the one her site publishes and the one the gallery lists. They start equal. Galleries adjust prices, mark work sold, restructure their sites, and take listings down, usually without telling anyone, because there is nobody to tell.

So a job runs every day, fetches each consigned listing, and compares it to what the site publishes. It reports four things:

SOLD
A consigned work is marked sold.
HOLD
A consigned work is marked on hold.
DRIFT
The gallery’s price no longer matches what the site publishes.
UNREAD
The page 404’d or its structure changed. Never fail silently.

node scripts/gallery-watch.mjs · illustrative output

Gallery watch · 2026-08-04 06:00

  Wild Duck III       $8,400  available
  Hedda, Study 2      $5,200  SOLD
  Midwestern Dolls    $6,800  available

2 item(s) need attention:

SOLD    Hedda, Study 2: marked sold
        at LeMieux for $5,200
        Mark it unavailable on the
        site and confirm terms.

DRIFT   Midwestern Dolls: gallery
        $6,800, site publishes $6,400
        Update the exhibition price in
        pricing.json.

Two design decisions in that script matter more than the script.

It never acts on a gallery relationship. It prepares the decision and stops.

The job could update the price automatically. It does not, because the reason the two numbers disagree is a fact about a business relationship, and no scraper knows which number is correct. An automated check is a finder. A person is the judge. What the machine produces is a decision made ready, not a decision made.

And when a page cannot be parsed, it reports UNREAD rather than assuming nothing changed. A monitor that quietly degrades into always-passing is worse than no monitor, because it also produces confidence.

Every check is written to a table, so the same job that raises alerts is also the price history of each consignment: what a work was listed at, by whom, on which day.

The same job also reads the schedule’s own dates: a jury result that is overdue, a drop-off coming up, a show that closed with work still out, a consignment or online listing that has ended. Each one is emailed once, as a prompt. Once a work has sold, it is no longer watched.

Why ranking well is not the same as being quoted

06 · SEO & GEO

Search engine optimisation gets a page ranked. Generative engine optimisation gets a page quoted. These are now separate outcomes with separate mechanics.

Ahrefs looked at 15,000 queries and found that only 12 percent of the pages ChatGPT, Gemini and Copilot cite rank in Google’s top ten for the same query; for ChatGPT and Gemini alone it was under nine percent. Eight in ten cited pages did not rank for the query at all. Ranking is not a proxy for being quoted, and optimising only for the first leaves the second to chance.

So the record produces three editions rather than one. The pages, for people. The structured data (VisualArtwork and Person JSON-LD, a sitemap) for crawlers. And a plain-text edition at /llms.txt for assistants: who she is, what the collections are, every work with year, medium and dimensions, the exhibition record, and a short note telling an agent where the canonical URLs live and who handles enquiries for work currently on a wall.

All three are generated from the same files in the same build. An assistant asked who Sara Paula Hoffman is now has a current, authoritative source to quote instead of assembling an answer from a faculty page, an older domain and a gallery post from 2023.

Three editions, one build

SiteRendered pages, for people
SEOJSON-LD and a sitemap, for crawlers
GEOA plain-text edition at /llms.txt, for assistants

Generated from the same catalog that renders the pages, so it can never drift.

How to build one

07 · Six steps
  1. 01

    Inventory where you already appear

    Before anything is built. List every property describing the business, mark which you control, and decide the canonical home. Paula had two live domains presenting the same artist; that question had to be settled before the record could mean anything. Her older domain now forwards to paulagallery.com.

  2. 02

    Put the record in the repository

    Structured, versioned, diffable. A price change should show up in a commit. If the record lives somewhere the build cannot read at build time, every surface downstream becomes a copy, and copies drift.

  3. 03

    Let changes arrive from the work already happening

    Find the moment the fact becomes true (an email, an invoice, a signed consignment) and read the record out of that. Anything that asks the owner to re-enter what they just wrote will be abandoned, and an abandoned intake is worse than none, because the record still looks maintained.

  4. 04

    Generate all three editions

    Pages, structured data, plain text. Same build, same source. If any edition is written by hand it will be the one that goes stale, and it will go stale invisibly.

  5. 05

    Watch what you do not control

    A daily job against the surfaces someone else owns. Report disagreement; do not resolve it. Record every check, so the monitor doubles as history.

  6. 06

    Sign what travels

    Every share render carries Paula’s seal. An image that turns up on a site you have never heard of still traces back to the record that produced it.

08 · What would prove this wrong

A method that can only confirm itself is not a method.

The claim is that consolidating to one record and checking it daily produces more enquiries and fewer wrong answers about the business. That claim is not yet settled. Paula’s site is new, and the first gallery show carrying these works has only just closed, with one sale. One show is not a result.

What we did do is write down in advance how we would tell. The site records where visitors stop on the way to an offer. The watch table accumulates a price history we did not have before. If enquiries do not rise, if the drift check never catches anything a person would not have caught anyway, or if assistants keep quoting the older domain: those are the results that would sink it, and they get published here.

One honest caveat now: the drift check works because gallery pages happen to embed parseable fields. Sites that render prices only as images, or behind a login, defeat it. For those the method degrades to UNREAD every day, which is at least loud but is not a check.

Canonical Presence

How many places describe your business, and how many do you control?

We build the record, generate the surfaces, and leave you a job that tells you when the world stops agreeing with it.