RelayCTX Creative marketingcampaignsREADME.md
RelayCTX Creative · Document

The studio register

623 words · 3 min View raw Source History

The studio register

Every campaign the studio makes pieces for, seen from the studio: its key line, the concept pages it comes from, its pieces, and what is still to make. One file, register.json; the page index.html (/marketing/campaigns/) renders it, with the studio queue at the foot.

Opened 2026-10-03 as the full campaign register (EC: "a register of different campaigns that feeds into our marketing and business strategy"). Split 2026-10-04: the campaign itself became a program in relay-marketing, and this file kept the creative (EC: "this lives as a program via marketing repo", "separate, but they can be linked").

Two halves of one campaign, joined on its id

WhatLives in
The campaign: status, owner, job, audience, the growth-engine objective, metrics, channels and funnel step it serves, related campaigns, gates, open callsrelay-marketing program/campaigns.json (guide: its program/README.md)
The creative: the key line, the concept pages, the pieces and their studio statusthis register
Who receives a send, consent, segments, the send itselfrelay-marketing briefs/, segments/, publication/LOG.md
A piece's catalog entry (runtime, script, captions, pick, copy pass)relay-marketing video/<entry>.md (a piece's catalog)
The pieces themselvesthis repo: marketing/explainer/, marketing/packs/, marketing/invites/
The concept pagesthis repo: concepts/

The id is the join: it is the same in both files, and it is permanent. This file never restates the program, and the program never restates a piece. main here publishes to creative.relayctx.com, which is the other reason the strategy, statuses and open calls stay in relay-marketing: it never deploys.

Never a named person in this file. A campaign for one person keeps the person in its relay-marketing brief.

Add a campaign

  1. Add it to relay-marketing's program first (program/campaigns.json). That is where it is agreed.
  2. Copy TEMPLATE.json into campaigns here with the same id. Write the line (the key line the pieces say; Ada passes the copy).
  3. List its concepts (pages under concepts/) and its pieces. A piece not made yet has "path": null and "status": "to-make". That puts it in the studio queue, here and in relay-marketing's TRACKER.md.
  4. Run python3 marketing/campaigns/check.py with relay-marketing checked out beside this repo, then the twelve checkers, and add a line to marketing/CHANGELOG.md.

A concept page labelled as a campaign (a status pill starting Campaign) must be listed by an entry's concepts. The check fails otherwise, so a campaign concept can't sit outside both halves. Connecting the Dots was the one that had.

Piece status

The studio's facts only: to-make → in-progress → made, or retired. Whether Erik picked a piece, Ada passed its copy, or it was sent is the catalog's (relay-marketing video/), not this file's.

The check

python3 marketing/campaigns/check.py [--summary]: the schema, unique ids, every piece path and concept page exists, a piece with no path is to-make, every campaign concept page is listed. With relay-marketing beside this repo, every id must be in the program and every catalog entry must exist; without it, those two are skipped, not failed. relay-marketing's tools/program.py --check checks the other direction.

Gates

The pieces keep the estate's gates: stealth (nothing public before the provisional is filed; named people only), campaign codes on hold, outcome level only, draw only what relay-docs states, Ada passes the copy, no third-party names until EC clears each. The full list, and each campaign's own, is in the program.

Not built yet