THE PRODUCT GRADE CARD · product photos, the product leading
WAKES WHEN product photos must be ready for the feed, or a carousel must read as one look
THE LOOP
palette · the product's own colours
grade · the batch as one look
look · before and after, two frames
check · 1080 × 1350, named, no border
pack · two zips, never one
NEVER
Recolour a product
Add a border, a vignette or a blurred fill
Pack feed files and masters together
IT MAKES palette — the product's own colours and the lift to use; grade — the batch, one look, master and feed file; check — each feed file: size, name, no border; pack — two zips, never one.
THE STANDARD the product leads; read before lifting; lift, never recolour; full-bleed, always; two zips, never one; honest posts.
PROOF SELFTEST 8/8 · witnessed in Claude 2026-10-11 · Edition 1.
THE SEAL 98 of 100 · LEGENDARY · WITNESSED · Trigger 5 · Machinery 5 · Law 5 · Portability 5 · Proof 5
IT CAN BE WRONG an AI reading a text file: it can be wrong and can invent a number, a rule, a name or a date; check what matters against your own records and the source; the risk is yours. THE-CLAUSES.md rides in the packet and is part of the licence.
THE PUNCH · SHA-256 OF SKILL.MD · 8F36B643C7ED7F61DACE4E23
CITE THIS CARDTHE PRODUCT GRADE CARD, Edition 1. Lund Studio LLC, Westminster, Colorado. https://lundr.tech/?view=product-grade-card. Punch 8F36B643C7ED7F61DACE4E23. Retrieved 2026-10-11.
What it is.
Product photographs graded to the house look for the feed, with the product leading every frame. palette reads the product's own colours from a photo, strongest first, marks warm browns as background, and prints the lift to use; grade grades a whole batch as one look (whites pulled to neutral, a gentle tone curve, the product's colours lifted but never moved in hue, warm backgrounds stepped back, clarity and a fine finish, no vignette) and writes each frame twice, a master and a full-bleed 1080 × 1350 feed file with the 4:5 crop placed on the product and the size in its name; check proves every feed file is 1080 × 1350, named with its size and free of any border; pack puts the feed files in an Instagram-only zip and the masters in a separate zip, and refuses to mix them.
It carries a machine that shows its working: palette — the product's own colours and the lift to use; grade — the batch, one look, master and feed file; check — each feed file: size, name, no border; pack — two zips, never one — 8 checks in its selftest, every command on the record. It will never recolour a product; never add a border, a vignette or a blurred fill; never pack feed files and masters together.
Six laws, written into the card.
They are in the card itself, so the AI follows them.
THE PRODUCT LEADSWhites pure, blacks clean, the product's own colours lifted, the background stepped back.
READ BEFORE LIFTINGpalette reads the product's colours first, and the grade lifts those, never a guess.
LIFT, NEVER RECOLOURNo hue is moved and the lifts are capped, so the post shows what the buyer will get.
FULL-BLEED, ALWAYSFeed files are 1080 × 1350 with the 4:5 crop on the product; never a border, a vignette or a blurred fill.
TWO ZIPS, NEVER ONEFeed files go in an Instagram-only zip with the size in every name; the masters go in another, marked not for Instagram.
HONEST POSTSOther makers' logos stay as they are, and a gifted or paid post says so in its first line.
What rides in the card.
In the card’s own voice, with a machine that shows its working.
THE GUIDEreferences/THE-PRODUCT-GRADE.md
THE MACHINEproductgrade.py · four commandspalette — the product's own colours and the lift to use; grade — the batch, one look, master and feed file; check — each feed file: size, name, no border; pack — two zips, never one. Every command prints its working and refuses a bad input; 8 checks in its selftest, every command on the record.
What it does once your AI has it.
palette The product's own colours and the lift to use
grade The batch, one look, master and feed file
check Each feed file: size, name, no border
pack Two zips, never one
On the record Two test photos made for the demo: the hero's palette finds the volt (hues 48-55, 53.1%) and the blue (152-159) to lift and marks the warm brown mat as background; a JPEG is refused plainly; the two frames grade as one look into two 1080 × 1350 feed files that check 2 of 2 ready, while the masters fail the feed check as they should; the pack makes two zips, never one, and refuses to write over them.
What it will never do.
It will never recolour a product; never add a border, a vignette or a blurred fill; never pack feed files and masters together.
A rebuild of the Oct 3 2026 card on the standard library: the recipe and the palette, crop, check and pack rules are the record's, but it reads and writes PNG, not JPEG, and its pixels are not identical to the first cut's, which used two image libraries. Pure Python: a 12-megapixel photo takes minutes. A frame whose edge is blown to flat white reads as a border, so look at it. It grades the photos taken; it cannot add light that was never there. It names no brand and carries no shoot photos. It is an AI reading a text file: it can be wrong, so check what matters against your own records and the source.
What’s in the buy.
CARD.md — the whole card: who it is, its laws, when it says no, what it carries · SKILL.md — the door your AI reads first · START-HERE.md — the first five minutes, for you
THE-PRODUCT-GRADE.md — the guide in references/, in the card's own voice
scripts/productgrade.py — the machine: palette · grade · check · pack, standard library only, selftest 8/8
WITNESS.md + SELFTEST.md — every command on the record, as it printed · MANIFEST.md, every file hashed · AUDIT.md, the twelve checks
MY-LEDGER.md — the card's memory, on your own machine · TIN.md · LICENSE-NOTE.md · THE-CLAUSES.md · HOSTS.md
card.svg + card-machine.svg + card.json · card.html, the card as one offline file · the doors for ChatGPT, Gemini, Cursor, Claude Code and MCP hosts (rules/, system/, mcp/)
PROOF · SELFTEST 8/8 · 4 COMMANDS ON THE RECORD · WITNESSED IN CLAUDE 2026-10-11 · EDITION 1 · PUNCH 8F36B643C7ED7F61DACE4E23
ON EVERY DOOR · A CARD FOR YOUR AI, A FILE FOR YOUR COMPUTER
In Claude: turn on code execution under Settings › Capabilities, then Customize › Skills › + › Create skill, and upload the zip as it is — START-HERE.md in the box walks you through it, and tells you how to keep the ledger. In ChatGPT, Gemini and the rest: a Project, a GPT or a Gem with the card’s files attached and the short door in the box pasted as its instructions. The words run anywhere an AI reads Markdown; the machines run wherever the host runs Python. Witnessed in Claude only. The host marks →
Take it.
Nº 1167 PROPOSED — LAUNCHING SOON
Sold as is under the term printed. A card instructs an AI you operate; results depend on your model, your files and your judgement. Not medical, legal, tax or financial advice, never the person’s boss, and not a licence to practise. The terms →
One payment. The file is yours to keep and keeps working at its edition; new editions issued in the year after you buy reach you by email as replacement files. Tax is added at checkout where it applies. Nothing auto-renews.
A TERM, NOT A SUBSCRIPTION: NOTHING RENEWS ITSELF AND NOBODY IS CHARGED AGAIN. WHEN A TERM ENDS THE FILES STAY ON YOUR COMPUTER AND STAY READABLE — FREEZE, NOT LOSS.
THE MACHINE · IN THE OPEN · FROM THE WITNESSED RUN OF 2026-10-11
productgrade.py, every command showing its working.
A small Python program, standard library only. Your AI runs it; you can too. Every block below is pasted from the card’s own WITNESS.md, as printed.
palette
the product's own colours and the lift to use
grade
the batch, one look, master and feed file
check
each feed file: size, name, no border
pack
two zips, never one
selftest
8 checks that prove the machine; it must print 8/8
palette · THE PRODUCT'S OWN COLOURS AND THE LIFT TO USE
$ python3 scripts/productgrade.py palette shoot/hero.png
hero.png · 240 × 180 · the vivid colours, strongest first:
hues 48-55 53.1% of the vivid colour · the product: lift it
hues 16-23 36.2% of the vivid colour · background warm: the grade steps it back
hues 152-159 10.7% of the vivid colour · the product: lift it
to lift exactly these: --lift 48-55,152-159
if the product itself is orange or brown, lift it with --lift; the grade steps warm browns back by design
palette · THE PRODUCT'S OWN COLOURS AND THE LIFT TO USE
$ python3 scripts/productgrade.py palette shoot/notes.jpg
refused: notes.jpg is a JPEG: convert it to PNG first; the machine reads PNG only
grade · THE BATCH, ONE LOOK, MASTER AND FEED FILE
$ python3 scripts/productgrade.py grade shoot --out OUT --order hero,detail
01 hero · 240 × 180 · whites × 1.019 1.011 0.971 · the 4:5 crop 144 × 180 from row 0 · feed file 01_hero_1080x1350.png
02 detail · 150 × 200 · whites × 0.994 0.995 1.011 · the 4:5 crop 150 × 188 from row 6 · feed file 02_detail_1080x1350.png
not read (convert to PNG first): notes.jpg
2 graded as one look · feed files in instagram-1080x1350/ · masters in masters-not-for-instagram/ · no vignette, no border
look before you post: a before-and-after of at least two frames
check · EACH FEED FILE: SIZE, NAME, NO BORDER
$ python3 scripts/productgrade.py check OUT/instagram-1080x1350
ok 01_hero_1080x1350.png
ok 02_detail_1080x1350.png
2 of 2 ready to post
check · EACH FEED FILE: SIZE, NAME, NO BORDER
$ python3 scripts/productgrade.py check OUT/masters-not-for-instagram
FIX 01_hero_GRADED_MASTER_240x180.png · it is 240 × 180, not 1080 × 1350; the size is not in its name
FIX 02_detail_GRADED_MASTER_150x200.png · it is 150 × 200, not 1080 × 1350; the size is not in its name
0 of 2 ready to post
pack · TWO ZIPS, NEVER ONE
$ python3 scripts/productgrade.py pack OUT --name DEMO-SHOOT --dest .
packed, two zips, never one:
DEMO-SHOOT-INSTAGRAM-1080x1350.zip · 2 feed files
DEMO-SHOOT-MASTERS-NOT-FOR-INSTAGRAM.zip · 2 masters
pack · TWO ZIPS, NEVER ONE
$ python3 scripts/productgrade.py pack OUT --name DEMO-SHOOT --dest .
refused: DEMO-SHOOT-INSTAGRAM-1080x1350.zip already exists; the machine never writes over a file
THE NUMBERS, NAMES AND DATES IN THESE RUNS ARE THE STUDIO’S OWN EXAMPLES, INVENTED FOR THE RECORD; NO REAL COMPANY, PERSON OR PROPERTY IS NAMED.
QUESTIONS AT THE TABLE
Asked before the wire.
What does it need from me?
Palette · the product's own colours. It asks first for the product photos as PNG, the order of the carousel, and the product's colours when they are not volt, pink or blue.
Does it send anything anywhere?
No. The machine is a standard-library Python program that runs on your own computer and sends nothing anywhere; the words run wherever an AI reads Markdown. No server, no account, no key.
What is on the record?
The self-test (8/8) and every command run on real example inputs, pasted into WITNESS.md as they printed; the punch on the face is the SHA-256 of SKILL.md, so a downloaded copy can be checked against this room.
Can it be wrong?
Yes — it is an AI reading a text file. A rebuild of the Oct 3 2026 card on the standard library: the recipe and the palette, crop, check and pack rules are the record's, but it reads and writes PNG, not JPEG, and its pixels are not identical to the first cut's, which used two image libraries. Pure Python: a 12-megapixel photo takes minutes. A frame whose edge is blown to flat white reads as a border, so look at it. It grades the photos taken; it cannot add light that was never there. It names no brand and carries no shoot photos.
What will it never do?
It will never recolour a product; never add a border, a vignette or a blurred fill; never pack feed files and masters together.