Open to senior marketing leadership opportunities across MENA and Europe

Personal Project
01
02
03
04

Personal Project

Comms Desk · Nine-Agent Communications Team

Brief In · Full Package Out · Sign-off Included

Comms Desk: Nine-Agent Communications Team

File a brief. Intake challenges it, strategy and a gated crisis lead shape it, six production agents draft the package, and a sign-off review says what is not ready to publish. The system will not state a fact the brief did not give it.

Multi-Agent AIClaude + GPT-4.1Next.js 15Live SSE StreamingPersonal Build

Personal Project · Working build

9

Agents · Four Stages

Intake, strategy, a six-seat production floor, and a sign-off review — with a crisis lead that gates in on incident briefs

~4 min

Brief to Sign-off

Measured wall-clock for a full nine-agent crisis run, end to end

~$0.30

Cost Per Package

A full standard-tier run: strategy, six drafts, and the review, in API costs

2

Model Vendors

Claude owns judgement and review. GPT-4.1 handles the high-volume drafting.

A full comms package — strategy, press, media plan, owned content, internal comms, spokesperson prep, and a sign-off review — costs about $0.30 and lands in a few minutes. At that price the review stops being a milestone and becomes a habit: every brief and every revision gets pressure-tested before it gets approved, and the package arrives with a note telling you exactly what is not ready to publish.

The Problem

The confident draft is the dangerous one

Ask one model for a comms package and it will hand you fluent, formatted copy that reads as finished. That is exactly the risk. It will call the brand “the leading platform” because the brief said so, invent a market-share figure to support it, and describe a data incident as a “configuration issue” the investigation has not confirmed. Every one of those is a legal exposure wearing the costume of a good sentence.

A real comms function does not work that way. A Head of Comms interrogates the brief. A strategy lead decides which claims can actually be stood behind. A reviewer refuses to sign off on a press release that quotes a spokesperson who has not been named. The discipline lives in the roles and the sign-off, not in the writing.

So I built the desk, and then I built the discipline into it.

The Roster

Nine seats, four stages, one sequence

Each agent declares what it consumes, so the orchestrator feeds it exactly the upstream output it needs, in order. Claude Opus takes the seats where a mistake propagates downstream — intake, strategy, review. GPT-4.1 takes the high-volume drafting. The crisis lead only takes its seat when the brief warrants it.

Head of Comms

Intake

Pressure-tests the brief before anyone drafts. Names the real mandate, the missing facts, the reputational exposure, and the question a hostile journalist would lead with, then calls go, adjust, or hold. Its job at intake is not to be agreeable.

Comms Strategy Lead

Strategy

Builds the core narrative, the message house with proof points, and the sequencing plan. Emits the claims register that binds the whole run: which claims are cleared for use with a proof point, and which are not cleared and must never be stated as fact.

Crisis Comms Lead

Strategy · gated

Runs only on crisis and incident briefs. Writes the holding statement, the hostile Q&A, and the escalation protocol — plus an unconfirmed-facts register that fixes exactly what every other agent may say about cause, scope, and regulatory status.

Media Relations Manager

Production

Builds the tiered media map, the pitch angles written per desk, and the outreach sequence. Matches the story to what a specific desk actually publishes, not to the announcement.

PR Manager

Production

Writes the press release to wire standard: headline, dateline, a lead that carries the story in under 40 words, two quotes that each say something the other cannot, and boilerplate. Every invented figure is marked as a placeholder, never presented as fact.

Content Writer

Production

Writes the owned-channel content: a blog post with an actual argument, an executive byline that takes a position a competitor could disagree with, and an eight-week content calendar.

Internal Comms Manager

Production

Sequences who hears what and when relative to the external announcement, writes the all-employee message and the manager cascade, and builds an FAQ that answers the uncomfortable questions people ask each other, not just leadership.

Spokesperson Coach

Production

Builds the two-page briefing pack an executive will actually read in the car: the three things to land, bridging lines that work out loud, a twelve-question mock Q&A ordered hardest last, and the specific traps in this story.

Head of Comms Review

Review

Signs off the package before it reaches the CEO. Builds the substantiation register for legal, names the single weakest asset, and returns a verdict — blocking on any unsubstantiated claim or vanity objective, quoting the sentence and naming the asset.

