Buyer Prompts for AI Search: Write What Real People Ask

Buyer prompts for AI search decide what your tracking measures. On 280 answers, prompts that echoed our features made us look like the leader. Fix that here.

BugViso

14 min read

Good buyer prompts for AI search are the questions your buyers actually type: a choice to make, one or two real constraints, in the buyer's words rather than yours. Phrasing changes the result more than most teams expect. On our own tracking set, prompts that echoed our feature list gave us a 15.2% mention rate, level with the category leader. Prompts in neutral buyer language gave us 2.4%, and the leader 32.1%.

Both numbers are real, and the prompt mix decides which one becomes your headline. This post shows how question shape, constraints and length change the answers, how to source prompts from real buyer language, and a checklist plus script that flags prompts that flatter you.

Data used: 35 unbranded buyer prompts (drafted from bugviso.com's own pages, then reviewed) × ChatGPT, Gemini, Perplexity and Claude × 2 runs on 2026-10-20: 280 answers with web search on, collected by BugViso's AI Visibility Tracker against five anonymised competitors. Prompt features were tagged with the script below.

The Pre-Flight Matrix

TierCheckWhy it mattersIn our set
P0Doesn't name you, an alias or your domainNamed prompts are answered with your name 100% of the time0 leaks in 35
P0No placeholders like [city] or {product}Engines answer the literal text0
P0At least 8 wordsShort keyword strings get generic, list-style answers8–21 words, median 14
P1Mix of choose and explain questionsOnly choose questions produce shortlists25 choose, 10 explain
P1Constraints taken from real demandConstraints decide which vendors fit23 of 35 have one or more
P1Feature words in proportion to real demandFeature words tilt answers toward you14 of 35 name one of our features
P2No near-duplicatesDuplicates double-count one questionHighest overlap 0.36 (none ≥ 0.6)
P2Buyer's vocabulary, not product names for featuresEngines search with the prompt's wordsMostly; see below

The rest of the post goes through what the data says for each P1 row, because that's where tracking sets go wrong without anyone noticing. The P0 rows and the overall intent mix are covered in how to build an AI visibility prompt set, and why a prompt that names you can't measure discovery is in branded vs unbranded prompts.

Question Shape: Choose vs Explain

A choose question asks the engine to pick ("which white-label audit software lets me schedule monthly re-scans for each client"). An explain question asks it to teach ("what does a technical SEO audit check for").

Prompt shapePromptsAnswersNamed any tracked brandNamed usNamed the leader
Choose2520050.5%10.5%27.0%
Explain108027.5%0.0%21.2%

Choose questions produced shortlists in half their answers. Explain questions produced fewer, but they still named a tracked vendor in 27.5% of answers, usually as an example of a tool type. Our brand was never named in an explain answer.

Keep both shapes. Choose questions measure whether you make the shortlist. Explain questions measure whether you're the example engines reach for when they teach the category, which is where an incumbent's lead shows up first. A set that is all choose questions hides that gap.

Constraints: The Words That Decide Who Fits

A constraint narrows the answer: an audience ("for a solo consultant"), a number ("around 300 audits a month", "a $19 plan") or a specific capability ("white-label PDF", "WCAG 2.2"). We counted constraints per prompt:

Constraints in the promptPromptsNamed any tracked brandNamed usNamed the leader
None1235.4%1.0%27.1%
One1541.7%5.0%26.7%
Two or more860.9%21.9%20.3%

The leader holds steady at 20–27% whatever the constraints. We go from invisible to ahead of the leader. Specific questions favour specialists, and generic ones favour incumbents.

That's a real effect, and it's good news for a challenger. But it means the share of constrained prompts in your set largely sets your score. If real buyers mostly ask generic questions, a set full of constrained ones overstates you.

The Mirror Problem: Prompts That Echo Your Feature List

Our tracking prompts were drafted from our own website and reviewed by us, which is how most teams build a first set. The result: 14 of 35 unbranded prompts name one of our own features, such as rollover, white-label PDFs, pay-per-report, hydration errors, WCAG 2.2 or llms.txt.

Prompts that…PromptsAnswersNamed usNamed the leader
Name one of our features1411215.2%15.2%
Name none of our features211682.4%32.1%
Choose-shaped and name a feature118819.3%17.0%
Choose-shaped, no feature named141123.6%34.8%

On prompts that echo our features, we tie the leader. On everything else, the leader is named 13 times as often. Our blended 7.5% sits between the two because 40% of the set mirrors our pages.

None of these prompts is wrong. Buyers do ask about rollover and white-label PDFs. The question is how often they ask, compared with "best technical SEO audit tool". A prompt set should reflect real demand. If 10% of your buyers' questions involve a feature you're strong in, 40% of your prompts shouldn't.

💡 Mirror check: list your five differentiators and count how many unbranded prompts contain one. If that share is far above how often buyers bring them up in sales calls and search queries, rebalance before you report a trend.

Length: The Middle Band Works

Prompt lengthPromptsNamed any tracked brandNamed us
8–12 words1033.8%2.5%
13–16 words2150.0%10.1%
17–21 words437.5%6.2%

Mid-length prompts (13–16 words) produced the most shortlists. Seven of the 10 short prompts were explain questions, so they mostly got explanations. Only 4 prompts ran past 16 words, too few to read much into, but none of them did better than the middle band.

Long prompts are normal in AI search. Google says users of its AI experiences "are asking longer and more specific questions" (succeeding in AI search). Write prompts at the length of a typed question, not a search keyword.

You can't fix the mirror problem from your own website, because the website is the mirror. Pull wording from places buyers write in their own words:

  1. Search Console queries. Filter the Queries dimension in the performance report for question words ("which", "best", "vs", "how much") and copy the long ones verbatim. Their impressions give you rough demand weights.
  2. Sales calls and demo requests. The first question a prospect asks is the best prompt you'll find. Keep their words and their constraints.
  3. Support tickets and pre-sales chat. Questions like "can it do X for Y" become prompts with real constraints.
  4. Community threads in your category. Note how people describe the problem before they know any product names.
  5. Lost-deal notes. "We went with Competitor A because…" tells you which comparison prompts to track.

Then weight the set. If Search Console shows generic category questions with ten times the impressions of feature questions, your prompt mix should lean the same way.

Engines rewrite your prompt before they search, so the buyer's words carry into retrieval. Claude, for example, decides when and what to search from the prompt itself (web search tool docs). In our data, a third of Claude's search queries contained words like "best", "vs" or "alternatives".

Before and After: Rewriting Prompts in Buyer Language

text
❌ which audit platform offers custom quotas above 300 scans a month for a large agency
   (three constraints, all lifted from our pricing page)

✅ what website audit tool do large SEO agencies use for hundreds of client sites
   (same buyer, their words, no number copied from a plan table)
text
❌ is there a website audit tool that gives a free full report without a credit card
   (mirrors our sign-up offer)

✅ what is the best free website audit tool
   (how the same buyer usually phrases it)

Keep some mirrored prompts, deliberately, as a niche segment. Label them as a topic so you can report "differentiator questions" separately from "category questions". The split itself is useful: it shows where you win and where you don't exist yet.

Check Your Prompts with a Script

The script flags short, placeholder and mirror prompts and near-duplicates, then prints the shape and constraint mix. Pass your differentiators with --feature. With --answers, it also shows your mention rate by prompt group, which is how the tables above were produced.

python
#!/usr/bin/env python3
"""Check that tracking prompts read like real buyer questions, and that they don't just mirror your
own feature list. With --answers, show how prompt shape and constraints change who gets named.

Usage: python3 buyer_prompt_check.py prompts.csv --brand Acme --feature "white-label" --feature "rollover" \
         [--answers answers.csv]
prompts.csv columns: prompt (others ignored). answers.csv columns: prompt, answer, branded (1/0).
"""
import argparse, csv, re
from collections import Counter
from itertools import combinations

CHOOSE = re.compile(r"^(which|best|recommend|alternatives?|is there|should i|what is the cheapest)\b|\bwhich\b.*\b(tool|software|platform|app)\b"
                    r"|^what (?:\w+ ){0,3}(?:tool|software|platform|app)s? (?:can|should|does)\b|\bworth it\b", re.I)
AUDIENCE = re.compile(r"\b(agency|agencies|freelance\w*|solo|indie|small (?:team|business)|consultant|startup|enterprise|developers?|clients?)\b", re.I)
NUMBER = re.compile(r"\$\d|\b\d{2,}\b|#\d+")
PLACEHOLDER = re.compile(r"\[[^\]]+\]|\{[^}]+\}|<[^>]+>")

def features(p, own):
    return {"shape": "choose" if CHOOSE.search(p) else "explain",
            "constraints": sum(bool(x.search(p)) for x in (AUDIENCE, NUMBER)) + bool(own and own.search(p)),
            "mirror": len(set(m.lower() for m in own.findall(p))) if own else 0, "words": len(p.split())}

def main():
    ap = argparse.ArgumentParser()
    ap.add_argument("prompts"); ap.add_argument("--brand", required=True)
    ap.add_argument("--feature", action="append", default=[]); ap.add_argument("--answers")
    a = ap.parse_args()
    own = re.compile("|".join(re.escape(f) for f in a.feature), re.I) if a.feature else None
    brand = re.compile(r"(?<![\w-])" + re.escape(a.brand) + r"(?![\w-])", re.I)
    prompts = [r["prompt"].strip() for r in csv.DictReader(open(a.prompts, newline="", encoding="utf-8"))]
    unb = [p for p in prompts if not brand.search(p)]
    f = {p: features(p, own) for p in unb}
    for p in unb:
        issues = [msg for cond, msg in [(f[p]["words"] < 8, "short, keyword-style"), (PLACEHOLDER.search(p), "placeholder"),
                                        (f[p]["mirror"] >= 2, "mirrors your feature list")] if cond]
        if issues:
            print(f"! {p}  [{', '.join(issues)}]")
    tok = lambda s: set(re.findall(r"[a-z0-9$#]+", s.lower()))
    for x, y in combinations(unb, 2):
        if len(tok(x) & tok(y)) / len(tok(x) | tok(y)) >= 0.6:
            print(f"! near-duplicate: {x}  ~  {y}")
    n = len(unb)
    print(f"\n{n} unbranded prompts: {sum(v['shape'] == 'choose' for v in f.values())} choose / "
          f"{sum(v['shape'] == 'explain' for v in f.values())} explain; constraints "
          + ", ".join(f"{k}: {v}" for k, v in sorted(Counter(min(v['constraints'], 2) for v in f.values()).items()))
          + f"; {sum(v['mirror'] >= 1 for v in f.values())} name one of your features")
    if a.answers:
        rows = [r for r in csv.DictReader(open(a.answers, newline="", encoding="utf-8")) if r["prompt"].strip() in f]
        groups = {"choose": lambda v: v["shape"] == "choose", "explain": lambda v: v["shape"] == "explain",
                  "0 constraints": lambda v: v["constraints"] == 0, "1 constraint": lambda v: v["constraints"] == 1,
                  "2+ constraints": lambda v: v["constraints"] >= 2}
        print(f"\n{'prompt group':<16}{'answers':>8}{a.brand + ' named':>16}")
        for g, test in groups.items():
            R = [r for r in rows if test(f[r["prompt"].strip()])]
            if R:
                k = sum(bool(brand.search(r["answer"])) for r in R)
                print(f"{g:<16}{len(R):>8}{k:>9} ({100 * k / len(R):4.1f}%)")

if __name__ == "__main__":
    main()
bash
python3 buyer_prompt_check.py prompts.csv --brand "Acme" --feature "white-label" --feature "rollover" \
  --feature "pay-per-report" --answers answers.csv

On our set it prints "35 unbranded prompts: 25 choose / 10 explain; constraints 0: 12, 1: 15, 2: 8; 14 name one of your features", then mention rates of 1.0%, 5.0% and 21.9% by constraint count. The shape and constraint rules are regular expressions tuned for English B2B questions, so read the tags before you trust the groups.

How BugViso Drafts and Checks Buyer Prompts

BugViso's AI Visibility Tracker drafts the first prompt set from your brand brief: a short profile you confirm (what you sell, to whom, where, and against which competitors), plus a digest of your site's key pages. The default set is 50 questions: 70% unbranded discovery across learn, consider and purchase stages, 20% branded and 10% comparison.

Every drafted prompt then passes checks in code, not in the model:

  • Length of 12–240 characters, and the right script for the set's language.
  • No placeholders, links or instruction-like text, and no leading "why is X the best" questions.
  • Kind matches the text. Unbranded prompts can't contain your name, alias or domain, and at most max(3, 10%) of them may name a competitor.
  • No duplicates by exact text or token overlap of 0.8 or more.
  • Every topic has at least 3 prompts, so topic segments have something to measure.

You can edit, add or remove questions at any time, and prompts you add are classified as unbranded, branded or comparison from the names they contain. Saving starts a new version, so trends only compare runs on the same questions. The checks catch broken prompts. They can't know how often your buyers ask each question, so the mirror check above is still your job. The prompt tools are on the AI visibility tracker page.

High-Risk Oversights

Writing prompts from your pricing page. Plan limits and prices ("above 300 scans", "$19 a month") turn into constraints only you can satisfy.

All choose questions. You lose the explain-stage view, where incumbents are named as examples and you're absent.

Feature names instead of buyer words. Buyers say "carry over unused credits". Your page says "rollover". Engines search with the buyer's words.

One market's phrasing for every market. Translate meaning, not words, and check each language's prompts with native speakers.

Rewriting prompts mid-quarter. Any edit breaks comparability. See why editing prompts breaks your trend line.

Frequently Asked Questions

They're the questions a potential customer types into ChatGPT, Gemini, Perplexity or Claude while choosing a product, such as "which website audit tool should I buy for a small agency". Tracking them shows whether engines recommend you.

Start from your buyers' own words: long, question-shaped queries in Search Console, first questions from sales calls, support and pre-sales chats, community threads and lost-deal notes. Then weight the set by how often each question comes up.

Should AI tracking prompts include my product's features?

Some should, in proportion to real demand. In our set, prompts naming our features gave us a 15.2% mention rate and the rest 2.4%. Too many feature prompts make your score look like the leader's.

How long should an AI visibility prompt be?

Write it as a typed question, usually 13–16 words. In our data, that band produced shortlists in 50% of answers, against 34% for prompts of 8–12 words.

What's the difference between "choose" and "explain" prompts?

Choose prompts ask the engine to pick a product and produce shortlists. Explain prompts ask how something works. Engines still name established vendors in explain answers as examples, so track both.

Track the Questions Your Buyers Ask, at the Rate They Ask Them

Specific questions favour specialists and generic ones favour incumbents, so the prompt mix quietly sets your score. Source prompts from buyer language, weight them by real demand, and keep differentiator questions as their own segment. That's the set BugViso's AI visibility tracking is built to run every day.

Found this useful? Share it.

See where your site stands

Run a free BugViso audit for SEO, speed, accessibility and AI search readiness — with fixes you can ship today.