Example: the social campaign process

Rendered from processes/examples/social-campaign.md in the Common Agent Standards repository, at commit 51a6fe2d. The specification is the normative text.

This is one row of the marketing catalog, with every blank filled in. Version 6 rewrote it around the thirteen activities a social media manager actually does, after walking the full activity list against the earlier draft and finding how much it had compressed or left out. Version 7 hands its sub-jobs to agents that run their own loops, written as harness: phases.

PROCESS: social campaign              id: mkt/social-campaign   v7
owner: Head of Social                 effective: 2026-10-18
trigger: a campaign brief is approved in mkt/campaign-planning
concurrency: runs may overlap - up to six live at once, one per campaign
goal: a campaign launched on every channel the brief names, run for its
      window, and reported against what the brief asked for
phases:
  take-in-brief    - human: read the brief, pull out what the campaign
                     must accomplish
                     owner: Manager           after: trigger
                     automation: assisted
  set-parameters   - human: pick platforms, audience and dates, and put
                     a number on it. Leadership confirms the budget
                     owner: Manager           after: take-in-brief
                     automation: assisted
  brief-creatives  - convenes briefing: the team hears what is needed
                     and by when, together
                     owner: Manager           after: set-parameters
                     automation: assisted
  settle-direction - convenes bake-off: two or three concepts, one
                     chosen, with the reasons said out loud
                     owner: Manager           after: brief-creatives
                     by: 5 days               automation: supervised
  produce-posts    - harness: copy, images and video, each sized and
                     worded for its platform
                     owner: Manager           after: settle-direction
                     by: 5 days               automation: supervised
  get-sign-offs    - convenes approval: brand and legal sign, as named
                     signers, against a version of the posts
                     owner: Legal reviewer    after: produce-posts
                     by: 2 days               automation: never
  practical-side   - human: tracking links, the landing page check, the
                     ad campaigns, the posting schedule
                     owner: Manager           after: set-parameters
                     by: launch               automation: supervised
  launch           - human: the manager says go. The scheduler and the
                     ad platforms take it from there
                     owner: Manager
                     after: get-sign-offs + practical-side
                     automation: supervised
  watch            - human: track results against the brief
                     owner: Manager           after: launch
                     automation: assisted
  engage           - human: answer comments and messages, flag what
                     needs the manager
                     owner: Community manager  after: launch
                     automation: assisted
  optimize         - human: move ad money toward what works, swap
                     creative that has gone stale
                     owner: Media buyer       after: launch
                     automation: assisted
  wrap-up          - harness: the numbers from every channel,
                     reported against the brief
                     owner: Manager
                     after: watch + engage + optimize
                     automation: assisted
  record-learnings - convenes debrief: what to repeat, what to avoid
                     owner: Manager           after: wrap-up
                     automation: assisted
run-scoped:
  spend  - harness: spend reconciled against the budget
           owner: Manager
           from: set-parameters   until: run close
           automation: assisted
  status - harness: a status report        owner: Manager
           every: 7 days
           from: launch   until: run close
           automation: assisted
handoffs:
  take-in-brief -> set-parameters: the goal, stated in one line that
    every later decision can be tested against
  set-parameters -> brief-creatives: the channels, audience, dates and
    budget
  set-parameters -> practical-side: the same parameters. Both branches
    read one record, which is what keeps them from drifting apart
  settle-direction -> produce-posts: the chosen concept, and why it won
  produce-posts -> get-sign-offs: the posts at a version
  get-sign-offs -> launch: the approved posts at the signed version. A
    later change voids the approval and sign-offs run again
  practical-side -> launch: tracking, ads and schedule, ready to fire
  wrap-up -> record-learnings: the report, as delivered
bindings:
  roster:  Manager (owner), Marketing lead, Copywriter, Designer,
           Video editor, Brand reviewer, Legal reviewer (a person,
           named in the standing roster), Community manager, Media buyer
  systems: the scheduler (write), the ad platforms (write),
           the CMS (write), analytics (read)
  data:    brand guidelines v9, the claims register, the campaign brief