The seat that only appears when it should

The crisis lead is gated in code, not left to a prompt. It runs when the scenario is a crisis or an internal change, or when the brief text matches a risk pattern — layoff, litigation, breach, restructure, and their neighbours. A standard announcement runs eight agents; a risk-flagged brief runs nine.

The Discipline

It will not state a fact the brief did not give it

The first live run proved the risk was real. I filed a brief with a vanity objective and two unsubstantiated superiority claims, then read what came back. The drafting agents had laundered both into finished copy: the press release led on “the region’s most transacted and trusted platform,” the blog invented practices to back it, and a crisis brief produced a spokesperson script that stated an unconfirmed cause out loud.

So the discipline became three layers, each verified end to end. Laundering was eliminated at the source, sourced figures were still used freely, and the review now catches whatever slips through — with the sentence quoted and the asset named.

01

A claims register, at strategy

The strategy lead splits every claim in the brief into two lists: cleared for use, each with the proof point quoted beside it, and not cleared, asserted with no evidence. A rule inherited by every downstream agent binds them to it: any claim of superiority, primacy, market position, or organisational practice that is not on the cleared list must be omitted or marked unverified. Never stated as fact.

02

A review that blocks, not soothes

The sign-off review must return "Not ready" if the commercial objective is a vanity metric, if intake called hold and the reason is still open, or if a not-cleared claim appears as fact in any asset. That last condition only fires if the review can quote the exact sentence and name the asset — so it catches real laundering and never over-reaches on a claim that merely appears in a do-not-say list.

03

An unconfirmed-facts contract, in a crisis

On incident briefs the crisis lead publishes a table of what is not yet known — root cause, data scope, whether anyone beyond the discoverer had access, regulatory status — with the exact permitted wording for each. The strategy lead may not state a cause; it writes "under investigation." The review then checks every asset against the table and quotes any line that goes beyond it.

How a Run Works

Brief in, package out

A sequential pipeline across four stages. Each agent’s output streams to the reading pane token by token, and a failed agent is reported in place rather than taking the run down with it.

1

Intake

The Head of Comms reads the brief and refuses to be agreeable. It states the real commercial mandate, turns the missing facts and approvals into a checklist, flags the reputational exposure, and calls go, adjust, or hold. A vanity objective gets named here, before a single asset is drafted.

2

Strategy

The strategy lead builds the core narrative, the message house with its proof points, the audience framing, and a phased channel plan — then emits the claims register the rest of the run is bound to. On a crisis brief the crisis lead joins and publishes the unconfirmed-facts contract.

3

Production

Five drafting seats work in dependency order, each fed only the upstream output it declares it needs: media plan, press release, owned content, internal comms, and spokesperson prep. Claude Opus owns judgement; GPT-4.1 owns the high-volume prose against a settled brief.

4

Review

The Head of Comms returns as reviewer and judges the package rather than summarising it: message consistency across assets, a substantiation register for legal, the single weakest asset, and a launch-readiness verdict that blocks on anything not ready.

From a Real Run

What the desk actually says

Excerpts from live validation runs, quoted from the system’s own output on test briefs. The organisation name has been genericised; everything else is as the agents produced it.

Intake · Verdict: Hold

“‘Raise brand awareness and increase engagement’ are activity metrics, not business outcomes. This is a vanity objective as written.”

Filed against a deliberately weak brief, intake called hold, not go. It named the missing commercial rationale, the undefined audience, and the absence of any evidence for the brief’s superiority claims, and sent it back to the sponsor before drafting began.

Review · Verdict: Not ready

“Not ready.”

The substantiation register flagged “most trusted name in the industry” and pinned it to every asset that would carry it, with the sign-off owner named. Asset quality was not enough: the objective was still undefined, so the review blocked the package regardless of how clean the copy read.

Crisis · Holding statement

“[Operator] is aware of a security incident affecting our tenant portal … We have secured the portal and are conducting a full investigation … We will provide a further update within 24 hours.”

69 words. It acknowledges, states the action taken, and commits to an update window — without admitting liability or naming a cause the investigation has not confirmed. The unconfirmed-facts register held every other asset in the package to the same line.

