A pure function: expected traffic × winnability² × intent value × a money multiplier. Winnability is (100 − difficulty)/100 squared, so difficulty is punished non-linearly. Intent weights transactional and commercial at 1.0, informational at 0.6 and navigational at 0.25. CPC adds up to 30% on top. The result is what the roadmap, the planner and the writer all sort by.
Also called: keyword priority score · keyword difficulty weighting · which keyword first
- 1throughput({volume, difficulty, intent, cpc}) returns a single number, higher = attack sooner.
- 2Winnability is squared so a difficulty-60 term scores a fraction of a difficulty-20 term at the same volume.
- 3priorityNow() multiplies the throughput score by the forward-looking seasonal factor, and that is the number every queue sorts by.
- 4Because it is a pure function, the score can be recomputed whenever fresh volume or difficulty lands, without re-mining.
Volume alone is a trap: the biggest terms are the ones nobody young can win. The comment states the intent plainly — "Throughput score: expected traffic × winnability² × intent value. Higher = attack sooner." Squaring winnability was deliberate, because a linear penalty still let hopeless head terms float to the top of the list on volume alone.
- Sorting by search volume puts unwinnable terms first.
- Informational and buying queries were treated as equally valuable.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →