Technical workshop · Cohorts scheduled on demand

A score you cannot inspect is itself an ungoverned ranking layer.

This is a hands-on workshop on the catalog-readiness component — the MCP resource and tool set that answers one merchandising question deterministically: is this SKU agent-ready, and if not, exactly why not?

Two days of building. You leave with a working component, a versioned rubric, and a gate that refuses things for reasons it can state.

The premise

Most governance layers are stochastic. That is the bug.

Agentic commerce channels rank and re-rank your products through two opaque layers you cannot audit. The one lever you hold is input quality. Teams reach for a model to assess it — and in doing so make the governance layer itself non-reproducible.

The component you build in this workshop takes the opposite position. No model calls exist in the scoring path. A score must be reproducible bit-for-bit from SKU data plus rubric version. An LLM may consume readiness records; it may never produce them.

That single constraint is what makes everything downstream possible: evidence you can cite, a rubric you can version, a refusal you can defend, and an audit trail that means something six months later when someone asks why a SKU shipped.

The four rules of the scoring path

  • Deterministic only. Same input plus same rubric yields the same score, every time.
  • Evidence-linked by construction. The schema makes it impossible to deduct a point without naming the field and the rubric rule that caused it.
  • Bands, not vibes. AGENT_READY ≥ 85, REMEDIATE 60–84, NOT_READY < 60. Thresholds are rubric properties, not code constants.
  • Fail-closed on unknowns. A missing or unparseable field scores as absent, never as assumed-present.

What you build

Four tools, four resources, one gate

You implement the MCP surface end to end — not a toy version. Resources are read-only and ungated. Tools carry consequence tiers, and the tier decides whether a human has to sign.

ToolTierEffect
score_catalog_readiness1Recompute scores. Read and compute only, no external side effects.
propose_golden_records1Rank candidates for the pilot pool. Produces a proposal, never an action.
stage_syndication_manifest2Freeze the exact payload that would be sent, with a hash, for review.
authorise_syndication3Record human authorisation against a frozen manifest. Non-delegable.

The tier assignment follows one rule, and you will spend a session arguing about it: anything that reads or computes is automatable; anything that publishes into a system whose behaviour you cannot audit is not.

The rubric is itself exposed as a resource, at catalog-readiness://rubric. That is deliberate, and it is the thesis of the whole workshop in one design decision.

Curriculum

Six units across two days

Every unit ends with working code and a decision you had to defend. You bring a catalog export; you work on yours, not on a fixture.

01 / SEAM

The surface and the boundary

Resources versus tools, and why that split is a governance decision rather than an API convention. Mapping your own data to the Seam. Registering the resource template and the four tools with zod schemas at the server boundary.

02 / SCORE

Deterministic scoring

The five dimensions and their weights. Building the scoring path with no model in it. Property-testing the guarantee: same input plus rubric yields the same score. Fail-closed handling of missing and unparseable fields.

03 / EVIDENCE

Evidence as a type constraint

Making an unjustified deduction impossible to express rather than merely discouraged. Every deduction cites a field and a rule ID. Ordering remediation by points recoverable against effort, which is what makes a report actionable instead of merely accurate.

04 / PROPOSE

Golden records and the ranking formula

Eligibility gates before ranking. Weighting margin, inventory depth and readiness proximity — and why proximity is weighted at all. Producing a ranked proposal with its full evidence trail. The tool proposes; pool selection stays human.

05 / GATE

Freeze, sign, bind

Staging a manifest with a payload hash. The sign-off block. The three invariants: staleness voids authorisation, authorisation is per-manifest and never standing, and a refusal returns its rationale. Then the harder exercise — try to defeat your own gate, and find out whether it holds.

06 / AUDIT

Hard rules and the trail

Where a weighted average must not be allowed to operate, and how to express that as a hard rule instead of a deduction. Append-only audit entries, corrections as new records, never an overwrite. Wiring the component into a real merchandising workflow.

The teaching case

How a compliance defect scored 85.7 and passed

A food SKU was missing its allergen disclosure. It scored 85.7 and landed in AGENT_READY.

Nothing malfunctioned. The rubric worked exactly as specified — the SKU was strong on attribute completeness, clean on structured data, well photographed. A weighted average did what a weighted average does: it absorbed one failing dimension into five passing ones and returned a number above the threshold.

The lesson

A compliance defect is not a ranking input. Disclosure warnings are must-display — a platform may not hide or auto-dismiss one — so a missing disclosure is not a SKU that scores slightly lower. It is a SKU that must not cross the Seam at all.

The fix is architectural, not numerical. Raising the threshold would not have caught it; a different weighting would only have moved the failure. What catches it is a hard rule at the staging boundary that rejects the SKU outright, sitting outside the scoring path entirely, where no average can reach it.

// Gate invariant — enforced at stage, not scored
if (isDisclosureRequired(sku.category) && !hasDisclosureEntry(sku)) {
  return reject("POLICY_FAIL", {
    rule:      "hardRules.compelledDisclosure",
    rationale: "Compelled disclosure absent. Not a scored deduction."
  });
}

You will spend a full unit on the general form of this problem: identifying which of your own rules are being quietly averaged away right now, and moving them out of the score and into the gate. Most teams find at least one.

Format

Small cohorts, your catalog, working code

  • Two days. Six units, each ending in something that runs.
  • Small cohort. Capped deliberately — this is a workshop, and a workshop that cannot see everyone's screen is a lecture.
  • Your data. Bring a catalog export. You build against it, and you leave knowing your own readiness position.
  • Remote or on-site. Remote runs as two consecutive days. On-site available for teams; travel quoted separately.
  • You keep everything. The component, the rubric file, the fixture harness, the audit scaffolding. No runtime dependency on us.

Prerequisites — read these honestly

You need working TypeScript, and you need to be comfortable reading a schema and arguing with it. You do not need prior MCP experience; the server surface is taught from zero. You do not need to have run an audit before.

This workshop is a poor fit if you want a conceptual overview of AI governance. That is the certification programme. This is the engineering.

Cohorts are scheduled as demand forms rather than against a fixed calendar, so the group is always the right size and always roughly the right level. Register your interest and you will be told the next date before it is public, with a place held while you decide.

Register

Take a place in the next cohort

Tell us what you are building against. Cohorts form around the problems in the room, so the detail here changes what gets taught.

No cohort is charged until a date is agreed with you. Pricing and dates are sent by reply. Your details are used to schedule and prepare the workshop and nothing else — see privacy.

Questions

Before you ask

Is this the same as the GIA certification?

No. The certification is nine modules on governance architecture and carries a credential. This is two days of building one component with your hands. They complement each other, and neither requires the other.

Do I need my own MCP server already running?

No. You build the surface from zero during unit 01. If you already have a server, you extend it instead — bring it and we will register the component alongside what you have.

What if our catalog data is a mess?

Then you are exactly the person this is for, and you will get more out of it than someone whose data is clean. A component that only works on tidy input has not been tested.

Can we run it privately for our team?

Yes. On-site and private remote cohorts both run. Select "a whole team" above and say roughly how many, and you will get a quote with dates.

What language and stack?

TypeScript over stdio, schemas validated with zod, targeting Claude Desktop as the host. The architecture transfers to any MCP host and the governance patterns transfer to any language — but the code you write in the room is TypeScript.