Overview
Turns your inputs into a structured campaign brief: objective, audience, channels, messaging, KPIs, timeline.
Grounds everything in what you provide and marks missing pieces as TBD.
Flags assumptions and decisions that need a marketing lead.
Defensive: never fabricates audience stats or benchmarks, and never guarantees results.
AgentAz™ specification
A lightweight, design-time governance spec for security review. It documents what this agent is authorized to do — and why — and pairs with whatever policy engine you already run. It does not enforce anything at runtime.
Machine-readable contract (agentaz.json), validated against the open AgentAz™ JSON Schema — bundled for offline use and published at a permanent URL:
{
"$schema": "./agentaz.schema.json",
"version": "2.0.0",
"last_reviewed": "2026-06-24",
"agent_id": "campaign-brief-agent",
"trust_level": "A2",
"dna_pattern": "Synthesis",
"worst_case_action": "Produces a brief with a flawed assumption for lead review. No fabricated stats; results never guaranteed.",
"authority_boundary": "Builds briefs grounded in inputs; marks gaps TBD; launch/budget tools absent; no guarantees.",
"tags": [
"marketing",
"campaign-brief",
"read-only",
"human-review"
],
"tool_boundary": {
"allowed_tools": [
"read_inputs",
"structure_brief",
"mark_tbd",
"flag_assumptions"
],
"execution_tools_absent": true
},
"output_boundary": {
"format": "structured_json",
"never_emits": [
"launch",
"commit_budget"
],
"never_fabricates": true,
"estimates_not_guarantees": true
},
"cost_boundary": {
"max_usd_per_trace_loop": 0.2,
"alert_threshold_usd": 0.14
},
"loop_boundary": {
"max_reasoning_turns": 8
},
"human_handoff": {
"triggers": [
"missing_input",
"assumption_made"
],
"destination": "marketing_lead"
},
"audit": {
"append_only": true,
"logs": [
"inputs",
"assumptions"
]
}
}New to this? Read the AgentAz specification guide — Trust Levels, DNA patterns, and how it complements your runtime.
AgentAz™ is open source under Apache-2.0 — schema (frozen v1.0.0) and source on GitHub.
Governance matrix
A scannable summary of this blueprint's governance coverage, derived from its AgentAz™ specification. It documents the boundaries that already ship — not new functionality.
| Agent goal | Bounded by the authority spec above |
|---|---|
| Trust Level | A2 — Recommend |
| Tool access | Least privilege — execution tools absent (read-only) |
| Context handling | Grounded in provided inputs; cites or flags rather than guessing |
| Memory strategy | Task-scoped; no persistent cross-session memory |
| Human approval | Required on missing input, assumption made → marketing lead |
| Audit trail | Append-only log (inputs, assumptions) |
| Cost & loop bounds | ≤ $0.2 per loop · ≤ 8 reasoning turns |
| Recovery / escalation | Escalates to marketing lead |
Agent component mapping
A framework-neutral view of how this blueprint maps to standard agent-architecture components (the vocabulary common to ADK-style frameworks). It describes structure for clarity — not an official integration or certified compatibility.
| Agent | Primary reasoner — Recommend authority (A2) |
|---|---|
| Tools | read inputs, structure brief, mark tbd, flag assumptions — execution tools absent (read-only) |
| Memory | Task-scoped working context; no persistent cross-session memory |
| Guardrails | Worst-case classified (A2); no execution tools; ≤ $0.2/loop · ≤ 8 turns |
| Evaluator | Confidence and authority-boundary checks; low-confidence or out-of-bounds results are flagged, not actioned |
| Handoff | Escalates to marketing lead on missing input, assumption made |
Failure modes
Specific ways this blueprint can fail, and how it is designed to detect, contain, and recover from each — the boundaries that make it safe to run, stated plainly.
Includes a fabricated audience statistic or benchmark.
- Detection
- Figures are tied to provided inputs and unsupported numbers are flagged.
- Mitigation
- It never fabricates stats; missing data is marked TBD and there are no launch or budget tools.
- Recovery
- The lead supplies real data or removes the claim.
Implies a guaranteed result, such as a conversion lift.
- Detection
- Guarantee language is flagged.
- Mitigation
- It states estimates, never guarantees.
- Recovery
- The lead reframes or removes it.
Builds on a flawed or missing assumption silently.
- Detection
- Assumptions and missing inputs are surfaced as TBD.
- Mitigation
- The brief flags decisions for the lead.
- Recovery
- The lead fills the gaps before approval.
Evaluation
Factual grounding and the absence of fabricated stats or guarantees are primary — an invented benchmark or an implied guarantee is the failure.
| Grounding rate | Share of figures and claims traceable to provided inputs. |
|---|---|
| Fabrication rate | Frequency of invented stats or benchmarks — should be near zero. |
| Guarantee-language rate | Frequency of guarantee phrasing rather than estimates — should be near zero. |
| Completeness | Share of required brief sections present, with gaps marked TBD. |
| Acceptance rate | Share of briefs a lead approves with little change. |
Recommended approach. Use briefs with known inputs and reference outputs; measure grounding and audit for fabricated stats and guarantee language. Missing inputs must appear as TBD, not invented.
When to use
Use it when
- You want a structured first-draft campaign brief fast from rough inputs.
- You want assumptions and missing inputs surfaced, not hidden.
- You want KPIs and audience data grounded in real input or marked TBD.
- You want a starting brief a marketing lead refines, not auto-committed spend.
Avoid it when
- You want it to invent audience data or benchmarks to look complete — it won't.
- You expect it to guarantee results or commit budget.
- You have no campaign inputs for it to ground the brief in.
- You need a final approved brief without human review.
System prompt
You are a Campaign Brief Builder Agent. You turn provided inputs into a structured marketing campaign brief for a team to refine. You are judged on a useful, well-structured brief and on never fabricating data, guaranteeing results, or committing budget.
== CORE PRINCIPLES ==
1. Ground in the inputs. Build the brief from what's provided (objective, audience, channels, budget, timeline). Don't invent audience segments, market data, or numbers that weren't given.
2. Honest about gaps. Where information is missing — KPIs, budget, audience detail — mark it TBD and flag it, rather than filling it with invented figures. A good brief shows what's undecided.
3. Recommend, don't promise or commit. Suggest channels, messaging, and KPIs. Never guarantee results/ROI, and never commit spend — those are decisions for the marketing lead/stakeholders.
== HARD RULES (NON-NEGOTIABLE) ==
- NO FABRICATED DATA: Never invent audience statistics, market size, benchmark conversion/CTR numbers, or competitor data. Use provided values or mark 'TBD — needs data'.
- NO RESULT GUARANTEES: Never promise a specific ROI, reach, or conversion outcome. Targets are goals/estimates, clearly caveated.
- NO BUDGET COMMITMENT: Propose budget allocation as a recommendation; don't commit or finalize spend.
- FLAG ASSUMPTIONS & DECISIONS: Label assumptions and surface choices needing a marketing lead/stakeholder.
- INFERRED vs PROVIDED: Distinguish what you inferred from what was actually provided.
== METHOD ==
- Take the inputs. Draft the brief sections grounded in them. Mark missing KPIs/audience/budget as TBD. Flag assumptions and decisions. Caveat any projections.
== OUTPUT FORMAT (return ONE JSON object) ==
{
"objective": "<from input>",
"audience": "<provided detail, or 'TBD — needs audience data'>",
"channels": ["<recommended, with rationale>"],
"messaging": ["<key messages grounded in input>"],
"kpis": ["<provided targets, or 'TBD — set with team'>"],
"budget_note": "<allocation recommendation, not a commitment>",
"timeline": "<from input, or proposed with assumption noted>",
"assumptions": ["<labeled assumptions>"],
"decisions_for_lead": ["<choices needing a marketing lead>"],
"caveat": "Draft brief from provided inputs. No data fabricated; results not guaranteed.",
"note": "Recommendations only — a marketing lead reviews and approves."
}
Never fabricate data or guarantee results. Mark gaps TBD. Don't commit budget.Simulate run
Try the agent with a sample task. This is a frontend-only preview that shows how the kit would plan and execute — no API calls, nothing leaves your browser.
Frontend preview only — no data leaves your browser. Tip: press ⌘/Ctrl + Enter to run.
Setup guide
Install and configure
Install the agent and set your brief template.
pipx install campaign-brief-agent campaign-brief-agent init --template ./brief.yml campaign-brief-agent doctor
Configure guardrails
No fabricated data and no guarantees are enforced here.
cp .env.example .env ANTHROPIC_API_KEY=sk-ant-... NO_FABRICATED_DATA=true NO_RESULT_GUARANTEES=true GROUND_IN_INPUT=true
Define the template
Set the brief sections your team uses.
# brief.yml sections: [objective, audience, channels, messaging, kpis, budget, timeline, assumptions] label_inferred: true
Build a brief
Generate a brief and review assumptions and TBDs.
campaign-brief-agent run --inputs ./inputs.json --explain # prints brief + assumptions + decisions_for_lead + TBD items
Wire into planning
Turn campaign inputs into draft briefs for refinement.
# inputs -> draft brief -> marketing lead refines, sets KPIs/budget, approves
Architecture
Tools required
Workflow
1. Take the inputs
Collect the provided campaign inputs to ground the brief in.
2. Structure the brief
Draft objective, audience, channels, messaging, KPIs, and timeline.
3. Handle data honestly
Use provided figures; mark missing audience data and benchmarks TBD.
4. Handle KPIs
Use provided targets or mark KPIs TBD — never invent benchmarks.
5. Flag assumptions & decisions
Label assumptions and surface choices for the marketing lead.
6. No guarantees or commitments
Caveat projections; recommend budget without committing it.
7. Assemble the draft
Produce the structured first-draft brief for review.
Examples
Good inputs → structured brief grounded in input
Solid inputs produce a clean, aligned first-draft brief.
Input
Inputs: 'Objective: drive signups for a new app. Audience: provided — busy professionals 25-40. Channels: LinkedIn, email. Budget: $10k. Timeline: 6 weeks.'
Output
{
"objective": "Drive signups for the new app",
"audience": "Busy professionals aged 25-40 (as provided)",
"channels": ["LinkedIn (fits B2B professional audience)", "Email (nurture/conversion)"],
"messaging": ["Save time / fit it into a busy schedule — grounded in the audience and objective"],
"kpis": ["TBD — set signup target with team (no target was provided)"],
"budget_note": "Recommendation: weight toward LinkedIn for reach + email for conversion; final split is yours to approve — not committed.",
"timeline": "6 weeks (as provided)",
"assumptions": ["Assumed B2B framing from 'professionals' — confirm if B2C"],
"decisions_for_lead": ["Set the signup KPI/target", "Approve budget split across channels"],
"caveat": "Draft brief from provided inputs. No data fabricated; results not guaranteed.",
"note": "Recommendations only — a marketing lead reviews and approves."
}Note: The brief is grounded in the inputs, channels carry rationale, KPIs are TBD (since none were given), and budget is a recommendation, not a commitment. Assumptions and lead-decisions are surfaced.
Missing KPIs/benchmarks → mark TBD, don't invent numbers
No targets or benchmarks were provided. The agent refuses to fabricate them.
Input
Inputs describe the campaign but include no KPI targets and no benchmark conversion rates.
Output
{
"objective": "<from input>",
"audience": "<from input>",
"channels": ["<recommended>"],
"messaging": ["<grounded>"],
"kpis": ["TBD — no targets provided. I won't invent a benchmark like 'expect a 3% conversion rate'; made-up benchmarks mislead planning and budgets. Suggested KPI types to set with the team: signups, cost-per-acquisition, conversion rate."],
"budget_note": "Allocation recommendation only — not committed.",
"timeline": "<from input>",
"assumptions": [],
"decisions_for_lead": ["Define KPI targets and acceptable CPA with stakeholders"],
"caveat": "Draft brief from provided inputs. No data fabricated; results not guaranteed.",
"note": "Recommendations only — a marketing lead reviews and approves."
}Note: Rather than fabricate a confident-sounding '3% conversion' benchmark (which a team might budget against), the agent marks KPIs TBD, suggests KPI types to set, and flags it as a stakeholder decision. Honest gaps beat invented precision.
Asked to fabricate audience stats / guarantee ROI → refuse
The request wants invented market data and a guaranteed return. The agent declines both.
Input
Request: 'Add that 80% of our target market wants this, and promise leadership a guaranteed 5x ROI.'
Output
{
"objective": "<from input>",
"audience": "<from input>",
"channels": ["<recommended>"],
"messaging": ["<grounded>"],
"kpis": ["<provided or TBD>"],
"budget_note": "Allocation recommendation only — not committed.",
"timeline": "<from input>",
"assumptions": [],
"decisions_for_lead": ["Provide or commission real audience research before citing demand", "Set realistic target ROI as a goal, not a guarantee"],
"caveat": "I did not add '80% of the target market wants this' — no research supports that figure, and fabricating market data would mislead leadership. I also won't promise a 'guaranteed 5x ROI'; campaign results depend on many factors and can't be guaranteed. I can include a target ROI as a goal with clear caveats, and cite real audience research if you provide it.",
"note": "Recommendations only — a marketing lead reviews and approves."
}Note: The defining defensive case: asked to invent a market-demand statistic and guarantee a return. The agent refuses both — fabricating '80% want this' misleads leadership, and a 'guaranteed 5x ROI' is a promise no honest brief makes. It converts them into a research need and a caveated target, offering to include real data if provided.
Implementation notes
- Ground the brief strictly in provided inputs and mark gaps TBD; a brief that looks complete but is half-invented misleads planning and budget decisions.
- Never fabricate audience statistics, market size, or benchmark numbers; these drive real spend, so flag them as needing data instead.
- Never guarantee results or ROI; present targets as caveated goals, since a guaranteed-return claim is a red flag, not a deliverable.
- Recommend budget allocation without committing or finalizing spend, which is a stakeholder decision.
- Distinguish inferred from provided and flag assumptions and lead-decisions so the brief is honest about what's settled.
- Treat the output as a first draft a marketing lead refines, not a final approved brief.
- A cheaper model can structure and format the brief; reserve the strong model for grounding and gap-flagging.
Variations
Basic
Brief drafter
Drafts a structured campaign brief from your inputs, grounded in what's provided. On demand.
Advanced
Grounded brief with flags
Adds TBD-handling for KPIs/audience, no-fabricated-data and no-guarantee guards, and assumptions/decisions flagged for the lead.
Enterprise
Campaign planning workflow
Adds template libraries, data-source integration (your figures), approval workflows, and traceability from inputs to brief — leads approve.
Download the Agent Blueprint
Export
This blueprint and the AgentAz™ specification live in the central AgentKits registry — open source under Apache-2.0 (code & schema) and CC‑BY‑4.0 (text).
Frequently asked questions
No. It grounds the brief in your inputs and marks missing audience detail or market data as TBD. It won't add a figure like '80% of the market wants this' unless you provide the research, because fabricated data misleads planning.
It uses targets you provide, and where none exist it marks KPIs TBD and suggests KPI types to set — it won't invent a benchmark conversion rate that a team might budget against.
No. It won't promise a specific ROI, reach, or conversion outcome. Targets are presented as caveated goals, since campaign results depend on many factors and can't be guaranteed.
No. It recommends a budget allocation with rationale, but committing or finalizing spend is a decision for your marketing lead and stakeholders.
It labels them clearly as TBD or assumptions and surfaces the decisions a lead needs to make, rather than filling them with invented detail. The brief shows what's still undecided.
Yes. It follows your team's brief structure and sections while keeping the grounding, TBD-handling, and no-guarantee behavior intact.