The Problem
Advertising measures
everything except impact.
Impressions count eyeballs, not reactions. Click-through rates measure curiosity, not connection. A/B tests tell you which headline won, not why. The industry optimizes for attention while ignoring what attention does to people.
We built an instrument that measures the thing everyone skips: how four independent models read the emotion in your words, and exactly where they disagree.
The Instrument
How VibeScore works
01
Four independent models
Claude (Anthropic), GPT-4o (OpenAI), Gemini (Google), and Grok (xAI) each score your content against eight primary emotion dimensions. No model sees the others' output. No consensus pressure.
02
Eight emotional dimensions
Joy, Trust, Fear, Surprise, Sadness, Disgust, Anger, Anticipation. Each scored 0-1 by each model. Not sentiment (positive/negative) — full emotional resolution.
03
Divergence is the product
Where models agree, the signal is clear. Where they disagree, your content is being interpreted differently by different cognitive architectures — the same way different audience segments will read it.
04
Physics-based scoring
Raw emotion vectors pass through a physics engine: purity (focus), intensity (strength), drag (conflict penalty), trajectory (stability). The output is a VibeScore from 0 to 1000.
The Proof
Benchmarks, not promises
0.569
Core-emotion macro-F1 on GoEmotions
n=500, seed 42. Beats the ~0.46 fine-tuned BERT baseline.
0.437
All-eight macro-F1 (we show it too)
Lower than core-4: mapping 8 emotions onto the dataset costs us. We publish it anyway.
4
Competing AI models
Anthropic, OpenAI, Google, xAI — different training, same test
0–1000
VibeScore range
Centered at 500; valence sets direction, signal sets strength, drag penalizes conflict
The Framework
Eight emotions,
digitized.
Our measurement framework identifies eight primary emotions (Plutchik's basis) arranged in opposing-valence pairs. When a pair points in opposite directions and both are active, the conflict creates drag and pulls the reading toward neutral. Each emotion is just an intensity from 0 to 1 — there are no frequencies, no sound, no waveforms. Only the structure of the feeling.
Emotion
Opposing Pair
Valence
Group
Joy
Sadness
Positive
Constructive
Trust
Disgust
Positive
Constructive
Fear
Anger
Negative
Reactive
Surprise
Anticipation
Neutral
Dynamic
Sadness
Joy
Negative
Reflective
Disgust
Trust
Negative
Reactive
Anger
Fear
Negative
Reactive
Anticipation
Surprise
Positive
Constructive
The Physics
The VibeScore formula
VibeScore = 500 + Valence × Signal × (1 − Drag/100) × 500
Signal = Purity × 0.6 + Intensity × 0.4
Valence (direction)
Which way the feeling points, −1 to +1. Each emotion carries a signed weight; surprise borrows the valence of its neighbors. This is why grief reads low and joy reads high — a plain average can't tell them apart.
Signal (strength)
Purity × 0.6 + Intensity × 0.4. Purity is the normalized standard deviation — a concentrated signal rather than a muddled one; Intensity is the peak emotion. Strength without direction is just volume.
Drag (penalty)
25 points per active opposite-valence pair (max 100). Joy + Sadness conflict and pull toward neutral; Fear + Anger share a direction and compound, so they do not. The bittersweet case is the classic drag.
Stable
Drag < 20
Clean signal, no active conflicts
Wobble
20 ≤ Drag < 50
Minor conflicts, message is mixed
Decaying
Drag ≥ 50
Multiple conflicts, signal is degrading
First score is free · No signup required