| name | angle-synthesizer |
| description | Score market-voice opportunities with the opportunity scorecard, apply the hard promotion gate, and emit 05-creator-map.md (per creator tagged pitch|watch|mine_for_hooks|ignore with a one-line reason) and 06-angle-slate.md (ranked, scored opportunities that each validate against the market-voice-run "opportunity" def). Only direct_quote and strong_inference items reach the slate. Triggers on: angle slate, score opportunities, rank angles, creator map, promotion gate, which angles to test, angle-synthesizer stage. |
angle-synthesizer
you turn evidence into ranked, scored opportunities. this is where the kit either earns trust or becomes another VOC toy. the whole job: distinguish volume from usefulness. "pricing" mentioned 47 times is loud and useless. "i churned the day they removed CSV export" mentioned 3 times is gold. you must rank the second above the first, by math, every time.
read these before you start: references/enemy-belief-rubric.md, and the orchestrator's references/scoring-rubric.md. they are not optional.
inputs
02-evidence-cards.json (your raw material)
03-voice-map.md (forward language)
04-objection-map.md + 04b-competitor-map.md (what to answer, where the wedges are)
00b-scope-contract.md (read thin_pool: it caps your slate)
output 1: 05-creator-map.md
one block per creator surfaced in the corpus (cards with voice_layer: creator). creator voice is the LEADING indicator: who shapes how the market talks. per creator:
- lane: the topic they own.
- audience_fit: how close their audience is to the buyer. high / medium / low, with a reason.
- amplified_language: the exact phrases/frames they repeat that the market picks up. flag any that also appear in user voice as
diffusing (that's the highest-value language in the run).
- hooks_formats: the repeatable mechanic (hook shape, format) worth cloning.
- recommendation: exactly one of
pitch | watch | mine_for_hooks | ignore. a creator may carry two tags.
- reason: ONE line per tag. never a bare label. the four meanings:
pitch: high audience fit + low brand risk + already speaks category language -> outreach.
mine_for_hooks: strong frames, wrong partnership -> clone the language, no contact.
watch: upstream of category language, too early to act -> re-check velocity next run.
ignore: noisy/irrelevant/brand-risky -> explicit exclude + reason (stops it re-surfacing).
each creator block cites the evidence_ids behind it.
output 2: 06-angle-slate.md
ranked, scored opportunities. each opportunity must validate against the market-voice-run schema's opportunity def. required fields, exact names:
- angle_name
- thesis
- enemy_belief: the specific wrong thing the market believes. NOT a restatement of
angle_name. no enemy -> drop the angle. (see enemy-belief-rubric.md)
- generic_version: the flattened persona-mush this angle beats. honestly the mush, not a strawman.
- mined_version: the sharp, source-derived phrasing.
- why_mined_wins
- proof_object: the receipt/number/before-after that makes it credible.
- best_use_case: one of ads | landing_page | seo | positioning | creator_partnerships | product_messaging.
- proof_gap: what proof is still missing before it goes live.
- confidence:
direct_quote or strong_inference ONLY.
- scored_dimensions: all six (specificity, recurrence, emotional_charge, commercial_intent, proof_strength, differentiation), each 1-5.
- ranked_score: computed, 0-30.
- source_receipts: min 1
evidence_id, each present in 02-evidence-cards.json.
- what_we_would_NOT_say: min 2 entries.
- operator_action:
{verb, object, channel_or_owner, this_week}. verb from the enum.
sort the slate by ranked_score descending.
the scoring (do the math, show it)
opportunity_score = specificity + recurrence + emotional_charge
+ commercial_intent + proof_strength + differentiation # 6-30
usefulness_multiplier = (specificity + commercial_intent + differentiation) / 15 # 0.4-1.0
ranked_score = opportunity_score * usefulness_multiplier # 0-30
the hard promotion gate
an item may NOT reach the slate on recurrence alone. it must clear:
specificity >= 4 AND (commercial_intent >= 4 OR differentiation >= 4)
fails the gate -> route to 08-watchlist.md if directional, else drop. this single rule kills sentiment mush.
confidence gating (mechanical)
- only
direct_quote and strong_inference cards may back an opportunity on the slate.
weak_pattern and do_not_use_yet never appear here. they live in 08-watchlist.md only.
- the
diffusing flag is orthogonal to confidence. a diffusing item jumps the queue regardless of recurrence, but it still needs a qualifying confidence label to make the slate.
thin pool
if 00b-scope-contract.md says thin_pool: true:
- cap the slate at 3 angles.
- say so in plain language at the top of the file ("thin corpus this run: 3 angles only, treat as directional").
- never launder comment noise into survey math. no "73% of customers" from 40 comments.
hard rules
- the operator stays the editor. you rank and surface; the human picks which 3 angles get budget.
- no invented hooks. every angle traces to market language or a creator mechanic.
- generic_version must be the real mush you're beating, written honestly, not a soft target.
- no em dashes. lowercase headers. CAPS sparingly. specific numbers, never round hype.