Analyze a pricing page for sales-relevant intelligence
Extracts a structured pricing profile from any pricing page: model, tier count, exact displayed prices, free-offer type, and a one-line read on their sales motion. At scale it segments prospect lists by how companies charge — which predicts budget, buying process, and which of your angles will land.
You are a pricing analyst running inside an enrichment pipeline. You read SaaS and service pricing pages and extract the facts a sales team can act on: how the company charges, where their tiers break, and what their pricing model says about who they sell to. A usage-based model with a free tier sells bottom-up; 'Contact sales' on every tier means committees and procurement.
Work from the pricing page you are given (a URL to browse or scraped page content).
Rules:
- Record prices exactly as displayed, including currency and billing period. Do not convert currencies or annualize monthly prices.
- 'Contact sales' or 'Custom' is a valid answer, not missing data.
- Do not infer prices for tiers that hide them.
- Ignore promotional banners and limited-time discounts unless they are the only price shown.
OUTPUT CONTRACT — follow exactly:
Return a single JSON object:
{"pricing_model": "<one of: flat | per-seat | usage-based | tiered | custom-only | freemium | unknown>", "tier_count": <integer>, "lowest_price": "<exact string as displayed, e.g. \"$49/mo\", or \"contact-sales\" or \"free\">", "highest_visible_price": "<exact string, or \"contact-sales\">", "free_offer": "<one of: free-tier | free-trial | none | unknown>", "sales_motion_hint": "<one sentence, under 15 words, on what the pricing implies about how they sell>"}
- Return ONLY the JSON. No markdown fences, no commentary.
- If the page is unreachable or contains no pricing information at all, return exactly: {"pricing_model": "unknown", "tier_count": 0, "lowest_price": "NOT_FOUND", "highest_visible_price": "NOT_FOUND", "free_offer": "unknown", "sales_motion_hint": "NOT_FOUND"}
- Never guess a number you did not see on the page.How to use it
- 1
Copy the prompt into Claude, ChatGPT, or any LLM — or into a Clay Claygent column.
- 2
In Clay, map a pricing-page URL column as the input (a formula appending '/pricing' to the domain covers most SaaS; add a Claygent locator step for the rest).
- 3
Sample-check 10 rows against live pages, especially lowest_price strings — currency and period must match exactly.
- 4
Segment your campaigns on pricing_model: bottom-up freemium sellers and custom-only enterprise sellers deserve different messaging.
Best practices
Pair with the tech-stack detection prompt: pricing model plus stack tells you more about maturity than employee count does.
Use sales_motion_hint in internal notes, not in copy — it's an inference, and the contract only guarantees the displayed facts.
Re-run quarterly on competitor domains; pricing-page changes are the earliest public signal of a repositioning.
Example: what this looks like in practice
A RevOps consultant building a list for a sales-compensation tool runs this over 3,000 SaaS domains. The JSON lets her filter to per-seat and tiered models with 'contact-sales' top tiers — companies that demonstrably run a sales-led motion and therefore have comp plans worth optimizing. That cut takes the list from 3,000 to 1,140 accounts, and the campaign references the motion: 'Three tiers and a contact-sales enterprise plan usually means comp disputes by month six.' The unknown-model fallback also flagged 200 broken or JS-only pricing pages she re-ran through a headless scrape rather than discarding.
Best fit
This prompt is one gear in a bigger machine. We orchestrate 20+ tools into outbound systems our clients own — and guarantee the results.
Apply for a Pilot Spot → →Frequently asked questions
More than most enrichment fields. The model reveals the sales motion: freemium and low flat pricing mean product-led growth, per-seat tiers with a contact-sales top tier mean a sales team, custom-only means enterprise deals. That predicts budget, buying committee size, and which pain points are live — better targeting input than industry codes.
More personalization at scale (clay & claygents) prompts
Generate a cold email first line from scraped research data
The workhorse of AI-personalized outbound: converts whatever research your enrichment waterfall produced into one 12–22-word observation-led first line per row. The swap-test rule and fact-invention ban are what separate lines that read researched from the AI slop prospects now delete on sight.
Turn a Claygent website scrape into a personalized one-liner
Produces a sub-25-word, website-specific opening line for every row in a Clay table — no human in the loop. The output contract forces plain text only and a NOT_FOUND fallback, so unreachable sites and thin homepages return a filterable sentinel instead of a hallucinated compliment that ends up in a prospect's inbox.
Audit a batch of AI first lines before the campaign sends
Catches the failure modes that only show up across a batch — recycled constructions, swap-test failures, unverifiable claims — before prospects see them. You get a grade, pattern counts, individually flagged lines, and three paste-ready fixes for the generating prompt, turning QA from a vibe check into a repeatable gate.