A stored table of niche keywords with search volume, difficulty, CPC, search intent, which competitor holds the best position, and a throughput score. It is built by pulling every keyword the relevant competitors rank for in the top 30, folding in keyword ideas seeded from the site's own tracked terms, filtering out everything that isn't post-frame, and scoring what's left. Each row also carries the roadmap stage that unlocks it and a 12-month seasonal profile.
Also called: keyword research · keyword mining · what should I rank for · keyword database
- 1Competitors are ranked by estimated traffic value; the top twelve with relevance other than 'low' are mined.
- 2rankedKeywords() pulls up to 300 terms per competitor, filtered to positions 30 and better, ordered by volume.
- 3keywordIdeas() seeds from the site's own tracked keywords so gaps the competitors miss still get found.
- 4Everything is folded into one pool keyed by keyword, keeping the best position and the domain that holds it.
- 5inNiche() drops anything outside post-frame; throughput() scores the survivors; stageFor() assigns the unlock stage.
- 6Rows are upserted into seo_keyword_universe on (site_id, keyword), so re-mining refreshes rather than duplicates.
The module's own header states the problem: "mine every keyword worth ranking for in the post-frame niche, score each by THROUGHPUT (traffic won per unit of effort), gate them behind roadmap STAGES that unlock as the site earns authority." Before it existed, keyword choice was a person's guess in a spreadsheet — which meant the site kept attacking terms it could not win, and terms competitors were quietly making money on were never seen at all.
- Keyword choice was guesswork with no measure of winnability.
- The terms competitors already rank for were invisible.
- A raw keyword list has no order, so work started wherever someone's eye landed.
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 →