linkedin-studio/references/trend-scoring-modes.md
Kjell Tore Guttormsen bace49f8c2 docs(linkedin-studio): N6 — bånd-fordelings-kalibrering (MR-F6) i trend-scoring-modes.md
Ukalibrert modell-dømmekraft inflaterte topp-båndet (observert 13/20 → Immediate).
Legger til en eksplisitt fordelings-forventning som scoring-SSOT: de fleste kandidatene
hører hjemme i Medium–High (4.0–7.9); Immediate (≥8.0) er unntaket (arbeidsmål ≤~3/20).
Score relativt over batchen, ikke sjenerøst i isolasjon.

Fordelings-formen er mekanisme; terskelen for hva som teller som eksepsjonelt bor i
brukerprofilen/dimensjons-rubrikkene, aldri hardkodet (domene-generelt). Etterprøvbart nå
fordi composite+band persisteres (RE-R3a); MR-F7-bånd-cap-gaten (N7) bygger på samme signal.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S7SQpXJpBSNvpWaTNq1kWZ
2026-07-21 09:10:06 +02:00

135 lines
8.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Trend Scoring Modes Reference
**Single source of truth** for how a discovered trend/topic candidate is scored.
There are **two modes** — they share the same 110 per-dimension scale and the same
composite formula, but they weight the dimensions differently because a feed post and
a long-form chronicle reward different things. Surfaces (the `trend-spotter` agent, any
research-engine pass) **select a mode and apply the matching rubric** — they do not
restate the weights inline. Cite this file; do not duplicate it.
This file defines **methodology** (the weights), not user preference. The *source list*
a pass polls is separate and user-overridable — see
`config/trends-sources.template.md``${LINKEDIN_STUDIO_DATA:-$HOME/.claude/linkedin-studio}/trends/sources.md`.
## How to read this file
- Score each dimension **110** (see the bands in the per-mode tables).
- Composite = the weighted sum of the five dimension scores. Each mode's weights sum to
**100 %**, so the composite stays on the same 010 scale across modes.
- The **ordering** of the weights is the signal; the exact percentages are a deliberate,
documented choice, not a measured coefficient. (Timing grounding — why a feed post
weights recency and a chronicle does not — traces to
`references/algorithm-signals-reference.md`; this file does not restate algorithm
magnitudes.)
## Mode selection
| Mode | Use for | Driver |
|------|---------|--------|
| **kortform** | feed posts (`/linkedin:post`, `:quick`, `:react`, `:carousel`, `:video`) | timing + audience pull — a good post published early beats a perfect post published late |
| **long-form** | chronicles / newsletters / series editions (`/linkedin:newsletter`) | depth + angle — a chronicle has a longer shelf life; whether there is *enough material for a full piece* matters more than a 24-hour window |
If no mode is declared, default to **kortform** (the feed is the higher-cadence surface).
A caller may pass the mode explicitly (e.g. the long-form orchestrator requesting
`long-form`); a future slice may read a per-user default from the profile.
## Mode: kortform (LinkedIn feed post)
Tuned for the feed: timing and audience pull carry real weight because the first-mover
window is short.
| Dimension | Weight | 12 (Low) | 35 (Medium) | 68 (High) | 910 (Exceptional) |
|-----------|--------|-----------|---------------|-------------|---------------------|
| **Pillar Fit** | 30 % | Outside all 5 pillars | Tangential to one pillar | Direct hit on one pillar | Intersects 2+ pillars |
| **Audience Relevance** | 25 % | Wrong audience entirely | Some audience overlap | Core audience cares | Audience actively asking about this |
| **Timing** | 20 % | >7 days old, saturated | 37 days, moderate coverage | 2472h, early coverage | <24h, you would be among first |
| **Angle Potential** | 15 % | Only obvious take available | One good angle possible | 23 strong angles | Contrarian or unique angle clear |
| **Authority Match** | 10 % | No credibility on topic | Some related experience | Direct experience | Published authority on this |
```
Composite = (Pillar × 0.30) + (Audience × 0.25) + (Timing × 0.20) + (Angle × 0.15) + (Authority × 0.10)
```
## Mode: long-form (chronicle / newsletter / series)
Reweighted for a longer piece: **depth potential** enters at 25 %, and **timing drops to
10 %** — a chronicle is not a 24-hour reaction, so recency matters less than whether the
topic has enough substance and a differentiated angle to carry a full edition.
| Dimension | Weight | 12 (Low) | 35 (Medium) | 68 (High) | 910 (Exceptional) |
|-----------|--------|-----------|---------------|-------------|---------------------|
| **Pillar / thesis fit** | 30 % | Outside the active theses | Tangential to one thesis | Fits one thesis / series arc | Advances 2+ theses or a live series arc |
| **Depth potential** | 25 % | A single post at most | Enough for one solid post | Enough for a full chronicle | Enough for a multi-part series |
| **Angle / differentiation** | 20 % | Commodity take only | One non-obvious angle | 23 differentiated angles | Original thesis the field lacks |
| **Authority / experience** | 15 % | No credibility on topic | Some related experience | Direct lived experience | Published authority on this |
| **Currency** | 10 % | Stale / already resolved | Relevant this quarter | Relevant now, durable | Relevant now AND will compound |
```
Composite = (Pillar × 0.30) + (Depth × 0.25) + (Angle × 0.20) + (Authority × 0.15) + (Currency × 0.10)
```
## Why the two modes differ (the one delta)
The two rubrics are the same five-dimension instrument with one deliberate swap:
- **kortform:** Timing **20 %**, no depth dimension — the feed rewards being early.
- **long-form:** Timing → Currency at **10 %**, Depth potential added at **25 %** — a
chronicle rewards substance and a durable angle over speed.
Pillar fit (30 %) and authority (kortform 10 % / long-form 15 %) anchor both: an off-pillar
or low-credibility topic scores low in either mode, because topic relevance and credibility
are non-negotiable regardless of format.
## Composite → action
The same priority bands apply to both modes (the composite is on the same 010 scale):
| Composite | Priority | kortform action | long-form action |
|-----------|----------|-----------------|------------------|
| 8.010 | **Immediate** | Draft within 24h | Promote to the edition backlog now |
| 6.07.9 | **High** | Publish within 4872h | Strong edition candidate — schedule it |
| 4.05.9 | **Medium** | Add to this week's calendar | Hold as a backlog candidate, revisit |
| 2.03.9 | **Low** | Note, skip for now | Park unless the angle sharpens |
| 01.9 | **Skip** | Off positioning | Off positioning |
## Calibration — the expected score distribution (MR-F6)
The five dimensions are **model judgment**, and unanchored judgment inflates: an observed sweep
put 13 of 20 candidates in **Immediate** (≥8.0), which makes the band meaningless — if most
things are "draft now", nothing is. The composite is only useful if the bands are **scarce at the
top**. So a scoring pass must calibrate against this distribution expectation, not score each
candidate generously in isolation:
- In a **typical sweep**, most candidates belong in **MediumHigh (4.07.9)**. That is the honest
home of "worth writing about, eventually".
- **Immediate (≥8.0) is the exception, not the rule** — reserve it for candidates that are
genuinely exceptional *relative to the rest of this sweep*. As a working target, expect on the
order of **≤3 of 20** in Immediate; a sweep that floods the top band is uncalibrated, not lucky.
- **Skip/Low (<4.0)** is a real outcome — an off-pillar or already-resolved topic should land
there, not get floated to Medium to be polite.
Mechanics for the pass:
- **Score relatively across the batch.** A 910 on a dimension means "exceptional versus the other
candidates in *this* sweep", not "good in the abstract". Rank the batch, then assign — a flat
batch of 8s is the failure mode this rule exists to catch.
- **The distribution shape is the mechanism; the threshold of what counts as exceptional is the
user's calibration** (the dimension rubrics above + the profile), never a hard-coded fact about
any one operator's topics. Domain-general: the anti-inflation rule travels; the specific bar does
not live here.
- **This is now measurable.** The composite + band are **persisted** on each record (RE-R3a,
`TrendRecord.score`), so the distribution can be checked across runs — e.g. count the Immediate
share of a stored sweep. The MR-F7 band-cap gate (N7) builds on the same persisted signal: a
candidate with no formulable reader-grip is capped below Immediate regardless of composite.
## Consumers
- `agents/trend-spotter.md` — reads the requested mode and applies the matching rubric
instead of inlining a matrix (wired in research-engine slice 2b).
- Any future research-engine pass that scores candidates before writing them to the trend
store (`scripts/trends/`).
**Note (RE-R3d):** the morning brief applies a *brief-time* **temporal overlay** (first-mover /
saturation, derived from the publish/capture dates + the seen-log) as a **within-composite-tier**
ranking refinement. It is a separate layer from this file — it does **not** change the capture-time
dimension weights, bands, or composite formula above.