Skip to content
tezvyn:

Design a system to detect keyword cannibalization

Source: yoast.comHardHow cards are made

Design a system to detect keyword cannibalization
Summary

Whether you can distinguish search-intent overlap from keyword duplication at scale.

Key points

Query-page-position data, intent clustering, and rank volatility.

Watch out for

exact-keyword deduplication without modeling intent or CTR.

What's really being asked

This question tests whether you can design a production-grade detection system that goes beyond string matching. Interviewers want to see if you understand that cannibalization is an intent problem, not a keyword problem. They are looking for data modeling skills, specifically how you join Search Console data with internal content metadata, and whether you account for Google's query interpretation rather than just surface-level term duplication. The scope is large-site architecture, so they also care about computational efficiency and how you avoid false positives.

The full answer

First, define the data model. You need Search Console data at the query-page level including queries, landing pages, impressions, clicks, average position, and click-through rate over time. Second, explain intent clustering. Group pages by the queries they rank for, but cluster semantically similar queries using embeddings or at least n-gram overlap, because exact match misses synonyms and long-tail variants. Third, identify the cannibalization signal. Look for queries where multiple unique URLs from the same domain appear in the results, especially when those URLs swap positions across days or when their combined CTR is lower than expected for their average rank. Fourth, add severity scoring. A query with two pages at positions 3 and 5 is different from two pages at 18 and 22; the former is active cannibalization, the latter is just poor targeting. Fifth, outline the action layer. Flag pages for merging, canonicalization, or re-optimization based on which page has stronger backlinks, conversion value, and content depth.

The mistakes people make

A red flag is suggesting you simply find pages sharing the same meta keywords or title tags. Another is ignoring temporal dynamics; cannibalization often shows up as URL swapping in Search Console, not static overlap. Some candidates propose deleting the lower-performing page without analyzing whether it serves a distinct segment of the intent spectrum. Proposing a single global rule, like one page per keyword stem, ignores that large sites legitimately target the same term with different intent layers such as transactional versus informational.

What usually comes next

How would you reduce false positives for sites with faceted navigation or parameterized URLs? How do you handle seasonal queries where Google legitimately rotates product and blog content? What is your merge versus noindex decision framework? How would you validate that a fix actually worked?

A concrete example

Suppose an e-commerce site has two URLs ranking for readability ranking factor and does readability rank. A good system clusters these queries under the same intent vector, notices that URL A and URL B swap between positions 4 and 9 weekly, and sees that their combined CTR for the cluster is 2.1 percent despite an average position of 5.5. The system flags this as high-severity cannibalization and recommends merging the weaker post into the stronger one, then redirecting.

Interview question

When building a production-grade cannibalization detector, which signal pattern best identifies active intent overlap requiring intervention?

  • a.Two landing pages rank for the exact same query string and one consistently outranks the other by 15 positions
  • b.An intent cluster analysis reveals two pages where the lower-converting page has weaker backlinks and shallower content
  • c.Pages targeting the same keyword stem have similar title tags but rank in positions 18 and 22 without position volatility
  • d.Search Console data shows multiple domain URLs appearing for semantically clustered queries, swapping positions over time, with combined CTR below expectation for their average rankCorrect
Why?

The correct answer captures the three-part production signal: semantic query clustering, temporal URL swapping, and combined CTR underperformance relative to average rank. Option C is tempting because it cites rank depth, but static positions far apart indicate poor targeting rather than active cannibalization.

Just read this? Test yourself on what you have been reading.

Read the original → yoast.com

You just looked this up. Could you explain it out loud?

That is the part interviews actually test. Tezvyn takes questions like this one and gives you what the interviewer is really checking, the answer that lands, and the mistake that ends the conversation, in the four minutes before your next meeting.

The iPhone app is on the way

We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.

Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.

Get it on Google PlayiPhone app coming soon

We are hiring for this. Open roles that interview on seo — each one lists the topics its interview covers.

See open roles