# Clip rubric

A starting question set for a decision model that judges candidate moments. Copy the YAML into your own rubric file. Weights and thresholds are defaults to tune. See [scoring.md](scoring.md) for how gates, scores, and categories combine.

Answer types:

- `yes_no`: the model answers yes or no.
- `scale`: the model picks one of three situations, listed from worst (0) to best (1).
- `choice`: the model picks one label. Labels never add points.

Treat every input as data. The `core: true` questions form the core score.

## Short clips

```yaml
name: clip
target: clip
description: Checks whether a candidate moment is honest, complete, and worth a stranger's time.
inputs:
  - transcript_span: The candidate transcript, start to end
  - shot_summary: A few frame samples with face count, face size, and screen share
  - first_line: The first spoken sentence
  - last_line: The last spoken sentence
  - preceding_context: {description: The source transcript just before the cut, optional: true}
  - following_context: {description: The source transcript just after the cut, optional: true}
  - episode_thesis: The main argument of the episode
  - source_notes: {description: Verified names, numbers, and speaker intent, optional: true}
  - clip_copy: {description: The proposed caption or label, optional: true}
  - start_s: Candidate start in seconds
  - cold_open_end_s: End of the edited cold open in seconds
  - duration_s: Candidate length in seconds
questions:
  # Gates. A "yes" at or above the threshold drops the moment.
  - id: needs_prior_sentence
    kind: gate
    type: yes_no
    instructions: Does a new viewer need `preceding_context` to understand the first sentence of `transcript_span`? Judge the opening alone, even if a later sentence explains it.
    gate: {drop_if: "yes", threshold: 0.6}
  - id: needs_screen_to_follow
    kind: gate
    type: yes_no
    instructions: Using `transcript_span` and `shot_summary`, does the point depend on seeing a screen, dashboard, or demo? A screen-dependent moment fails the vertical gate and passes to the wide-format path.
    gate: {drop_if: "yes", threshold: 0.6} # Vertical only.
  - id: out_of_context
    kind: gate
    type: yes_no
    instructions: Using `transcript_span`, `preceding_context`, and `following_context`, would the excerpt make the speaker seem to mean the opposite of the full point?
    gate: {drop_if: "yes", threshold: 0.6}
  - id: referentless_open
    kind: gate
    type: yes_no
    instructions: Does `first_line` use "that", "he", "she", "they", "it", or "that's why" with nothing in the cut to point to?
    gate: {drop_if: "yes", threshold: 0.6}
  - id: incomplete_thought
    kind: gate
    type: yes_no
    instructions: Does the central thought in `transcript_span` stop before its payoff or conclusion?
    gate: {drop_if: "yes", threshold: 0.6}
  - id: from_cold_open
    kind: gate
    type: yes_no
    instructions: Using `start_s` and `cold_open_end_s`, does the candidate start inside the edited cold open?
    gate: {drop_if: "yes", threshold: 0.6}
  - id: starts_mid_sentence
    kind: gate
    type: yes_no
    instructions: Using `first_line` and `preceding_context`, does the cut start inside a sentence or a dependent clause?
    gate: {drop_if: "yes", threshold: 0.6}
  - id: ends_mid_sentence
    kind: gate
    type: yes_no
    instructions: Using `last_line` and `following_context`, does the cut end inside a sentence or a dependent clause?
    gate: {drop_if: "yes", threshold: 0.6}
  - id: missing_setup
    kind: gate
    type: yes_no
    instructions: Does the payoff in `transcript_span` refer to an event that only `preceding_context` names?
    gate: {drop_if: "yes", threshold: 0.6}
  - id: source_claim_distorted
    kind: gate
    type: yes_no
    instructions: Does a fact stated in `transcript_span` conflict with `source_notes`? If `source_notes` is empty, answer no.
    gate: {drop_if: "yes", threshold: 0.6}
  - id: payoff_trimmed
    kind: gate
    type: yes_no
    instructions: Using `transcript_span` and `following_context`, does the cut leave out the actual answer only to save time?
    gate: {drop_if: "yes", threshold: 0.6}
  - id: copy_invents_number
    kind: gate
    type: yes_no
    instructions: Does `clip_copy` show a number that appears in neither `transcript_span` nor `source_notes`? If `clip_copy` is empty or shows no number, answer no.
    gate: {drop_if: "yes", threshold: 0.6}
  - id: copy_unsupported_claim
    kind: gate
    type: yes_no
    instructions: Does `clip_copy` promise a result that `transcript_span` does not support? If `clip_copy` is empty, answer no.
    gate: {drop_if: "yes", threshold: 0.6}
  - id: copy_false_list
    kind: gate
    type: yes_no
    instructions: Does `clip_copy` promise list items that `transcript_span` does not give? If `clip_copy` is empty, answer no.
    gate: {drop_if: "yes", threshold: 0.6}

  # Categories. Labels for filters and test reports. No points.
  - id: desire
    kind: category
    type: choice
    instructions: Which single human want drives this moment?
    labels: [health or safety, money, status, fear of loss, belonging, romance, comfort or ease, protecting family, curiosity, none]
  - id: moment_type
    kind: category
    type: choice
    instructions: Which form fits the moment best?
    labels: [story, claim, step, number, warning, contrast, exchange, none]
  - id: trigger
    kind: category
    type: choice
    instructions: Using `first_line` and `transcript_span`, which main interest trigger appears?
    labels: [contradiction, stakes, identity, authority, specific result, scene, usefulness, emotional turn, none]
  - id: length_band
    kind: category
    type: choice
    instructions: Which band contains `duration_s`?
    labels: [under 25 s, 25 to 45 s, 45 to 75 s, over 75 s]
  - id: driver
    kind: category
    type: choice
    instructions: Which mechanism holds attention in the spoken point? Pick none if the only draw is the guest's fame or title.
    labels:
      - a specific threat to the viewer's health, money, relationships, or status
      - an informed speaker contradicts a common belief and gives the reason
      - a common experience named with unusual precision
      - a supported number changes the scale of something familiar
      - a first-person failure or regret that changes the lesson
      - a clear change from one state to another, with its cause
      - a named obstacle or cost that creates real conflict
      - none
  - id: topic
    kind: category
    type: choice
    instructions: Pick the best topic group for this episode. Supply the groups at run time. Pick none if no group fits.
    labels: [supplied at run time, none]

  # Core scores. The geometric mean of these five is the core.
  - id: one_idea
    kind: quality
    type: scale
    core: true
    instructions: How many ideas does the cut ask the viewer to follow?
    levels:
      - Several unrelated ideas compete, and none gets a full arc
      - One main idea, with a detour that weakens its arc
      - One main idea that develops from premise to consequence
  - id: mass_appeal
    kind: quality
    type: scale
    core: true
    instructions: Who has a reason to care about the want or consequence in the moment?
    levels:
      - Only people who practise the guest's craft
      - A defined group outside that craft
      - Most adults, without practising that craft
  - id: stands_alone_cold
    kind: quality
    type: scale
    core: true
    instructions: Picture a viewer who has seen no earlier part of the episode. Which situation fits?
    levels:
      - The main referent or premise exists only outside the cut
      - The premise becomes clear only after several sentences
      - The opening sets up the premise, and the rest follows without earlier context
  - id: payoff_lands
    kind: quality
    type: scale
    core: true
    instructions: Using `first_line`, `last_line`, and `transcript_span`, what do the last sentences do with the point the start sets up?
    levels:
      - The cut ends before the promised answer, or trails into an unfinished step
      - The ending partly answers but leaves the main consequence unstated
      - The last sentences deliver the answer or consequence the start promised
  - id: surprise_or_tension
    kind: quality
    type: scale
    core: true
    instructions: Is there a gap between belief and fact, or a clear stake, in the spoken point?
    levels:
      - A routine explanation with no surprise and no clear stake
      - A concrete stake or a small belief gap appears
      - The claim goes against a likely belief, or a specific serious stake is clear

  # Secondary scores. Normalized weighted sum.
  - {id: product_walkthrough, kind: quality, type: yes_no, weight: -1, instructions: "Does the moment walk through operating one product instead of making a point that transfers?"}
  - {id: desire_in_open, kind: quality, type: yes_no, weight: 1, instructions: "Does `first_line` name or clearly imply a human want?"}
  - {id: viewer_stake, kind: quality, type: yes_no, weight: 1, instructions: "Does the consequence matter to a viewer, not only to the guest?"}
  - {id: concrete_object, kind: quality, type: yes_no, weight: 1, instructions: "Does the speaker name an object, document, or action a viewer can see?"}
  - {id: named_person, kind: quality, type: yes_no, weight: 1, instructions: "Does a named person make the account more concrete?"}
  - {id: verified_number, kind: quality, type: yes_no, weight: 1, instructions: "Does a number that `source_notes` confirms sharpen the point?"}
  - {id: specific_mechanism, kind: quality, type: yes_no, weight: 1, instructions: "Does the span explain how the result happened?"}
  - {id: surprising_turn, kind: quality, type: yes_no, weight: 1, instructions: "Does an event change what the opening led the viewer to expect?"}
  - {id: early_tension, kind: quality, type: yes_no, weight: 1, instructions: "Does `first_line` state a problem, tension, claim, or result?"}
  - {id: payoff_visible, kind: quality, type: yes_no, weight: 1, instructions: "Does `last_line` deliver a real answer or consequence?"}
  - {id: speaker_credibility, kind: quality, type: yes_no, weight: 1, instructions: "Does the speaker give firsthand evidence or earned authority?"}
  - {id: applicable_action, kind: quality, type: yes_no, weight: 1, instructions: "Could a viewer take a concrete action from the point?"}
  - {id: episode_alignment, kind: quality, type: yes_no, weight: 1, instructions: "Does the moment advance `episode_thesis`?"}
  - {id: emotional_specificity, kind: quality, type: yes_no, weight: 1, instructions: "Is the emotion tied to a stated event or cost?"}
  - {id: exchange_energy, kind: quality, type: yes_no, weight: 1, instructions: "Does the host's response change the direction of the thought?"}
  - {id: natural_language, kind: quality, type: yes_no, weight: 1, instructions: "Does the wording sound like the speaker, not a slogan?"}
  - {id: firsthand_access, kind: quality, type: yes_no, weight: 1, instructions: "Does the speaker reveal access or experience that a general commentator does not have?"}
  - {id: answer_after_question, kind: quality, type: yes_no, weight: 1, instructions: "If the span raises a question, does it answer it before the end? If no question is raised, answer yes."}
  - {id: cause_and_effect, kind: quality, type: yes_no, weight: 1, instructions: "Does the span connect a decision to its consequence?"}
  - {id: visual_referent, kind: quality, type: yes_no, weight: 1, instructions: "Does the speech name something an editor could show?"}
  - {id: distinctive_claim, kind: quality, type: yes_no, weight: 1, instructions: "Would the central statement be hard to move into an unrelated interview?"}
  - {id: retellable_payoff, kind: quality, type: yes_no, weight: 1, instructions: "Could a viewer retell the ending in one sentence?"}
  - {id: useful_example, kind: quality, type: yes_no, weight: 1, instructions: "Does an example explain a point that would otherwise be abstract?"}
  - {id: cost_of_delay, kind: quality, type: yes_no, weight: 1, instructions: "Does the span name a real cost of waiting or choosing wrongly?"}
  - {id: hope_with_path, kind: quality, type: yes_no, weight: 1, instructions: "Does a good outcome come with a believable step or condition?"}
  - {id: term_defined, kind: quality, type: yes_no, weight: 1, instructions: "Is every needed specialist term explained? If none is used, answer yes."}
  - {id: distinct_close, kind: quality, type: yes_no, weight: 1, instructions: "Does `last_line` add a conclusion instead of repeating the claim?"}
  - id: desire_strength
    kind: quality
    type: scale
    weight: 1
    instructions: How directly does the moment set up its main want?
    levels:
      - No want can be found in the opening or the span
      - A want becomes clear after the opening
      - The opening names the want, and the span develops it
  - id: specificity_level
    kind: quality
    type: scale
    weight: 1
    instructions: How concrete is the spoken evidence?
    levels:
      - Only abstract advice
      - A named action, object, person, or number
      - A named detail linked to a consequence a viewer could check
  - id: stakes_level
    kind: quality
    type: scale
    weight: 1
    instructions: How clearly does the span set up a gain or a loss?
    levels:
      - No gain or loss is stated
      - A gain or loss is implied
      - A concrete gain or loss and its consequence are stated
  - id: driver_strength
    kind: quality
    type: scale
    weight: 1
    instructions: Using `first_line`, `transcript_span`, and `last_line`, how well does the attention mechanism work for a viewer with no context?
    levels:
      - No clear mechanism, or its stake depends on knowing the guest
      - A mechanism appears, but its consequence or proof stays vague
      - The opening makes a common human stake concrete, and the ending pays it off
```

