Back to Tools

Micro-Moments Classifier

Use cases

Segmenting keywords by intent Prioritising transactional keywords Content strategy by intent PPC keyword intent analysis

GPT-powered classification into four intent categories: I-want-to-BUY (transactional), I-want-to-KNOW (informational), I-want-to-DO (instructional), I-want-to-GO (navigational).

Model selection: gpt-4o-mini (default), gpt-4o, gpt-4.1.

Configurable batch size (10-100 keywords per API call).

Temperature=0 for deterministic results.

1-5 confidence scoring.

Requires API Key

Platform

Python script (requires Python 3.x)

Input

OpenAI API key

Keywords via CSV or text input

Batch size: 10-100 (default 50)

Output

Excel with separate sheets per micro-moment: keyword, classification, confidence score (1-5).

View Source

Features

  • Four micro-moment categories (BUY/KNOW/DO/GO)
  • Model selection: gpt-4o-mini, gpt-4o, gpt-4.1
  • Configurable batch size (10-100 per API call)
  • 1-5 confidence scoring per classification
  • Separate Excel sheets by intent type

How to use

  1. 1 Enter your OpenAI API key
  2. 2 Select GPT model (gpt-4o-mini is the default)
  3. 3 Upload a keywords CSV or paste keywords (an uploaded file takes precedence)
  4. 4 Set batch size (larger batches risk the 4,000 output token cap)
  5. 5 Classify; keywords the model misses are added as Unclassified
  6. 6 Download CSV or Excel with a sheet per micro-moment

Frequently asked questions

Why do some keywords come back as 'Unclassified' with confidence 0?
After all batches finish, the tool compares your input list against the model's output (case-insensitively). Any keyword the model failed to return is appended as 'Unclassified' with confidence 0 rather than dropped. A common cause is the model slightly rewriting a keyword; in that case the rewritten version appears classified and your original also appears as Unclassified, inflating the row count.
Why did a whole batch fail on a large batch size?
Each API call is capped at 4,000 output tokens. With the batch size at or near the 100 maximum, long keywords plus confidence scores can exceed that cap, truncating the JSON so the entire batch errors. If you see batch errors, lower the batch size; the default of 50 is usually safe.
Which column does it use from my CSV?
It preselects the first column whose name contains 'keyword' or 'query' (any case), but you can override this in the Column Selection expander. If no column matches, it defaults to the first column, so check the selection before running.
Can I use both the CSV upload and the manual text box?
No, the upload wins. Keywords typed into the manual expander are ignored whenever a file is uploaded, so remove the file first if you want to classify a pasted list.
What do the confidence scores actually mean?
They are self-reported by the model on a 1 to 5 scale as part of the same prompt, not calibrated probabilities. Classification runs at temperature 0 so repeated runs are near-deterministic, but treat the scores as a rough triage signal for manual review, not a statistical measure.

Need something built for your business?

This tool started as bespoke client work. I build custom scripts, data pipelines, and full apps for SEO and product data problems that off-the-shelf tools don't solve.

Tell Me What You Need