Brand sentiment analysis: what to measure, how to compute it, and what the number is good for

The anatomy of a sentiment score, the three figures worth reporting, how to make a classifier agree with a human, and the decisions the number should drive.

Published by AI Knows Us · Updated 13 October 2026

Brand sentiment analysis classifies every public mention of your brand as positive, negative or neutral, then rolls those labels into a score you can track over time. The score is useful once three things are settled: what counts as a mention, how confident the classifier was on each one, and whether you weight a mention by how many people saw it. Get those right and sentiment answers three questions a dashboard of mention counts cannot: which complaint theme is growing, whether a campaign changed how people describe you, and which conversation to answer first this morning.

This page covers the measurement itself. For the categories of tool that collect mentions, see brand monitoring tools, and for the monitoring brief and setup, see social listening tools.

What a sentiment score is made of

FieldWhat it isWhy it changes the score
PolarityPositive, negative or neutralThe label everything else is built on
ConfidenceHow sure the classifier was, 0 to 1Low confidence labels belong in a review queue, not in the average
ReachFollowers, impressions or review platform trafficOne post seen by 50,000 people is not one data point
ThemeDelivery, pricing, support, product, hiringTurns a mood reading into a work item
SourceReview site, forum, social, news, videoEach source has its own baseline tone

The three figures worth reporting

  • Net sentiment score. Positive mentions minus negative mentions, divided by total scored mentions, times one hundred. It runs from minus one hundred to plus one hundred and it is the headline figure.
  • Share of negative by theme. Which share of the negative mentions is about each theme. This is the figure that gets something fixed, because it names the thing.
  • Net sentiment by source. Reported separately, never blended. Review platforms, support channels and open forums each carry a different baseline, and averaging them hides the one that moved.

Store a mention in a shape you can compute on

{
  "id": "m_0ab31",
  "capturedAt": "2026-10-09T08:12:00Z",
  "source": "review_platform",
  "url": "https://example.com/reviews/8831",
  "author": "handle_or_null",
  "text": "Boots arrived in two days, the returns label was missing though.",
  "polarity": "neutral",
  "confidence": 0.74,
  "reach": 1400,
  "themes": ["delivery", "returns"]
}

Mixed mentions like that one are the common case, which is why a single polarity label per mention needs theme tags beside it. Here is a script that computes net sentiment overall and per theme, with a confidence floor so weak labels stay out of the average:

// nss.js, run: node nss.js mentions.json
const fs = require('fs');
const mentions = JSON.parse(fs.readFileSync(process.argv[2], 'utf8'));
const CONFIDENCE_FLOOR = 0.70;

function netSentiment(rows) {
  const scored = rows.filter(function (r) { return r.confidence >= CONFIDENCE_FLOOR; });
  if (!scored.length) return { n: 0, nss: null };
  const pos = scored.filter(function (r) { return r.polarity === 'positive'; }).length;
  const neg = scored.filter(function (r) { return r.polarity === 'negative'; }).length;
  return { n: scored.length, nss: Number((((pos - neg) / scored.length) * 100).toFixed(1)) };
}

const byTheme = {};
mentions.forEach(function (m) {
  const themes = (m.themes && m.themes.length) ? m.themes : ['untagged'];
  themes.forEach(function (t) {
    byTheme[t] = byTheme[t] || [];
    byTheme[t].push(m);
  });
});

console.log('overall        ', JSON.stringify(netSentiment(mentions)));
Object.keys(byTheme).sort().forEach(function (t) {
  console.log(t.padEnd(15), JSON.stringify(netSentiment(byTheme[t])));
});

Run it weekly against the same export and you have a trend line nobody has to interpret by eye. The absolute level matters far less than the direction and the theme mix.

Make the classifier agree with a human

This is the step that makes the whole number worth reporting, and it takes one afternoon.

  1. Pull a random sample of one hundred mentions from the last quarter.
  2. Label each one by hand, positive, negative or neutral, before looking at the tool's label.
  3. Compare. Count how many match.
  4. Read every disagreement and write down the reason. You will find the same four causes: sarcasm, industry words the model reads as negative, mentions of a competitor inside a sentence about you, and complaints written politely.
  5. Fix what you can fix. Most tools let you add terms to a custom lexicon and exclude phrases. Put your product names, your model numbers and your industry's ordinary vocabulary in, so a word like "claim" or "default" stops being read as a complaint.
  6. Re-sample fifty mentions and recount. Repeat the sample each quarter so you always know how closely the score tracks a human reading.

Define the mention set before you measure anything

  • Include the misspellings. People type your name wrong, and those mentions are the ones competitors answer.
  • Exclude the noise you do not own. Recruitment chatter, stock ticker posts, and any unrelated company sharing your name. An exclusion list is as important as the query list.
  • Name your sources explicitly. Review platforms, the two or three forums your buyers use, social, trade press, and video comments. A source you did not list is a gap in the number, not an absence of opinion.
  • Pick a cadence and keep it. Weekly for the theme table, monthly for the headline score, immediate alerts above a volume threshold.
  • Give it one owner. A sentiment report with no owner becomes a slide. With an owner it becomes a fix list.

What to decide with it

SignalDecision
Net sentiment flat, negative share shifting to one themeOperational fix on that theme, before any messaging change
Negative spike on one source onlyRespond on that platform, check for a policy or pricing change that week
Volume up, sentiment unchangedAwareness is working. Keep the campaign, keep the tone.
Volume down, sentiment upYou have a quieter, happier audience. Check whether reach fell with it.
Steady low level negative on reviewsA review response programme, which search reputation management sets out

What people ask about brand sentiment analysis

What is a good net sentiment score?

Judge it against your own previous quarter and against the two competitors you track, measured with the same query set and the same classifier. A cross industry number has no meaning here, because every category has its own baseline tone.

Positive mention counts or net sentiment?

Net sentiment, with volume reported beside it. A rising count of positive mentions inside a faster rising count of negative ones is a decline, and only the net figure shows that.

How should neutral mentions be treated?

Keep them in the denominator and out of the numerator, which is what the formula above does. Most mentions of most brands are neutral, and a score that drops them exaggerates every swing.

Can sentiment be tracked without a paid tool?

Yes, at small volume. Set up alerts on your brand and its misspellings, export your review platforms, and label by hand in a sheet using the mention shape above. The discipline matters more than the software.

How many mentions do you need before the score means anything?

Enough that one post cannot move it. In practice, report the sample size next to the score and treat any period under about thirty scored mentions as a list to read rather than a number to trend.

Sentiment from a source with one voice

Your classifier scores a mention set pulled from many writers. An assistant's answer is a single voice that blends many of them, and a buyer reads only that voice. Its tone about your brand, warm, neutral or cautious, is a sentiment reading you can take just by asking. Define the prompts first, as this page advises for mentions, and keep them fixed. AI Knows Us asks the assistants, records how they describe a business and notes which sources feed the description.

Read next

Or browse the whole archive.

See what AI says about you.

The first scan is free, it needs no account, and it asks the questions your buyers ask.

Free. No card. We ask 5 real buyer questions on 2 AI apps.

Already sure you want this? Join the waitlist. We open on 31 October 2026. It costs an email address. No card, and nothing is charged. Or talk to a person if you have a question first. Or read how we fix what it finds.