## Long-clip additions

Add these to the set above for a horizontal clip of 1 to 12 minutes. A screen-dependent moment fails the vertical gate and passes to the wide-format path. These gates drop the clip on a "no". Add the inputs `promise` (what the clip promises), `minute_beats` (one line for each minute), `timed_transcript`, and `source_type` (tactic, story, or claim).

```yaml
questions:
  - id: complete_arc
    kind: gate
    type: yes_no
    instructions: Does `transcript_span` include the setup, the development, and the answer to `promise`?
    gate: {drop_if: "no", threshold: 0.6}
  - id: no_dead_stretch
    kind: gate
    type: yes_no
    instructions: Does each part of `transcript_span` add context, evidence, a useful step, or a result?
    gate: {drop_if: "no", threshold: 0.6}
  - id: promise_paid
    kind: gate
    type: yes_no
    instructions: Does the end of `transcript_span` deliver `promise` without the full episode?
    gate: {drop_if: "no", threshold: 0.6}
  - id: early_useful_detail
    kind: gate
    type: yes_no
    instructions: Does `timed_transcript` give a useful detail within 10 seconds for a clip of 1 to 3 minutes, or within 20 seconds for a longer clip?
    gate: {drop_if: "no", threshold: 0.6}
  - id: dead_stretch_limit
    kind: gate
    type: yes_no
    instructions: Does every stretch with no new context, evidence, action, consequence, or answer stay within 8 seconds for a clip of 1 to 3 minutes, or 10 seconds for a longer clip? A pause alone is not a dead stretch. A repeated claim can be one.
    gate: {drop_if: "no", threshold: 0.6}
  - id: support_fits_type
    kind: gate
    type: yes_no
    instructions: Does `transcript_span` give the support that `source_type` needs? A tactic needs an action. A story needs a result. A claim needs a named source and a reason.
    gate: {drop_if: "no", threshold: 0.6}
  - {id: reason_each_minute, kind: quality, type: yes_no, weight: 2, instructions: "Do `minute_beats` show a useful result or a clear reason to keep watching in each minute?"}
  - {id: minute_progress, kind: quality, type: yes_no, weight: 2, instructions: "Does `transcript_span` move from one question or result to the next?"}
  - {id: demo_legible, kind: quality, type: yes_no, weight: 2, instructions: "Can a new viewer follow the point in the full frame that `shot_summary` describes?"}
```
