{{ err }}
These pages read data/index.json, data/coverage.json and data/keywords.json at runtime. Build and serve with uv run scripts/build_site.py --serve.
These pages read data/index.json, data/coverage.json and data/keywords.json at runtime. Build and serve with uv run scripts/build_site.py --serve.
Coverage is counted on primary tags only — a passing mention is not coverage. {{ gap.length }} of {{ allTags.length }} tags are mentioned at least twice as often as they are the subject; that list is further down and is the sharpest brief in the dataset.
| {{ title(rowsFacet) }} | {{ c }} | primary | mentioned |
|---|---|---|---|
| {{ r.tag }} |
Nothing is primary-tagged with both. That is the gap — and the brief.
| Tag | facet | primary | mentioned | gap | last published | read |
|---|---|---|---|---|---|---|
| {{ t.tag }} | {{ title(t.facet) }} | {{ t.primary }} | {{ t.men }} | +{{ t.gap }} | {{ t.last || 'never' }} | finder → |
Read the gap column as demand you created and did not meet. A tag near the top is one your own writing keeps raising — the articles that mention it are already doing the work of arguing it matters, and there is nothing to link to.
| Tag | facet | primary | mentioned | last published | read |
|---|---|---|---|---|---|
| {{ t.tag }} | {{ title(t.facet) }} | {{ t.primary }} | {{ t.men }} | {{ t.last || 'never' }} | finder → |
The rows where mentioned is high and primary is zero or one are the sharpest brief you have: readers are being told the topic matters and then sent nowhere.
A rising share is not more output — it is a bigger slice of it. Both sides matter: the falling half is where you used to lead.
Dormant is not automatically bad — some tags describe things that only ship once. It is bad when it describes something you sell.