Every Brandioz score is the direct sum of measurable signals extracted from your site's HTML. No hand-waving. Every point is traceable.
Component weights
Max points per dimension — total 100
Signal sub-weights
Contribution of each signal to total score
A HistGradientBoosting model trained on 94 full-quality renders with pure Python ground truth labels — TF-IDF semantic consistency, information density, structural completeness, and schema coverage. Completely independent of the heuristic scorer.
Production blend
score = 0.6 × ml + 0.4 × heuristic
6.16 pts
LOO MAE
leave-one-out CV
r = 0.692
LOO Pearson
on held-out sites
r = 0.843
GT Correlation
heuristic vs labels
r = 0.843
H ↔ GT corr
heuristic vs labels
Feature importance
What the model learned to prioritise
Curve scores (deep/imm/scroll) = 52.1% of decisions. AI comprehension requires progressive clarity, not just strong metadata.
Content depth curve
Points earned vs word count — climbs fast at first, then slows down
content_richness
Does the site get clearer the more you read?
How deeply an AI can understand the site across progressive reading depths.
↑ deep_score, scroll_score, imm_score
explicitness
Does the site use enough plain written words to explain itself?
Volume and structure of explicit written content.
↑ word_count_norm, heading_confidence
structural_clarity
Are sentences clear and is the site's purpose obvious?
Clarity of intent and sentence-level readability.
↑ intent_confidence, description_confidence, value_prop_confidence
understanding_speed
How quickly can an AI 'get' what the site is about?
How fast an AI reaches a clear understanding.
↑ sentence_length_score, scroll_score, imm_score
4 components → 79.6% variance explained
remaining 20.4% = site noiseScree plot — how much each component adds
We chose 4 components because the 5th barely adds anything (5.1%). The elbow is at 4.
Feature loadings matrix
How much each signal pushes each dimension up (+) or down (−)
| Signal | PC0content_richness | PC1explicitness | PC2structural_clarity | PC3understanding_speed |
|---|---|---|---|---|
| deep_score | +0.496 | -0.014 | -0.168 | +0.014 |
| scroll_score | +0.489 | -0.037 | -0.244 | +0.080 |
| imm_score | +0.477 | -0.003 | -0.276 | +0.053 |
| title_confidence | +0.301 | -0.291 | +0.249 | -0.081 |
| value_prop_confidence | +0.262 | +0.145 | +0.334 | -0.262 |
| description_confidence | +0.189 | -0.338 | +0.360 | -0.195 |
| heading_confidence | +0.205 | +0.418 | -0.094 | -0.387 |
| intent_confidence | +0.106 | -0.029 | +0.636 | -0.092 |
| sentence_length_score | +0.102 | +0.313 | +0.286 | +0.659 |
| word_count_norm | -0.084 | +0.529 | +0.021 | -0.444 |
| semantic_density_norm | -0.147 | -0.473 | -0.193 | -0.295 |
Understanding curve scores (imm/scroll/deep) dominate PC0 with loadings > 0.47 — the strongest PCA dimension is driven entirely by progressive AI comprehension, not metadata.
PC0 vs PC1 — training site positions
content_richness (x-axis) vs explicitness (y-axis)
Low PC0 = AI struggles even after full read. Low PC1 = site lacks plain explicit language. Both axes required for strong AI visibility.
Heuristic vs ML vs Ground Truth
15 sites across the score range — ML pulls inflated heuristic scores toward ground truth
Heuristic over-scores brand-forward sites (Anyscale +25, Stripe +17, Retool +32). ML corrects by weighting the understanding curve more heavily (52% of decisions).
Stripe vs Vercel — signal radar
How two strong developer sites compare signal by signal
Stripe's hero and description are near-perfect. Vercel has solid structure but weaker progressive understanding — explaining the gap.
Dominant weakness distribution
Most common PCA weakness across 15 representative sites
understanding_speed is the most common weakness — most sites have decent structure but AI takes too long to reach clarity.
title_confidenceStructureIs the page title descriptive enough for an AI to know what you do?
Word count, product category words (platform, tool, ai), and benefit descriptors. H1 compensates if title is brand-only.
description_confidenceStructureDoes the meta description explain your product clearly in 50–160 chars?
Meta description scored for capability language, audience terms, and optimal length (50–160 chars).
heading_confidenceStructureDo the headings form a logical hierarchy and cover diverse topics?
H1 presence, no level skips, plus semantic diversity via TF-IDF cosine across all headings.
hero_confidenceStructureDoes the hero section explain what you do, or is it just a tagline?
Hero section word count, category and benefit language. Penalises repetitive or nav-polluted text.
value_prop_confidenceValue PropositionCan an AI identify your product type, who it's for, and why it's useful?
Pattern-matches product type, target audience, and benefits in hero and title (3× weight) and full page text.
high_info_ratioSemantic QualityWhat fraction of sentences actually say something useful vs filler?
Fraction of sentences above informativeness threshold. Scored on action verbs, numbers, AI phrases, unique word ratio.
breadth_scoreContent DepthDoes the page cover multiple distinct topics, or just repeat the same idea?
Clustering on paragraph vectors to count distinct topic clusters, normalised to expected count for site type.
avg_sentence_lengthSemantic QualityAre sentences the right length? Too short = choppy. Too long = hard to parse.
Mean words per sentence. Ideal 15–20 words. Gaussian penalty in both directions.
imm_scoreUnderstandingFirst impression — how much does an AI understand from just the hero section?
BFS traversal score at hero/top-level depth.
scroll_scoreUnderstandingMid-read — does understanding improve as the AI reads further down the page?
BFS traversal score at mid-depth sections. Clarity after reading past the hero.
deep_scoreUnderstandingFull-read — at peak comprehension, how well does an AI understand the site?
BFS traversal score at full depth. Single most important feature (19.1%).
Every number in Brandioz is computable from the raw HTML of your site. The weights on this page are the exact weights in production.
If a score is worth trusting, you should be able to understand exactly how it was computed — signal by signal, weight by weight.
Production formula
score = ( title_conf × 10 # structure + desc_conf × 10 + hero_conf × 8 + heading_conf × 5 + log(words, 22) # content depth + info_score × 12 # semantic quality + sent_score × 4 + diversity × 6 + value_prop × 18 # value prop + hierarchy × 5 - curve_penalty # understanding curve ) final = 0.6 × ml + 0.4 × heuristic # coherence engine may override