The Proof · vibescore.v3

How it works.
And how we know it holds.

VibeScore reads the emotional content of a message and returns a number from 0 to 1000. The interesting question is not whether the number looks right once. It is whether it reads the full range correctly, and whether it stays consistent across tens of thousands of messages. Here is the mechanism, the key scores, and the shape of the data. We measure the message as written. We do not rank human worth.

01 · The mechanism

Eight emotions. Four models. One number.

Substrate

Each message is measured across Plutchik’s eight primary emotions — joy, trust, anticipation, surprise, fear, sadness, disgust, anger — from 0.00 to 1.00.

Consensus

Claude, GPT-4o, Gemini, and Grok each measure independently. The four readings are averaged; the receipt stamps how many agreed.

Projection

The averaged vector is valence-weighted into a single 0–1000 reading. Opposed emotions create drag; pure emotions read clean.

Receipt

Every score ships with its math: valence, signal, drag, purity, intensity, trajectory. The number never claims more than the receipt shows.

The scale is anchored: a message with no emotional signal reads 500; maximal positive reads 1000; maximal negative reads 0.

02 · The key scores

It reads the whole range — in the right direction.

Eight reference messages, ordered top to bottom. These are validated fixtures — the regression suite fails if any one drifts. Celebrations sit high, civic and utility content sits in the middle, tragedy sits low. The direction is never inverted.

917
Apple WWDC — “One more thing.”
anticipation + joy · Product reveal at peak hype.
915
Zelda trailer at E3
anticipation + surprise · Pure audience elation.
862
Cancer-free after treatment
joy + trust · Relief that earns the top band.
854
Costco — 93% membership renewal
trust · Quiet, durable confidence.
772
JFK — “Ask not what your country…”
trust + anticipation · Civic resolve, not euphoria.
633
Amazon — “Your package was delivered.”
trust · Mild, transactional positive.
89
School shooting — breaking news
fear + sadness · Tragedy, read as tragedy.
54
“For sale: baby shoes, never worn.”
sadness · Six words of grief — bottom band.
03 · Consistency at scale

36,775 production reads. One stable shape.

News headlines, posts, and calibration content, each read by four models and scored through vibescore.v3. The distribution is bell-shaped, centered near the midpoint, with both tails populated — not flattened to the middle, not forced to the extremes. The middle is the layered majority; the extremes are rare and earned.

2,3624,7247,0859,4472785298911,3712,0193,5997,9559,4474,6892,4561,299976755359MEAN 50702004006008001000VIBE-SCORE · 0 → 1000
373 · 1%
4,810 · 13%
25,681 · 70%
5,481 · 15%
430 · 1%
Distribution shape
Items
36,775
Mean
507
Median
506
Std Dev
115
Range
54967

Mean and median within a point of each other — the curve is symmetric, not skewed by a few loud outliers.

What got scored
news headlines36,354
tweets286
calibration151
Period · Oct 2025 → today · production database

And consistent within a kind of content — each category holds its own baseline:

643
Apple product ads
Aspirational, controlled
611
Super Bowl spots
Broad crowd-pleasers
350
Public service ads
Built to unsettle
04 · The data, by segment

Real reads from the 36,775 — with their eight components.

The curve above is the shape. This is the substance underneath it: actual scored headlines from the production corpus — two from each segment of the distribution — each shown with the exact eight-emotion vector the four models agreed on. The score is not a mood label; it is these eight numbers, valence-weighted into one. Read across a row and you can see why each one landed where it did.

