AI SEO In Detail › Module C · Demand and Keyword Research › Episode 21
Keyword Intent Classification at Scale
Episode 21 of AI SEO In Detail, a free course in practical SEO analysis: Keyword Intent Classification at Scale.
Video coming soonThis episode is scripted and in production. The transcript below is the script as written; it may change before the video is published.
Full transcript
972 words · script draft, under review.
Intro
You have eight thousand keywords for a coffee equipment shop. Some are people learning. Some are comparing. Some are ready to buy. And each group needs a different kind of page.
Labeling them by hand would take days. Skipping the labels means you'll build the wrong pages for half of them.
In this episode I'll show you a two-step method: simple rules for the obvious cases, then an AI classifier with a fixed set of labels for the rest. It's fast, it's cheap, and, importantly, it's honest about what it doesn't know.
What intent is, and which labels to use
Search intent is the reason behind a search. What does this person want to get done?
I use four labels. Informational: they want to learn something. Commercial: they're comparing options before buying. Transactional: they want to buy or act now. And navigational: they want a specific site or brand.
You can add more, like local, if your business needs it. But keep the set small and fixed. Every label you add makes the boundaries fuzzier, and fuzzy labels make the whole dataset less useful.
One more thing. Classifying from the keyword text is a guess about intent. The real evidence is the results page: what kind of pages Google actually ranks. We'll do that in episode thirty. Today is the fast first pass, so we know where to look.
Step one: rules for the obvious cases
Start with rules. Many keywords carry a modifier that gives the intent away.
Question words like how, what and why usually mean informational. Words like best, versus, review or top mean someone is comparing. Buy, price, cheap, coupon or "near me" signal they're ready to act. And brand names, yours or a competitor's, often mean navigational.
A short script with a list of patterns handles this in seconds. Two details matter. Match whole words, so "buy" doesn't fire on "buyer's guide". And when a keyword matches two rules, like "best price", don't pick one. Mark it as a conflict and send it to step two.
In my experience, rules catch a decent part of a typical list. The rest has no clear modifier. "Burr grinder" on its own could be any of three intents. That's where the classifier comes in.
Step two: an AI classifier with a fixed label set
For the remaining keywords I use a language model, through Claude Code. The way you set it up decides whether the output is useful or noise.
Give it a fixed label set. The exact four labels, each with a one-line definition. Plus one escape label: "unclear". The model must pick from that list and nothing else.
Give it examples. Three short examples per label, taken from your own list, are worth more than a long explanation.
Ask for structured output. One line per keyword: the keyword, the label, and a confidence of high, medium or low. Structured output can be checked by a script. Free text can't.
Send the keywords in batches, around a hundred at a time. Then validate every answer automatically. Is the label one of the five? Is every keyword in the batch returned, exactly once? Anything that fails is re-sent. Store the result in your database with the label, the confidence and where it came from: rule or model.
Checking the classifier
Never trust the output without a check. Take a random sample, fifty rows is fine, and label them yourself without looking at the model's answer. Then compare.
If you agree on most of them, good. Then look at where you disagree. It's almost never random. Usually it's one boundary, often commercial versus transactional. Fix the definition or add an example for that boundary, and rerun only the uncertain rows. Write down the agreement rate with the date and the prompt version. That's your quality baseline for the next run.
And respect "unclear". It's not a failure. A keyword the model can't classify from text alone is exactly the kind you should check on the results page. Those go straight onto your SERP list.
Keeping it repeatable
A classification you can't repeat is a classification you can't trust. So three habits.
Version the prompt. Save the label definitions and the examples in a file, give it a version number, and store that number with every label. When you change a definition, you know exactly which rows were labeled under the old one.
Label only what's new. Next month your keyword list grows. Run the rules and the classifier on the new rows only. Don't relabel everything, or your numbers will shift for reasons that have nothing to do with the market.
And allow one label per keyword. Some keywords really do have two intents. "Burr grinder" can be a comparison or a purchase. It's tempting to allow two labels. But for planning pages, one primary label is easier to act on. If the model says it can't choose, that's "unclear", and the results page will settle it later.
What you do with the labels
Now you can group. Intent maps roughly to page type. Informational keywords want guides. Commercial ones want comparisons and reviews. Transactional ones want product or category pages. Navigational ones you mostly leave alone unless the brand is yours.
That gives you a first map of what kinds of pages your keyword list asks for. And it's a hypothesis, not a verdict. Before you build anything, you confirm it against the SERP. A label from text tells you where to look. The results page tells you what's true.
A last tip: some keyword tools, including DataForSEO's Labs, offer their own intent labels. Useful as a second opinion. But you can't see or change their definitions, so I keep my own labels as the main column.
Wrap-up
Rules for the obvious, a fixed-label classifier for the rest, a sample to check it, and the SERP as the final judge. The rule list and the classifier prompt are linked in the description. Next episode: using cost per click to rank keywords by what they're worth. See you there.