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.

01

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.

02

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

03

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

04

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

Score Something Now

First score is free · No signup required