AI Website Pipeline / Niche Score
Niche Score
The viability score the pipeline runs on its own candidate niches, in your browser. Six subscores, six weights that are printed rather than hidden, and a verdict that is allowed to be KILL.
Optional. Carried into the copied result so two runs can be told apart. It does not affect the score, because nothing on this page reads a SERP.
Six subscores, 0 to 100
volume sitting in the winnable KD bands
demand after SERP feature discounting
clicks surviving AI, shopping and local packs
authority spread across the top 10
intent tier against the money model
can the pipeline build what wins here
JavaScript is off, so the sliders are inert and the card shows the loaded profile. The formula, the six weights, the thresholds and two fully worked reference profiles are printed further down, so the method is auditable either way.
The sliders load with reference profile G from the layer spec, the marginal go, rounded to whole numbers. In the pipeline these six subscores are computed from SERP and volume data rather than typed in. Here you supply them, which is why this page is arithmetic rather than research.
Questions
What score is worth building?
An L01 viability score of 55 and up is GO. From 40 up to 55 is CONDITIONAL: the run proceeds but is capped at 25 pages with no budget increase, so a marginal niche gets a marginal spend. Below 40 is KILL and the run halts there. Neither threshold was picked. Both are consequences of two reference profiles that are printed below with their arithmetic.
Where do the weights come from?
They are declared constants in the layer specification, mirrored in the pipeline config so a deployment can override them without editing the spec. Nothing fitted them to outcomes. Nothing could have, because no outcomes have been measured. Each weight carries a written justification instead, which is a weaker claim than a regression and an honest one.
Does a high score mean the page gets traffic?
No. The score is an input to one decision, whether to start a run. It is not a forecast of traffic, rankings or indexation, and nothing here should be read as one. Six numbers you set yourself can't know what a search engine is going to do.
Why is competitor displaceability weighted below accessibility?
Because it partly duplicates it. Difficulty already encodes some of the same competitive signal, so weighting C at the level of A would count one fact twice and flatter every SERP with a soft top ten. The same logic puts format buildability last: it is nearly always high, and it exists to catch the video and user-generated niches where it collapses and correctly drags the score down.
0.9 clear of the 55 GO threshold. That is a decision to start a run, not a statement about traffic, rankings or indexation.
Weights sum to 1.00 exactly. Largest contribution: SERP capture headroom, 12.48 of a possible 16.00. Largest shortfall: difficulty accessibility, 15.60 unclaimed of 26.00.
Weights: A 0.26, V 0.24, S 0.16, C 0.14, M 0.12, B 0.08. GO at 55, KILL below 40. See how the score is computed, or read the full method.
How the score is computed
Every number on this page shows its inputs, including the ones that argue against building. The formula is below in full, the six weights are below in full, and the arithmetic runs in your browser with nothing sent anywhere. If you disagree with a weight you can see exactly which one, and by how much.
VIABILITY = 0.26*A + 0.24*V + 0.16*S + 0.14*C + 0.12*M + 0.08*B
weights: 0.26 + 0.24 + 0.16 + 0.14 + 0.12 + 0.08 = 1.00
decision: score < 40 KILL the run halts
score < 55 CONDITIONAL capped at 25 pages
otherwise GO
Every subscore is an integer from 0 to 100 that you set.
The weights are held as integer hundredths, so the six
contributions and the total are exact at two decimals.
The numeral above is that total rounded to one decimal,
which is how the layer reports a score. The verdict is
evaluated on the exact total, and the table is what to
check by hand.
The six weights
The weights are declared constants. They are not fitted to outcomes, and no measured result sits behind them, because this product has no measured outcomes to fit against. Claiming a fit would be the exact failure the pipeline exists to catch. Each weight has a written reason instead, printed above, and you're free to reject any of them. The thresholds are different. Those are derived, and the derivation is below.
The thresholds, and where they come from
Both thresholds are consequences of two reference profiles rather than round numbers somebody liked. Profile K is a niche at the edge of unbuildable. Profile G is a niche that is genuinely thin but worth building. They score 39.1 and 56.0, so the kill threshold sits immediately above K and the conditional threshold immediately below G. Changing a threshold without re-deriving the profiles is a configuration error, not a preference.
REFERENCE PROFILE K, the kill boundary
V = 24.5 0.24 * 24.5 = 5.88
A = 17.8 0.26 * 17.8 = 4.63
S = 62.4 0.16 * 62.4 = 9.98
C = 21.9 0.14 * 21.9 = 3.07
M = 69.4 0.12 * 69.4 = 8.33
B = 90.0 0.08 * 90.0 = 7.20
SCORE = 39.1 KILL
REFERENCE PROFILE G, the marginal go
V = 49.0 0.24 * 49.0 = 11.76
A = 40.3 0.26 * 40.3 = 10.48
S = 77.8 0.16 * 77.8 = 12.45
C = 36.9 0.14 * 36.9 = 5.17
M = 71.3 0.12 * 71.3 = 8.56
B = 94.8 0.08 * 94.8 = 7.58
SCORE = 56.0 GO
Kill threshold 40, immediately above K.
Conditional threshold 55, immediately below G.
The sliders on this page load profile G rounded to whole
numbers, which scores 55.94 rather than 56.0. The spec
carries one decimal per subscore and these sliders carry
none. That difference is the rounding, not a disagreement.
The score is not the only way a real run stops, and this page cannot show you the other ways. Four kill guards are evaluated independently of it, and any one of them forces a KILL regardless of how high the number is, because a high score computed on unusable data is worse than no score: it is actionable and wrong. Separately, if the confidence interval around the score straddles 40, the decision is neither GO nor KILL but INCONCLUSIVE: the sample doubles and the layer runs again, at most twice, and then kills rather than shipping a site on a coin flip.
None of that is available here, because this page has no data, only your six numbers. Treat it as the arithmetic, not the whole decision.
Source for the weight vector, the thresholds and both reference profiles: layers/L01-niche-research/LAYER.md sections 8 and 12.1, mirrored in pipeline.config.json under the l01 key. The layer is the authority. If a constant on this page disagrees with the repository, the page is stale and the repository wins.
Why this page is a tool and not an article
Every site this pipeline produces has to carry at least one element that cannot be reproduced by rewording somebody else's page: original data, a working tool, or a first-hand observation. A site without one is a candidate for the scaled content policy, and deserves to be. This calculator is that element for this site.
So it computes for real. There's no mock-up state, no blurred result behind an email field, and no version of this page where the answer is always yes. Drag accessibility and volume down and the same card will tell you to kill the run, in amber, at the same size it uses to approve one.