Track AI product recommendations
"What should I buy?" questions used to end at a comparison site. Now they end inside an AI answer that shortlists three to five products — and for the buyer who asked, that shortlist is the market. Recommendation tracking is the job of knowing whether you're on it: per buying query, per engine, per week. It is a stricter test than brand visibility. An answer can mention you while recommending someone else, and the difference between "Acme is also worth a look" and "start with Acme" is the difference that shows up in pipeline. The raw answer text is where that difference lives — which is why this job runs on records, not on a mention count alone.
Read this page with an AI
The output: a dated grid of buying queries × engines, each cell holding whether you appeared, how you were framed, and who else made the list. The framing column is the one sales asks about.
Get a free AI-visibility audit → · Read the docs → — No card, no account.
Get my free auditHow recommendation tracking works
- Collect buying-intent phrasings. "best [category] for [audience]", "what should I use for [job]", "[category] under $X", "[rival] alternatives". Recommendation behavior differs sharply from informational queries — keep the sets separate.
- Fetch across the engines your buyers use. One
POST /v1/fetchesper query with the engines insurfaces; the answer text and cited sources come back as one record per engine. - Extract the shortlist, not just your name. Record every product the answer names and the order they appear in. Your position inside the shortlist — and who sits above you — is the trend worth graphing.
import requests
PRODUCTS = ["Acme", "Northwind", "Globex", "Initech"] # the market as you sell it
resp = requests.post(
"https://api.agentgeo.org/v1/fetches",
json={
"query": "best project management tool for a 10-person agency",
"surfaces": ["chatgpt", "gemini", "copilot"],
},
headers={"Authorization": "Bearer ag_live_your_key_here"},
timeout=200,
)
resp.raise_for_status()
for answer in resp.json()["answers"]:
text = (answer.get("answerText") or "").lower()
shortlist = sorted(
(p for p in PRODUCTS if p.lower() in text),
key=lambda p: text.index(p.lower()),
)
print(f"{answer['surfaceKey']:20} {' > '.join(shortlist) or '(none of the tracked set)'}")First-appearance order is a serviceable proxy for shortlist rank, but read a sample of the actual answers each run: "we'd avoid Acme for this" also puts you early in the text. For framing at scale, the is-my-product-recommended guide adds a classifier step with a fixed rubric.
Ask the audience-qualified version of every query — "for a 10-person agency", "for enterprise", "for a solo founder". Engines shortlist differently per audience, and being the default for your segment matters more than appearing in the generic list.
Let your agent run it
Over MCP, the geo-visibility skill shipped in agentgeo-mcp runs the recommendation checks conversationally — "which engines recommend us for agency PM queries, and who outranks us?" — and the geo-prompt-set skill drafts the buying-query set from your positioning if you're starting from zero.
claude mcp add agentgeo -- npx -y agentgeo-mcp --key ag_live_...Alternatives
Recommendation modules exist in the GEO dashboards (Profound, Peec AI) with their own query panels — a reasonable fit if a marketing team wants the number without the pipeline. The trade is the usual one: their queries, their framing rules, their refresh cadence. Checking by hand in each engine works for one launch-day sanity pass and stops scaling the same afternoon.
More use cases
For retail catalogs this job becomes the e-commerce AI shelf; the rival-focused cut is competitor visibility tracking — see all use cases.
Find out whose shortlist you're on: Get a free AI-visibility audit →
Get my free audit