This lesson brings the module down to a single artefact: a matrix comparing the entities your site covers with those of up to three competitors. It shows how to build it with the Entity Gap Matrix tool, why the unfiltered version is misleading, and how to score Coverage from the filtered one.
What this lesson covers
- Collecting competitor corpora
- The Entity Gap Matrix, step by step
- Normalising names across corpora
- Raw versus filtered comparisons
- Filtering chrome in every corpus
- Scoring Coverage
Run unfiltered, the comparison suggested the demo site’s biggest content gap was Kubernetes. The lesson uses that to show what filtering is for. It runs the same extraction pipeline over four competitor corpora — collected from editorial pages only, with robots.txt respected — then normalises surface forms so that one entity named several ways counts once. The matrix gives each entity one of four verdicts: missing, thin, shared or unique. Raw, the comparison covered 19,821 entities with 8,035 missing; filtered, 5,211 entities with 1,242 missing, and the list of names changed completely.
The central argument is that every corpus must be filtered with the same rules, not only your own. Each site carries its own chrome — navigation, buttons, newsletter boxes — and an unfiltered competitor corpus turns its chrome into apparent coverage, manufacturing gaps that do not exist. The lesson finishes by scoring Coverage from the filtered matrix only; the demo site scores one out of three. A practical follows with a script that finds and removes boilerplate text and chrome entities from each competitor dataset, and keeps a record of what was removed.
Normalisation gets its own section, because it is where most gap analyses quietly break. The demo site’s 96,469 extracted surface forms collapse to 11,854 entities, and each competitor’s corpus shrinks in the same way; without that step, the same entity written two ways appears as both covered and missing. The lesson shows how the tool normalises names and how to check it on your own data.
It also covers collecting competitor content responsibly: editorial pages only, robots.txt respected even when a crawler can ignore it, and non-editorial pages removed before comparison.
This lesson continues Module 4 of The AI-powered Entity Audit and feeds directly into prioritisation in Lesson 4.5. It suits anyone who has produced a gap analysis and wondered why half the missing topics made no sense.