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 arranged in opposing pairs. Each pair creates drag when both are active, the same way a wave and its inverse cancel out. We model each emotion as a waveform so the pairs can interfere; the frequencies below are labels for that math, not claims about sound or healing.
Emotion
Opposing Pair
Frequency
Group
Joy
Sadness
528 Hz
Constructive
Trust
Disgust
396 Hz
Constructive
Fear
Anger
174 Hz
Reactive
Surprise
Anticipation
639 Hz
Dynamic
Sadness
Joy
285 Hz
Reflective
Disgust
Trust
741 Hz
Reactive
Anger
Fear
852 Hz
Reactive
Anticipation
Surprise
417 Hz
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 focused tone rather than noise; 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