# Article Name What Is Purchase-Intent Extraction? How the Money Sentences in Your Blog Get Found (2026) # Article Summary Purchase-intent extraction reads text a publisher has already published and returns the phrases inside it that name something a reader could buy, each with a confidence score and a character position. It is a different job from keyword research, which runs before publication and measures search demand. This article explains what counts as a commerce mention, how branded and generic phrases are told apart, how confidence scoring and its floor work, how resolution turns a phrase into a real product listing, and how to audit your own back catalog. # Original URL https://www.getchatads.com/blog/what-is-purchase-intent-extraction/ # Details Your highest-earning sentence is probably not the one sitting in your numbered list. It is the aside three paragraphs down where you named the exact skillet you cooked with, then moved on without linking it. Finding those sentences is a specific technical job, and in 2026 it goes by a name that collides with two other things. Purchase-intent extraction means reading text you have already published and pulling out the phrases that name something a reader could actually buy, along with a score for how hard each sentence pushes. For a publisher, the useful question is which phrases in the archive deserve a link and which should be left alone. Extraction is the tool built to answer exactly that. The short version: keyword tools tell you what to write next. Extraction works on the posts already live, finds the phrases that name something buyable, scores each one, and hands back the exact character positions so you can link it in place. ## What Is Purchase-Intent Extraction? Purchase-intent extraction reads a block of text and returns the phrases inside it that name a buyable thing. Each phrase carries a score for how strongly the surrounding sentence pushes a reader toward buying, plus the character position where it sits. You feed in prose that already exists on your site and get back a short, ranked list. The unit of analysis is what makes this different from everything nearby. Search tools work on queries and audience tools work on companies, while an extractor goes sentence by sentence through a document that has already been published, which is why some people call the same job commerce intent detection. That distinction matters because the same phrase means three different things depending on who says it. In B2B sales software, intent describes which organization is researching a topic, and Demandbase defines it as a measure of "a prospect's likelihood and readiness to purchase a specific product or service" (https://www.demandbase.com/blog/buyer-intent/). Bombora builds the same idea out of aggregated account-level behavior tracked against a rolling baseline. In SEO, commercial intent is a label applied to a search query before anything gets written. Neither version tells you a single thing about the words already live on your own domain. Extraction is the only one of the three that reads the finished page. Which "intent" does someone mean? Ask what the tool reads. Behavior tracked across other websites is B2B intent data. A query typed into a search box is SEO commercial intent. A page you already published is extraction. ## Why Don't Keyword Research Tools Find the Money Sentences? Keyword research runs before publication and answers a planning question about demand. Once the post is live, the question flips to inventory, meaning which monetizable keywords in blog posts you already published are sitting there without a link, and that is the question extraction answers. The gap between those two jobs is bigger than it sounds. Profound's analysis of traditional Google search queries put purely transactional intent at 0.6% (https://www.tryprofound.com/blog/chatgpt-intent-landmark-study) against 52.7% informational, which tells you that buying moments hide inside helpful content rather than announcing themselves as shopping searches. Search demand is a weak proxy for the sentences where a reader is ready to act. We ran 67 published affiliate posts through an extractor to see how much sits unclaimed. Across the validated mentions, 40.5% carried no link of any kind and 70.1% carried no affiliate link, and those posts were written by people already monetizing the page. The full breakdown lives in our study of unlinked product mentions (https://www.getchatads.com/blog/affiliate-blog-posts-unlinked-product-mentions-study/). Two different questions. Keyword research asks: what should I publish to capture demand that exists elsewhere. Extraction asks: what did I already publish that names something buyable and goes nowhere. ## What Counts as a Commerce Mention Versus a Keyword? A keyword is just a string that you match against the text. Product mention extraction looks for something harder to find and more useful, a noun phrase playing a grammatical role inside a real sentence. The usual starting point for an extractor is a unit called the noun chunk. The spaCy documentation describes them as "base noun phrases" that are "flat phrases that have a noun as their head" (https://spacy.io/usage/linguistic-features). Named entity recognition sits alongside that, tagging the real-world objects that carry names. Together they turn a wall of text into candidate phrases rather than candidate substrings. That structure is why the results come back verbatim with character offsets attached. If the phrase in your post reads "cast iron skillet we used", the extractor hands back exactly that along with where it starts, so you can wrap it in a link without rewriting the sentence around it. Two categories of candidate get thrown out on purpose before scoring. Single words are dropped because "blender" or "headphones" is too ambiguous to act on, and a bare brand name on its own is dropped for the same reason. A one-word product only survives inside a longer phrase such as "Vitamix A3500 blender". Here is what a single mention looks like when it comes back from an extraction call, brand attached: { "product": "Bose QuietComfort Ultra earbuds", "branded": true, "brand": "Bose", "confidence": 0.87, "span": [4, 35] } ## How Does an Extractor Tell Branded From Generic? Brand detection in a system like this runs on two things working together, and casing does more of the work than most writers expect. Known brand data covers the names already in the system, and everything outside that list has to be recognized from how it is written. The pattern behind that second half is mechanical rather than semantic. Two or more capitalized words in a row, or one capitalized word sitting beside a model number, reads as a brand, which is how "Kobo Clara BW" and "Anker 737" get recognized without anyone having listed them first. The hard part is scale, since brand linking has to work against catalogs holding hundreds of thousands of distinct brands. There is a second distinction underneath that one, and it trips people up. Whether the phrase itself names a brand is a separate question from whether a brand can be attached to it at all. Write "a stand mixer like the KitchenAid" and the phrase "stand mixer" carries no brand of its own. KitchenAid is sitting right there, though, so it can still be attached. Put "an immersion blender" in a paragraph that happens to mention a Ninja Creami two sentences earlier and neither is true, because proximity alone is not attribution. The split between the two shows up plainly in real monetization behavior. In our 67-post sample, generic phrases went unlinked far more often than branded ones, in both directions. Branded vs generic mentions across 67 affiliate posts: - Branded: 38.2% carried no link at all, 62.5% carried no affiliate link - Generic: 43.1% carried no link at all, 78.5% carried no affiliate link ## What Separates Purchase Intent From a Mere Mention? A mention is a noun, and intent lives in the words around that noun. Naming a product is not the same as pushing a reader toward it, and an extractor that cannot tell those apart returns noise. This problem has an academic home and a fairly settled vocabulary. Suggestion mining is the subfield that studies exactly this problem, and the survey work by Negi, de Rijke and Buitelaar identifies the surface patterns that carry a recommendation, including cue words such as "suggest, suggestion, recommendation, advice" and second-person constructions like "You could..." and "If I were you, I would..." (https://ar5iv.labs.arxiv.org/html/1806.02179). Imperatives count too, which is why "Take an umbrella" reads as advice while a bare noun does not. Working the suppression direction matters just as much as spotting the cues. Several kinds of context will actively hold a mention down even when the phrase itself looks strong: - Negative framing. "I wouldn't buy the older model" names a product and recommends against it - Already owned. "your Kindle" describes something the reader has, not something to sell them - Passing reference. A product named to set a scene carries no recommendation at all - Wrong speaker. In a chat transcript, a product in the reader's question is not the assistant's advice That last one is easy to get wrong in conversational settings like on-page chat. We wrote separately about detecting purchase intent in AI conversations (https://www.getchatads.com/blog/detect-purchase-intent-ai-conversations/), where the speaker distinction decides whether a link is helpful or presumptuous. Quick test on your own sentence: cover the product name with your thumb and read what is left. If the remaining words still push a reader toward a purchase, the extractor will see intent. If they only describe or narrate, it is a mention and nothing more. ## How Does Confidence Scoring Decide What Gets Kept? Confidence is a number between 0 and 1 attached to every mention that survives, and it exists for ranking rather than prediction. Reading 0.87 as "87% likely to convert" is a common mistake people make with these scores. Several purchase intent signals move that number up or down in fairly predictable ways. A mention naming a real brand scores well above a bare category noun, recommendation language nearby lifts it, and structural position counts because mentions sitting early in the text or set off in a bullet or a bolded pick score higher than ones buried mid-paragraph. Multi-word phrases with real modifiers beat one-word generics, which get actively penalized. Then a hard floor drops the weak tail before you ever see it. In the extractor we used for our study, anything under roughly 0.40 never reaches you, which is a deliberate choice about the tradeoff any threshold forces. Google's machine learning course puts the mechanics plainly, noting that "increasing the classification threshold tends to decrease the number of false positives and increase the number of false negatives, while decreasing the threshold has the opposite effects" (https://developers.google.com/machine-learning/crash-course/classification/precision-and-recall). For affiliate content, a false positive is worse than a miss. A wrong link in your prose costs reader trust, while a missed mention just leaves money where it already was. What moves a mention's confidence score: - Names a real brand: scores well above a bare category noun - Recommendation language nearby: lifts the score - Early, bulleted or bolded position: lifts the score - Multi-word phrase with modifiers: lifts the score - Single-word generic: actively penalized ## How Does Resolution Turn a Phrase Into a Real Product? Extraction hands you a phrase, and somebody still has to turn that phrase into a listing. Resolution is that second step, kept separate for a good reason, because finding "wireless mouse for gaming" in your text is a completely different problem from deciding which specific mouse to link. Plain keyword search falls apart at exactly this point in the chain. The phrase a blogger writes and the title a retailer uses rarely share enough words, since product titles are stuffed with model numbers, pack counts and specifications that no human writes in a sentence. Vector search compares meaning instead, which is the job libraries like FAISS were built for, running similarity search across dense vectors rather than shared words. Quality floors then cut those candidates down to what is worth linking. A returned product has to clear floors on price, review count and star rating before it is eligible, which kills the cheap lookalikes that meaning-based search will happily surface. One rule inside resolution matters more than the others. When your sentence names a specific branded product that is not in the catalog, nothing gets served at all, because swapping in a generic substitute is how a reader learns not to trust your links. Resolution is the step that can embarrass you in public, so it should be the strictest one in the chain. Where ChatAds fits: ChatAds applies exactly these floors, $20 or more, at least 10 reviews and a 3.5-star rating, before it serves a link inside the chat widget. The links carry your own affiliate tag, so the commission goes to you. ## Where Does Extraction Run: Published Posts or Live Chat? The same engine serves two very different surfaces, and the difference is timing rather than technique. A published post has been sitting on your server for two years, while a chat reply came into existence half a second ago and still has to be scored before it renders. Auditing a back catalog is the batch case, and it is the simpler one. Text goes in, mentions come out, and you compare them against the links your HTML already carries to find the orphans. Our own run through 67 posts covered 917,827 characters in 120 calls, which is a weekend of work at most. Live chat is the streaming case, and it has a latency budget. When a reader asks an on-page assistant which skillet to buy, the reply gets scored as it is generated and a link gets woven into the answer before it renders. In ChatAds that scoring runs in under 200ms per reply, which is short enough not to add visible delay to the answer. The second surface is growing faster than most publishers planned for. Adobe measured generative AI traffic to US retail sites up 1,200% (https://blog.adobe.com/en/publish/2025/03/17/adobe-analytics-traffic-to-us-retail-websites-from-generative-ai-sources-jumps-1200-percent) in February 2025 against the previous July, and our read is that the same shift makes an assistant on your own pages worth having. ChatAds covers both, running the chat widget from a single script tag and exposing the same extraction over its developer tools for the archive. Two surfaces, one engine. Published posts: batch, no latency budget, measured in characters per call. Live chat: streaming, scored under 200ms, measured per reply. ## What Does Extraction Get Wrong? Every extractor has failure modes, and most of them come back to casing. Title Case prose is the worst offender, because a heading written as "Best Wireless Headphones For Running" hits the same two-capitalized-words-in-a-row pattern that brand detection relies on. The same failure runs in the opposite direction just as often. A real brand written in lowercase loses its signal entirely and starts scoring like a generic noun, which often drops it below the floor. ALL CAPS headlines and all-lowercase text carry no casing information at all, so both return fewer mentions at lower confidence than the same words normally cased. There are structural limits worth knowing before you run anything. In the extractor we used for our study, English is the supported language, calls cap at 10,000 characters so long posts get split, and span offsets are relative to whatever chunk you sent rather than the whole document. In-text affiliate networks have worked this territory for years without exposing any of it. Sovrn Commerce "can recognize keywords and product mentions within publisher's content and insert links to relevant products" (https://support.refersion.com/en/articles/1538624-faq-about-sovrn-commerce-formerly-viglink), and Skimlinks does keyword-to-link swaps the same way. Neither shows you a score or lets you decide what stays unlinked. One boundary that no extractor will ever cross for you is compliance. The FTC's endorsement guidance expects a clear disclosure and suggests wording as simple as "I get commissions for purchases made through links in this post" (https://www.ftc.gov/business-guidance/resources/ftcs-endorsement-guides-what-people-are-asking), and Amazon's operating agreement requires every link to use the tagged link formats Amazon provides. Both are on you regardless of how the mention was found. Common extraction failure modes: - Title Case prose: generic phrase reads as a brand - Lowercase brand name: real brand scores like a generic noun - ALL CAPS or all lowercase: no casing signal, fewer mentions returned - Post over 10,000 characters: split into chunks, offsets are per chunk - Non-English text: not supported ## How Do You Try It on Your Own Posts? Running this on five of your own posts will tell you more than any explanation of the method can. Pick your five highest-traffic articles, since those are where an unlinked mention costs the most. The process itself is mechanical and takes about ten minutes per post. Pull each post's body text, send it through an extractor, then compare the returned phrases against the links already present in the HTML. Anything the extractor found that your links do not cover is an orphan, and the count usually surprises people the first time. ChatAds Commerce Extract is free for 500 requests per month at 10,000 characters per call, which covers a five-post audit many times over. It runs as an MCP server, so if you are comfortable pasting one line into a client config, connecting it takes a cak_ access key in the header. That one config step is the only technical part of the audit, and if you would rather skip it, the chat-client route is described just below. claude mcp add --transport http chatads-commerce \ https://api.getchatads.com/tools/mcp/mcp \ --header "x-api-key: cak_your_access_key" Fix the branded orphans first, because those resolve to a specific product and convert better. Generic phrases are a judgment call, and sometimes the honest answer is that "2-person tent" should stay unlinked because you never had one product in mind. If you would rather drive the whole audit from a chat client, we walked through that in our guide to adding Amazon affiliate links with Claude (https://www.getchatads.com/blog/add-amazon-affiliate-links-with-claude/). Purchase-intent extraction is not a growth tactic, and it will not bring you traffic you do not already have. What it does is tell you the truth about text you wrote months ago, which is that a good chunk of it names things people buy and points nowhere. The fix is small on any single page, and it compounds across a whole archive. Every orphan you close keeps working on a page that was already published, already ranking, and already doing the hard part of earning the visit. Start with five posts, review each suggestion by hand, link only where you would genuinely recommend the product, and disclose the affiliate relationship the way the FTC expects. # FAQ ## What is purchase-intent extraction? Purchase-intent extraction reads text that already exists and returns the phrases inside it that name something a reader could buy. Each phrase comes back with a confidence score and the character position where it sits, so you can link it without rewriting the sentence. ## How is purchase-intent extraction different from keyword research? Keyword research runs before you publish and tells you what to write. Extraction runs after you publish and tells you which sentences already name something buyable. One measures demand elsewhere, the other measures inventory you own. ## How do I find unlinked product mentions in my old blog posts? Pull each post's body text, run it through an extractor, then compare the returned phrases against the links already in your HTML. Anything the extractor found that your links do not cover is an orphan. We ran this on 67 affiliate posts and 40.5% of validated mentions carried no link at all. ## What is a good confidence score for a product mention? Treat the score as a ranking tool rather than a probability that someone buys. Anything under roughly 0.40 is usually dropped before you see it, and branded multi-word phrases sitting near recommendation language land highest. Review the top of the list by hand before linking. ## Is there a free tool for extracting product mentions from text? ChatAds Commerce Extract is free for 500 requests per month at 10,000 characters per call, which covers a small back-catalog audit. It runs as an MCP server and needs a cak_ access key in the request header. ## Why does an extractor miss brand names in my posts? Casing carries most of the brand signal, so a brand written in lowercase often scores like a generic noun and falls below the floor. Title Case headings cause the opposite problem and make ordinary phrases read as brands. Normally cased body prose returns the most reliable results.