Tisha Mendes · Santarém

Methodology · open-source

The editorial coherence score computed.

The score is a single number between 0 and 100. It is computed locally in the visitor's browser. Nothing is sent to a server. The formula is published below.

The formula.

score = 100
      − (palette_entropy   × 30)   
      − (typeface_variance × 25)   
      − (image_density_outlier × 15)
      − (saturation_outlier × 20)  
      + hue_bucket_modifier        

      clamped to 0–100

Each variable, plainly.

Palette entropy
The extracted colours are binned into 12 hue ranges of 30 degrees each. Shannon entropy is computed on the distribution. Normalised 0 to 1. More entropy = colours scattered across the spectrum = weaker visual cohesion.
Typeface variance
One or two type families = 0. Three = 0.5. Four or more = 1. The penalty assumes editorially mature brands work within disciplined type pairs.
Image density outlier
Currently set to 0 in this version. Reserved for a future iteration that measures inconsistent image density across the visited landing page.
Saturation outlier
Measured as the gap between the most saturated extracted colour and the mean saturation across all colours. A gap of 50 saturation points scores 1.0. Penalises a single hyper-saturated colour amid an otherwise muted palette.
Hue bucket modifier
The matched bucket (12 total) brings its own signal — some palette choices sit higher than others in editorial defensibility. Range: −12 to +5.

Reading the result.

  • 75 and above · coherent editorial system
  • 50 to 74 · fragmented at two or three points
  • 25 to 49 · inconsistent · clear opportunity
  • below 25 · no detectable editorial system

The score is one signal among others. It does not replace judgment. The reading paragraph beside it is doing most of the work.

Source code reference: see src/lib/score.ts and src/content/readings.json in the public repository.