Every post is read and labeled by Claude (an AI model), judging the stance toward the specific brand — not the overall mood of the text: positive (praise, recommendation), negative (complaint, disappointment), neutral (no stance — includes factual news headlines like store openings or earnings), mixed (both praise and complaint). Posts that aren't actually about the brand (name coincidences, spam) are discarded before counting.
The sentiment score shown per brand is (positive − negative) ÷ all classified posts, over the last 30 days. It ranges from −1 (all negative) to +1 (all positive); news-heavy periods pull it toward 0 because factual coverage counts as neutral. Each post also gets 1–3 topics (taste, price, service…), which feed the Topics chart.
Sentiment is split into four sources, because each has a very different baseline and blending them means nothing. The toggle (All / News / Posts / Comments & X) and the KPI tiles keep them apart:
• News — press coverage; mostly factual, turns negative on controversies. • Posts — authored blog / Instagram / Threads posts; skew positive (people who write a café review are enthusiasts). • Comments & X — the rawest reaction: replies on posts plus X tweets, which read like comments. This is the least filtered voice. • Owned (the brand's own posts) is excluded from these — it's marketing. Always compare a score against the same source on other brands, never across sources.
Sponsored posts. Posts carrying a paid-review disclosure (체험단·협찬·원고료) are tagged and shown as 협찬/체험단 in the article list. Note that detection relies on the disclosure Korean law requires but many bloggers omit — so treat it as a floor, not a full count.