{
  "slug": "ai-positive-sentiment-rate",
  "name": "Positive sentiment share of AI mentions",
  "aliases": [
    "Positive Sentiment %",
    "Sentiment %"
  ],
  "definition": "The share of answer-engine mentions of your brand that were classified positive in tone.",
  "category": "AI visibility",
  "type": "rate",
  "unit": "percent of mentions classified positive",
  "direction": "higher-better",
  "verification": "verified",
  "calculation": "your positive mentions ÷ your all mentions × 100, labelled \"Positive Sentiment %\" on every source that carries it, the grid, the trend and the competitor breakdown all compute the identical ratio under differently named all-mention denominators.",
  "numerator": "Mentions classified positive.",
  "denominator": "All mentions of your brand in answer-engine responses in the period.",
  "aggregation": "Never average the per-engine percentages for a cross-engine figure, the semantic layer re-aggregates the ratio on a measure-only read. Recomputing it from returned counts is not equivalent, because the neutral and negative counts are not returned.",
  "grain": "One answer engine, competitor domain, prompt or time bucket for one tracked segment over one date range.",
  "dimensions": [
    "answer engine",
    "competitor domain",
    "prompt",
    "intent",
    "country",
    "device",
    "branded vs non-branded"
  ],
  "requiredFilters": [
    "tracker (unified segment id)",
    "date range"
  ],
  "sources": [
    "ai-visibility"
  ],
  "reports": [
    "ai-visibility-report"
  ],
  "skills": [
    "aeo-audit",
    "competitor-deep-dive",
    "quattr-iq"
  ],
  "verbs": [
    "ai_visibility_overview",
    "ai_visibility_trend",
    "ai_visibility_competitors",
    "ai_visibility_drilldown"
  ],
  "rungs": [
    "R4"
  ],
  "levers": [
    "L7",
    "L6"
  ],
  "questions": [
    "How positively do AI answers describe us?",
    "Is our sentiment better or worse than the leader's?",
    "Has sentiment moved since last quarter?"
  ],
  "interpretation": "Read as a distribution over prompts rather than as one number against an absolute threshold, canon's Represented rung is described exactly that way. Because the complementary neutral and negative shares are not measured on the aggregate leg, a falling positive share tells you positives fell, not where they went.",
  "caveats": [
    "The neutral and negative shares that would complete this distribution are set to zero in code on the cross-engine aggregate series, they are not measured there, so this rate is the only sentiment figure with measurement behind it in that path. The per-engine series does carry all three.",
    "The prompt-level path computes it against a sentiment-scored-mentions denominator rather than an all-mentions one, so a prompt-tab figure and a grid figure are not the same ratio.",
    "Canon flags the Represented rung as only partly instrumented: sentiment and mentions are measured, the positioning-fidelity half is not.",
    "Sentiment applies only to answers that mention you, an answer that cites your page without naming you contributes nothing here.",
    "Engines are non-deterministic: the same prompt can answer differently twice, which is why this is reported as a rate over repeated observation rather than as a state."
  ],
  "freshness": "~1 day behind, Daily prompt runs, available the following day.",
  "failureModes": [
    "Deriving the negative share as one hundred minus the positive share, the neutral bucket sits between them and is not measured on the aggregate leg.",
    "Reading a sentiment move at a handful of mentions as a change in how AI describes you.",
    "Averaging the per-engine percentages instead of taking the re-aggregated figure."
  ],
  "notSameAs": [
    {
      "slug": "ai-positive-mention-count",
      "why": "The rate is its own semantic-layer measure with an all-mentions denominator; the count is the numerator alone. The verbs read the rate rather than dividing the counts they return."
    },
    {
      "slug": "ai-negative-sentiment-rate",
      "why": "They are not complements in this data. The negative share is hardcoded to zero on the aggregate leg, so a low positive share cannot be turned into a negative share."
    },
    {
      "slug": "serp-sentiment-share",
      "why": "Sentiment measured on SERP brand mentions is a different corpus from sentiment measured in answer-engine text. They are collected separately, on different cadences, and are not comparable."
    },
    {
      "slug": "ai-neutral-sentiment-rate",
      "why": "The positive share is read from a measured field on both legs of the trend; the neutral share is measured on the per-engine leg and set to zero in code on the aggregate leg, so the two are not comparable parts of one distribution there.",
      "mirroredFrom": "ai-neutral-sentiment-rate"
    }
  ],
  "related": [
    "ai-positive-mention-count",
    "ai-neutral-sentiment-rate",
    "ai-negative-sentiment-rate",
    "ai-mention-count"
  ],
  "workflows": [],
  "lastVerified": "2026-08-04"
}