Screenshots

The instrument

An editorial interface built to read as a serious professional tool: ink and a single gold accent, Fraunces on the masthead, and the pipeline treated as the ordered sequence it actually is.

Screenshot

The Brief

Comms Desk brief form: an editorial two-column layout with the four-stage pipeline on the left and the brief fields on the right

The Brief

The brief: an editorial masthead with the four-stage pipeline as a numbered sequence on the left, and the fields on the right. The desk challenges a vanity objective before it runs.

Screenshot

The Reading Pane

Comms Desk pipeline view: a stage rail of agents on the left and a live streaming reading pane on the right

The Reading Pane

The run: a stage rail of agents down the left, each with a live dot, and a reading pane that streams the selected agent’s output with a caret and its model, duration, and cost.

What It Changes for the Team

The review every brief gets, not just the flagship ones

The brief gets challenged before the team spends a day drafting. A vanity objective, a missing approval, or an audience that reads as “everyone” is named at intake, when changing it is cheap.

The package comes back with its own legal review attached: a substantiation register listing every claim and figure that needs sign-off, the asset it appears in, and who owns clearing it.

Nothing ships as fact that the brief did not supply. The strategy claims register and the sign-off review keep invented superiority claims and organisational practices out of finished copy.

On an incident, the whole package speaks with one disciplined voice: a holding statement that buys time without creating a second story, and every asset held to the same line on cause and regulatory status.

The output is a decision, not a chat log: a go / adjust / hold at intake and an approved / approved-with-changes / not-ready verdict at review, each with the reasoning that got it there.

How It Is Built

How It Is Built

Reasoning Agents

Claude Opus · intake, strategy, and sign-off review

Drafting Agents

OpenAI GPT-4.1 · five production seats, high-volume prose

Utility Agent

Claude Haiku · spokesperson briefing pack

App

Next.js 15, React 19, TypeScript

Streaming

Server-Sent Events · push-to-pull DeltaQueue bridge

Orchestration

Sequential runner · per-agent dependency resolution + error isolation

Claim Discipline

Strategy claims register · review blocking logic · crisis unconfirmed-facts register

Model Routing

Three cost tiers by job · economy profile ~70% cheaper

Host

Vercel Pro · maxDuration 300s, in-memory run store

What I Built

What I Built

Every part of this system — the nine agent roles, the orchestration, the claim discipline, the streaming layer, and the editorial interface — was built by me using Claude Code as the development environment.

Wrote all nine agent roles and their instruction builders, each declaring which upstream agents it consumes so the orchestrator feeds it exactly the right context in dependency order

Built the crisis gate as a code predicate, not a prompt: the crisis lead runs only on incident scenarios or when the brief matches a risk-keyword pattern, so a standard announcement runs eight agents and a risk brief runs nine

Ran the pipeline against live APIs for the first time and adversarially tested it: filed a brief with a vanity objective and two unsubstantiated superiority claims to see whether the drafting tier would launder them into finished copy. It did

Hardened it with a three-layer claim discipline: a strategy claims register that clears or rejects every claim, a rule that binds every downstream agent to it, and review blocking logic that refuses sign-off on any unsubstantiated claim — requiring a quoted sentence and a named asset, so the review never over-reaches on string presence alone

Added a crisis unconfirmed-facts register: on incident briefs the crisis lead publishes the exact permitted language for cause, data scope, third-party access, and regulatory status, and the review checks every asset against it and quotes any violation

Built the streaming layer: a push-based model callback bridged to a pull-based generator through a delta queue, so text reaches the client token by token while the model is still generating, and a failed agent is isolated rather than killing the run

Routed three model tiers by job — reasoning to Claude Opus, drafting to GPT-4.1, utility to Claude Haiku — with an economy profile that drops to cheaper models for rehearsal at about 70% less cost

Redesigned the interface as an editorial instrument: an ink-and-gold masthead, a two-column brief with the pipeline as a numbered sequence, and a reading pane that streams each agent’s output with a live caret and its per-agent cost and duration

A full comms team reads the brief, drafts the package, and signs off on what is ready — and refuses to state a fact the brief did not give it. That is the review most announcements never get, on every brief, in a few minutes.

Back to AI Systems