Page Intent Classifier
Use OpenAI to classify page intent and expected user actions.
#about
Uses GPT-4o-mini/4o/4.1 with JSON response formatting (temperature 0.3, max 150 tokens) to classify pages.
html2text converts HTML to clean text.
Categories: signup, purchase, browse, learn, contact, compare, download, other.
CSS selector for content targeting, character limit (500-10,000).
Streamlit appRequires an API key
- Platform
- Browser-based (no installation required)
- Input
- URLs via paste or CSV uploadOpenAI API key
- Output
- CSV: intent description (≤6 words), expected action (≤3 words), category (signup/purchase/browse/learn/contact/compare/download/other).
- Category
- Content
Use cases
- Content audits by intent
- User journey mapping
- Conversion optimisation planning
- Site structure analysis
#features
- GPT-4o-mini, GPT-4o, or GPT-4.1 models
- JSON response formatting (temp 0.3, max 150 tokens)
- html2text content conversion
- 8 category classifications
- CSS selector for content targeting
- Character limit slider (500-10,000)
#how-to-use
- Enter OpenAI API key
- Select model (GPT-4o-mini recommended)
- Input URLs or upload CSV
- Optionally set CSS selector for content area
- Configure character limit and request delay
- Download CSV with classifications
#faq
- What happens if my CSS selector is wrong?
- The tool silently falls back to classifying the entire page body; there is no warning that the selector matched nothing. If classifications look like they are based on navigation or footer text, test the selector on one page in your browser dev tools first.
- How much of each page does the model actually see?
- By default the first 3,000 characters (configurable from 500 to 10,000) of the page after html2text conversion, which strips links, images, tables and emphasis. On long pages the classification is effectively based on the top of the page, so raise the limit if key intent signals (pricing tables, forms) sit lower down.
- Is the category guaranteed to be one of the eight listed?
- Almost always, but not strictly. The API's JSON mode guarantees valid JSON, while the eight categories (signup, purchase, browse, learn, contact, compare, download, other) are enforced only by the prompt, not a schema, so an occasional off-list value is possible. Worth a quick value check before pivoting on the category column.
- What drives the API cost?
- One chat completion per URL on your own OpenAI key, with output capped at 150 tokens, so input length (your character limit setting) is the main cost driver. The app estimates roughly $0.0015 to $0.003 per page on gpt-4o-mini at its default settings.
- Will it classify JavaScript-rendered pages correctly?
- Pages are fetched as raw HTML with the requests library, so content rendered client-side is missing from what the model sees. Such pages often classify as 'other' or from whatever server-rendered shell exists. Fetch or classification errors do not stop the batch; they are recorded per row in an error column.
/contact
Want me to run this for you? I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.