Look, there are a lot of GEO tools appearing right now. Some are great. But before you spend money, you can build a basic AI visibility tracker in an afternoon and learn what you actually need.
This post walks through it. The concepts come from Kiyado's explainer on GEO, which is also useful context if you're weighing a generative engine optimization tools comparison.
What we're measuring
The Kiyado post suggests a simple, practical test. For each AI answer, record three things:
Named: is your product mentioned?
Cited: does the answer link to your site?
Accurate: is the description correct?
That's it. Three booleans per prompt, per engine, per month. Simple data you can trend.
Step 1: Define your prompt set
Start with 15–25 prompts that mirror real buyer questions:
prompts:
category:
- "What are the best {category} tools for {audience}?"
- "Which {category} software should a {buyer} choose for {need}?"
brand:
- "What is {brand} known for?"
- "Is {brand} good for {use_case}?"
comparison:
- "{brand} vs {competitor}"
- "Alternatives to {competitor}"
variables:
category: "customer onboarding"
audience: "B2B SaaS companies in Australia"
buyer: "head of customer success"
need: "reducing time-to-value"
brand: "Example Onboard"
competitor: "Competitor X"
use_case: "product tours"
Keep the set stable. Changing prompts every month destroys your trend line.
Step 2: Collect answers
You can do this manually (honestly fine for 20 prompts × 3 engines) or via official APIs where available. Respect each provider's terms of service and rate limits, and note that API answers may differ from what users see in consumer apps.
import csv, datetime
def record(engine: str, prompt: str, answer: str, brand: str, domain: str):
row = {
"date": datetime.date.today().isoformat(),
"engine": engine,
"prompt": prompt,
"named": brand.lower() in answer.lower(),
"cited": domain.lower() in answer.lower(),
"accurate": "", # fill in manually against your fact sheet
"answer": answer.replace("\n", " ")[:2000],
}
with open("ai_visibility_log.csv", "a", newline="") as f:
w = csv.DictWriter(f, fieldnames=row.keys())
if f.tell() == 0:
w.writeheader()
w.writerow(row)
Step 3: Score accuracy with a fact sheet
Accuracy is the metric most teams skip, and it's often the most revealing. Create a fact sheet: pricing tiers, integrations, hosting regions, target customers. When an answer contradicts it, mark it inaccurate and note why.
Inaccurate answers usually point to a specific outdated source: an old review profile, a stale partner page or a forgotten blog post.
Step 4: Visualise monthly trends
A simple pivot is enough:
Month
Engine
Named %
Cited %
Accurate %
Aug
ChatGPT

Aug
Gemini
Aug
Perplexity
Here's the deal: don't react to single answers. AI output is noisy. React to trends over two or three months.
Step 5: Connect it to actions
Every inaccuracy or absence should map to one of the three GEO layers:
Content: missing or vague information on your own site
Identity: inconsistent descriptions across properties
Corroboration: weak or outdated third-party evidence
Fix the layer, then watch the trend.
What this won't tell you
Exact traffic or revenue from AI answers (attribution is still messy)
Why an engine chose a specific source
Anything guaranteed. The 2024 research that named GEO reported gains of up to 40%, but they varied by topic, and engines change often.
When to buy a tool
Once you've run this for two or three months, you'll know which features you actually need: more prompts, more engines, automated accuracy checks or competitor tracking. Then compare tools against real requirements, not demos.
Example monthly report
Here's what a one-page report from this pipeline might look like for a Melbourne SaaS team. The figures are illustrative.
Metric
Month 1
Month 2
Month 3
Named rate (all engines)
20%
27%
33%
Cited rate
7%
13%
20%
Accuracy rate
60%
73%
80%
Open issues
9
6
4
Underneath the table, list the top three issues and their owners:
- Gemini describes the product as "project management software" (it's resource planning). Layer: identity. Fix: align G2, Capterra and the LinkedIn company page.
- Perplexity cites a 2023 review with outdated pricing. Layer: corroboration. Fix: request an update from the publisher.
- ChatGPT doesn't name us for "resource planning software for agencies in Australia". Layer: content. Fix: publish a dedicated use-case page. The value isn't the percentages. It's the list: specific, owned and fixable. That's what turns measurement into progress. Keep it lightweight You don't need a data warehouse to start. A shared spreadsheet, a fixed prompt set and a calendar reminder are enough for the first quarter. Automate only when the manual version becomes the bottleneck. Choosing your prompts The prompt set decides what the pipeline can see, so pick it carefully. Mix three types: Category prompts ("best resource planning software in Australia"): do engines know you belong in the category? Brand prompts ("what is Example Plan?"): do they describe you correctly? Comparison prompts ("Example Plan vs Competitor X"): do they represent your differences fairly? Ask your sales team for the exact phrases prospects use on calls. Those phrases make better prompts than anything brainstormed in a marketing meeting. Aim for about 20 prompts, review them each quarter and keep a changelog of any edits. Add a few prompts in the words of Melbourne buyers specifically, such as "resource planning software for agencies in Melbourne", so you can see whether local relevance improves alongside national visibility. The ROI angle This tracker costs a few hours a month. It tells you whether your content, identity and corroboration work is moving the needle, which is exactly what you need before spending more. Searches for a geo agency melbourne have grown sharply this year. The teams measuring now will have the data advantage later. If you'd like a second opinion on your setup, Kiyado's Melbourne team offers a free audit: SEO and GEO for Melbourne businesses →
Top comments (1)
keeping the prompt set stable is the advice i would actually follow. changing prompts every month would make the trend unreadable, even if each new prompt feels better on its own.