The low tail≤ 175
One strong negative emotion, little else. Rare — the bottom is earned.
156
All the Sad Young Chinese Professionals
sadness · 100% agreement
Joy
0.00
Trust
0.00
Antic
0.00
Surpr
0.00
Fear
0.00
Sad
0.72
Disg
0.00
Anger
0.00
170
Slot: Liverpool defeat to Brighton ‘hurts a lot’
sadness · 100% agreement
Joy
0.00
Trust
0.00
Antic
0.00
Surpr
0.00
Fear
0.00
Sad
0.69
Disg
0.00
Anger
0.00
Low250–345
A clear negative lean — injury, fear, loss — without the extremes.
260
Season over for Lamine Yamal after muscle injury
sadness · 100% agreement
Joy
0.00
Trust
0.00
Antic
0.00
Surpr
0.00
Fear
0.00
Sad
0.50
Disg
0.00
Anger
0.00
281
For Tyriq Withers, ‘Reminders of Him’ Was His Scariest Role to Date
fear · 100% agreement
Joy
0.00
Trust
0.00
Antic
0.00
Surpr
0.00
Fear
0.65
Sad
0.00
Disg
0.00
Anger
0.00
Mid-low380–450
Mixed signals pulling toward the middle — sometimes grief and joy at once.
440
‘Tough day’: Flick mourns dad as Barça win LaLiga
sadness · 98% agreement
Joy
0.39
Trust
0.05
Antic
0.01
Surpr
0.03
Fear
0.01
Sad
0.70
Disg
0.00
Anger
0.00
438
Iran Fears Postponed Attack Is Merely Disaster Delayed
fear · 99% agreement
Joy
0.00
Trust
0.00
Antic
0.66
Surpr
0.00
Fear
0.83
Sad
0.04
Disg
0.00
Anger
0.00
The center488–538
Valence-neutral signal — surprise or mild anticipation alone lands near 500.
500
‘I was shocked’: Rajinikanth on Vijay becoming Tamil Nadu CM
surprise · 100% agreement
Joy
0.00
Trust
0.00
Antic
0.00
Surpr
0.81
Fear
0.00
Sad
0.00
Disg
0.00
Anger
0.00
532
Will Rohit Sharma play today for Mumbai Indians vs LSG?
anticipation · 100% agreement
Joy
0.00
Trust
0.00
Antic
0.11
Surpr
0.00
Fear
0.00
Sad
0.00
Disg
0.00
Anger
0.00
Mid-high600–680
Mild positive blends — trust and anticipation, low intensity.
614
Let the public share in the rewards of artificial intelligence
anticipation · 99% agreement
Joy
0.10
Trust
0.22
Antic
0.30
Surpr
0.00
Fear
0.00
Sad
0.00
Disg
0.00
Anger
0.00
622
What’s Coming to Disney+ in April 2026
anticipation · 99% agreement
Joy
0.01
Trust
0.03
Antic
0.41
Surpr
0.00
Fear
0.00
Sad
0.00
Disg
0.00
Anger
0.00
High720–805
Strong, multi-emotion positive — joy, trust and anticipation together.
778
Live: Broncos set for victory over Dolphins, ending tough week on a high
joy · 99% agreement
Joy
0.74
Trust
0.45
Antic
0.63
Surpr
0.04
Fear
0.01
Sad
0.06
Disg
0.01
Anger
0.01
785
Scientists discover molecule that stops aggressive breast cancer in its tracks
anticipation · 99% agreement
Joy
0.64
Trust
0.54
Antic
0.68
Surpr
0.45
Fear
0.05
Sad
0.01
Disg
0.01
Anger
0.01
The high tail≥ 850
Broad and intense positive across several emotions at once. Also rare.
874
Four holes-in-one as 8yo steals show on Masters eve
surprise · 98% agreement
Joy
0.74
Trust
0.08
Antic
0.45
Surpr
0.74
Fear
0.00
Sad
0.00
Disg
0.00
Anger
0.00
913
Teacher Donates Entire $50M Lottery Win to Build Free College
joy · 98% agreement
Joy
0.82
Trust
0.76
Antic
0.56
Surpr
0.74
Fear
0.00
Sad
0.00
Disg
0.00
Anger
0.00

Eight components, 0.00–1.00, as scored under vibescore.v3 · news headlines only · production snapshot, May 2026. The dominant emotion is highlighted; the rest are shown in full, zeros included.

05 · Why it stays consistent

It scores the language, not the event behind it.

One event — Germany beating Brazil 7–1, 2014 — written four ways. Same scoreboard, four different emotional readings. That is not the engine being inconsistent; it is the engine being precise. It reads the framing it was given. Consistency comes from determinism on the input text, not from a guess about the world.

107
“A national humiliation. Brazil’s darkest night.”
463
“Brazil fell 7–1 to Germany in the semfinal.”
596
“Germany advanced past Brazil, 7–1.”
903
“Germany’s historic 7–1 demolition — a masterclass.”

A 796-point spread on one scoreboard. The answer to “but from the other side?” is never “the engine got it wrong” — it is “the engine read the words you gave it.”

06 · Don’t trust us — check it

The math is public. The corpus is public. Run it yourself.

The whole point of a standard is that anyone can audit it. The validation repository holds the benchmark corpus, the scored examples, and the engine itself — a plain-JavaScript port you can run in a browser tab to confirm the arithmetic on any input.

07 · What we don’t claim

The honesty is the moat.

VibeScore is a measurement, not a verdict. It does not predict whether an ad will sell, whether a post will go viral, or whether a person is good. It reports the emotional content of a message as four models read it, and shows the math.

We are not chasing a single accuracy score to wave around. A number you optimize toward stops measuring the thing — so the design goal is a transparent, checkable read, not a leaderboard win. When we recalibrate, the version stamp changes; nothing moves silently.

Transparency, not promise. We might be wrong — but we showed our work, and you can check it.