Skip to main content
← All case studies
Workflow AutomationAI & ML·Ardent Growth

Keyword Grouper: SERP-Driven Search Intent Clustering at Scale

An automated SEO pipeline that clusters 10,000+ keywords by search intent using SERP URL overlap, surfacing content gaps and priority targets that took analysts weeks to find by hand.

PythonDjangoCelery + RabbitMQSERPAPIPandassentence-transformersSnowflakeGoogle Cloud Storage

The Problem

SEO teams sat on keyword lists thousands deep with no scalable way to answer the questions that matter: which keywords represent the same search intent, where competitors rank but the client does not, and which targets offer the best traffic opportunity for the effort. Manual analysis of a large keyword set took weeks per engagement.

Intent is the hard part. Two keywords with different words can serve identical intent, and semantic similarity alone misjudges it—what actually reveals intent is what Google chooses to rank. But using that signal means fetching and comparing full SERP results for every keyword in the set, which is exactly the volume of work manual research cannot do.

What We Built

We built an automated pipeline that fetches 100 SERP results per keyword via SERPAPI with 100-thread concurrent processing, then groups keywords by URL overlap—seven or more common results marking shared intent—so clusters reflect how Google actually interprets queries rather than how the words look. Priority scoring combines search volume quartiles, value opportunity, and current ranking percentage into a Fibonacci-weighted score that surfaces quick wins, while traffic estimation applies position-based CTR curves to translate rankings into expected visits.

The pipeline is engineered for long unattended runs: snapshot checkpoints every N keywords persist to Google Cloud Storage so failed jobs resume from the last good state, and finished analyses upload to Snowflake in 15K-row batches for BI dashboards and historical trend tracking. Content-gap detection flags groups where competitors rank and the client does not; cannibalization detection flags multiple client pages competing for one intent.

Intent clustering from SERP overlap

Keywords sharing 7+ of their top 100 Google results are grouped as one intent, using the search engine’s own judgment as the clustering signal instead of surface word similarity.

Content gap and cannibalization detection

The pipeline flags intent groups where competitors rank and the client is absent, and groups where multiple client pages compete against each other for the same intent.

Opportunity-ranked prioritization

Fibonacci-weighted scoring across volume, value, and current rankings—paired with CTR-curve traffic estimates—orders the output by expected payoff, not alphabetically.

Resumable high-concurrency processing

100-thread SERP fetching with snapshot checkpoints to cloud storage means a 10,000-keyword run survives failures and resumes instead of restarting.

How It Works in Practice

An SEO strategist starting a new engagement with a 10,000-keyword export and a deadline for the content roadmap.

  1. 1

    Load and fetch

    The keyword set enters the pipeline, and concurrent workers pull 100 SERP results per keyword, checkpointing progress as they go.

  2. 2

    Cluster by intent

    URL-overlap analysis collapses thousands of keywords into intent groups—each one a single piece of content to write, not dozens of scattered targets.

  3. 3

    Score the opportunities

    Each group gets a priority score and a traffic estimate from CTR curves, with content gaps and cannibalization conflicts flagged automatically.

  4. 4

    Deliver the roadmap

    Results land in Snowflake for dashboards, and the strategist walks into the kickoff with a prioritized, evidence-backed content plan instead of a spreadsheet of hunches.

Screenshots

The job dashboard: SERP fetching, intent grouping, and combined runs tracked to completion.
The job dashboard: SERP fetching, intent grouping, and combined runs tracked to completion.

Engineering Approach

Let Google define intent

SERP URL overlap is a direct observation of how the ranking system interprets a query—clustering on it produces groups a content strategist can act on without second-guessing.

Built for unattended scale

Checkpointed, resumable jobs with lock-synchronized shared state make multi-hour, 10,000-keyword runs routine rather than fragile.

Outputs that plug into decisions

Priority scores, traffic estimates, and Snowflake delivery mean the pipeline ends where strategy begins—no manual post-processing between analysis and roadmap.

Have a similar problem?

Tell us what you're working on and we'll tell you honestly whether we can help.

Copyright © 2026 Datum Brain

facebookinstagramlinkedintwitteryoutube