← Stock Room

GIFT SHOP

Gift Shop · Issues

Last run 2026-07-28 03:55 America/Chicago · checked the 2/7 slice (Tuesday) — 84 gifts. Each gift is re-checked once a week. Coverage: all gifts.

449 gifts tracked
0 gifts selected
How this page works

What this is. A robot visits every gift in the shop and tries its product link and its image, the way a shopper's browser would. Anything that fails to load lands here. Nothing on this page changes a gift by itself — it only tells you what looks broken.

When it runs

Every night at about 3:00 AM Central, automatically. Each run checks one seventh of the catalogue — Monday takes the first seventh, Tuesday the second, and so on — so every gift is re-checked once a week. The date at the top of this page is the last run.

So a gift you fixed this morning keeps its issue listed until its turn comes round again. Press Run check now to re-test the whole catalogue immediately instead of waiting; it takes a few minutes and the page updates when it finishes.

The five counts

Confirmed issues
Genuinely broken — the link or image returned a dead response. These need you.
Inconclusive
The site refused our robot (403/429), which usually means anti-bot protection rather than a real fault. Amazon and Bookshop do this constantly. Open one in a browser before believing it.
Cleared
Issues you have told this page to stop reporting. The gifts themselves are untouched.
Checked gifts
How many gifts are being tracked in total.
Cities needing gifts
Not an error — shop cities carrying 3 or fewer gifts, worked out live when the page loads. Venue-only cities are left out. A prompt to stock them.

The buttons on each row

Edit gift
Opens that gift in the Stock Room in a new tab, where you can fix it — or delete it. Nothing on this page deletes anything.
Clear issue
Silences this line. The gift is not changed at all: a dead link stays dead and shoppers still hit it. For a false alarm, not for something you mean to fix later.
Restore issue
Undoes that — the line comes back on the next run. Clears live in Supabase, so they hold across devices and survive the nightly regeneration.

Tick the checkboxes to act on several at once; the bar that appears does the same two things to everything selected.

The buttons at the top

Run check now
Re-tests every gift's link and image right away, rather than tonight's seventh. Runs on GitHub Actions; takes a few minutes.
AI audit
A different question entirely — see below.
Admin sign-in
Clearing and restoring need an admin account. Reading the page does not.

What the AI audit does

The nightly check only asks “does this link load?”. A gift can pass that while still being wrong — the link works but points at a different book, or the image is a placeholder. The AI audit catches that class of mistake.

It goes through every tracked gift and, for each one, shows Claude the product image alongside our stored title, description, link and cities, plus whatever the linked page actually says. It answers three questions: does the image show what the title claims, does our title match the product on the page, and does any place mentioned match the cities the gift is filed under. Anything that disagrees appears under field mismatches.

It is deliberately cautious — only a specific contradiction counts, not a difference of wording — and it says “can't tell” rather than guessing when a site blocks us or an image won't load. It is not automatic: it runs only when you press the button, costs a little money each time, and takes a while across a full catalogue.

What the badges mean

Dead
404 / 410 / 451 — the page is gone.
Not image
200, but what came back isn't a picture.
Error
Some other failure — a 4xx/5xx, a timeout, or a domain that no longer resolves.
Blocked
403 / 429 / 503 — refused, probably anti-bot. Inconclusive, not proof of a fault.
Automated script 1 nightly job
Gift Shop Link/Image check nightly · ~03:00 Central

Re-checks one-seventh of gift Links & Images each night (all gifts once a week) and flags dead or blocked links. Writes this report + a summary count.

_dev/scripts/shop-error-check.mjs .github/workflows/shop-error-check.yml