policy:
  no claim ships without a citation in the claims register
  sign-off is a human gate and is never delegated to an agent
  a post changed after sign-off goes back through sign-offs. There is
    no minor-change path
measures:
  cycle time: about two weeks from the brief to launch, plus the
    campaign window
  volume: about 40 runs a quarter
  quality gate: nothing publishes unsigned
fed by: mkt/campaign-planning, mkt/competitor-review
feeds:  mkt/quarterly-readout
amendments:
  v2 - claims checking moved out of legal review, so legal reads the
       exceptions rather than every asset (debrief, run 12)
  v3 - claims checking raised from supervised to autonomous after
       twenty clean runs (debrief, run 31)
  v4 - the readout moved from 7 days to 14. A week was too early to see
       anything on the slower channels (debrief, run 38)
  v5 - the weekly status, the budget watch, and community response
       written down as run-scoped. All three were already happening,
       and none was recorded (debrief, run 47)
  v6 - rewritten around the thirteen activities the manager actually
       does. Setting parameters, the practical side, the launch
       decision, the live window and the learnings had been compressed
       into six phases or left out entirely (activity walk, 2026-08-20)
  v7 - produce-posts, wrap-up, spend and status written as harness:
       phases, each led by one agent that owes its output and a closing
       record (Agent Processes 0.5.0-draft, 2026-10-18)

What the graph says#

The graph has two branches and a window. After the parameters are set, the creative chain (brief the team, settle a direction, produce, get sign-offs) and the practical side run at the same time, and launch waits for both. After launch, three activities - watch, engage, optimize - run at once for as long as the campaign is live, and wrap-up waits for all three. Nothing about that is visible when the phases are numbered 1 to 13, which is why the order comes from the after: lines.

Two edges point backwards, and both go to the same place. A sign-off that comes back with changes reopens produce-posts, and only the part that failed. Creative that goes stale mid-flight reopens produce-posts too. One is a gate refusing, the other is the world changing, and the process treats both as normal work rather than exceptions.

Where the automation actually is#

Most phases are assisted: an agent drafts, gathers, or watches, and a person decides. The two supervised phases are where agents do the work and a person reviews it before it moves on. One phase is never: sign-off stays with people no matter how good the agents get, because that is a policy decision rather than a capability question.

The earlier versions of this document tell the automation story in miniature. Claims checking inside sign-offs went from supervised to autonomous only after twenty clean runs, and the amendment that moved it carries the date, which is what an auditor reads a year later.

The records a run produces#

RUN: mkt/social-campaign v7 · run 52
started: 2026-10-19 by Manager
trigger: campaign brief CB-118, approved in mkt/campaign-planning run 9

Each activity leaves whatever record its own kind of work produces. The briefing, the bake-off, the approval and the debrief leave their CONVENED and DONE records. Produce-posts and wrap-up leave one HARNESS DONE record each, naming the agent that led the loop and what it handed back. The human: activities leave one line each saying what happened and who did it. The run-scoped lines leave records at their own pace: a status report every week, and the spend line's reconciliation at close. The run closes:

RUN DONE: mkt/social-campaign v7 · run 52
outcome: completed
result: the campaign ran its window on 4 channels; posts reached v3;
        reported against the brief
open: one flagged reply is waiting on an answer from support

The failure edges that have actually fired#

  • A sign-off comes back with changes. The run returns to produce-posts, and only the piece the signers named reopens. The direction was never the problem.
  • Creative goes stale mid-flight. Optimize sends the run back to produce-posts while the campaign is live, and the replacement assets get a new version like any others.
  • The trigger fires while runs are in flight. Six at once is normal here, which is why the concurrency line says so. The runs share the claims register and the brand guidelines, both read-only during a run.
  • A run is abandoned. Scheduled posts have to be pulled and the ads turned off by hand, and the spend line reconciles anyway. Abandoning a campaign cancels its remaining work. The books still have to close.