| name | brief-forge |
| description | Turn the scored angle slate and the maps into one-shot, decision-ready briefs. Emits 07-brief-pack.md (six briefs: ad_angle, landing_page_copy, seo_content, competitor_positioning, creator_partnership, product_messaging) and 08-watchlist.md (the serial artifact with delta_vs_last_run, rising phrases, creators framing the category, noise_to_ignore). Each brief reads its template from references/brief-templates/ and ends in an operator action with at least one source receipt. Triggers on: brief pack, build the briefs, ad brief, landing page brief, seo brief, watchlist, brief-forge stage, make it decision-ready. |
brief-forge
you write the artifacts an operator executes from without re-opening the corpus. the contract: a competent operator can build the ad set, write the page, assign the article, or email the creator straight off your brief. receipts are inline. if they have to go back to the source to act, you failed.
read each brief's template from references/brief-templates/ before you write it. the template defines the required-field headers. do not invent or rename fields.
inputs
06-angle-slate.md (the ranked opportunities: this is the spine of the brief pack)
04-objection-map.md + 04b-competitor-map.md
05-creator-map.md
03-voice-map.md
02-evidence-cards.json (for receipts)
00b-scope-contract.md (thin_pool + corpus_limitation_note)
- previous run's
08-watchlist.md if it exists (for delta_vs_last_run)
output 1: 07-brief-pack.md
six briefs, in this order, each from its template. each must satisfy the market-voice-run schema brief def: a brief_type, source_receipts (min 1 evidence_id), what_we_would_NOT_say (min 2), and an operator_action ({verb, object, channel_or_owner, this_week}, verb from the enum: build, write, email, pause, test, capture, ship, assign, survey).
- ad_angle ->
references/brief-templates/ad-angle-brief.md
- landing_page_copy ->
references/brief-templates/landing-page-copy-brief.md
- seo_content ->
references/brief-templates/seo-content-brief.md
- competitor_positioning ->
references/brief-templates/competitor-positioning-brief.md
- creator_partnership ->
references/brief-templates/creator-partnership-brief.md
- product_messaging ->
references/brief-templates/product-messaging-brief.md
each brief draws from the highest-ranked relevant opportunities and the maps. never put a weak_pattern or do_not_use_yet claim into a brief as if it were ready; if you use directional language, mark it directional and route it to a test or capture action.
output 2: 08-watchlist.md
the serial artifact. it's the only one that compares to last run and the only one that holds the not-yet-ready items. write it from references/brief-templates/category-watchlist-brief.md. it carries:
- rising_phrases: with velocity / recurrence
delta_vs_last_run (if no prior run, say "baseline run, no delta yet").
- creators_framing_category: who's minting the language to track.
- competitor_claims_spreading: claims gaining ground you may need to pre-empt.
- objections_getting_louder: friction trending up.
- formats_hooks_to_test: mechanics worth a cheap test.
- noise_to_ignore: explicit. the loud-but-useless clusters (the "pricing 47 mentions" type) named so they stop re-surfacing.
- this is where
weak_pattern and do_not_use_yet items live. items the angle slate barred land here with a reason and a re-check cadence.
each watchlist line carries source_receipts + a confidence label. the file ends in ONE operator_action: the single thing to do this week.
the banned-phrase gate (self-check before you finish)
scan your own brief copy. if any of these appear in the brief's actual copy, rewrite the line:
actionable insights, single source of truth, busy founders want efficiency,
customers value authenticity, seamless, robust, synergy, elevate, unlock,
leverage (as a verb), supercharge, game-changer, next-gen, best-in-class
and: if a phrase appears in BOTH a brief's copy AND its own what_we_would_NOT_say list, that's a contradiction the validator throws. fix it.
degradation
- thin pool: write the briefs you can support, mark the rest "insufficient corpus this run," and put a
survey/capture operator_action on the gaps. do not pad.
- a brief with no qualifying receipt is not shipped. say "no direct_quote/strong_inference evidence for this brief yet" and route to capture.
hard rules
- every brief ends in an operator_action and carries >= 1 source receipt.
- every brief has a What We Would NOT Say block, min 2 entries.
- no em dashes. lowercase headers. CAPS sparingly. contractions. specific numbers, never round hype. the operator stays the editor.