How do you do GEO competitor analysis for an agency client?
GEO competitor analysis for an agency client has three steps: agree on three to five named competitors with the client, run a shared set of 30-60 tracked prompts against the client and the competitors across ChatGPT, Perplexity, Gemini, Claude, and DeepSeek, and then diff three things: which competitor wins which prompt, where the client is cited but ranks low, and which sources AI engines cite for the competitors that the client does not appear on. The output is a competitive map the client can use to prioritise content and PR.
Step 1: pick the right competitors with the client
Do not pick competitors yourself. The competitors marketing teams care about are rarely the competitors that show up in AI answers, and agencies that get this wrong on a kickoff call lose trust quickly. Ask the client for three to five named competitors they lose deals to. Then, separately, run a few exploratory prompts against the AI engines to surface a second list of "who is AI talking about in this space." Present both lists back to the client.
For a digital agency with 60 SMB clients running this exercise for a B2B SaaS client, the two lists often differ by 30-50%. The client's sales-driven list might be "Salesforce, HubSpot, Pipedrive." The AI-surfaced list might include those plus three smaller niche tools the client has never tracked. The combined list is what you analyse.
Step 2: run a shared prompt set
Define 30-60 prompts that cover the client's funnel: top-of-funnel category questions, mid-funnel comparison and "best of" prompts, bottom-funnel use-case and integration prompts. Run the full set against the client and every competitor across the five engines.
A representative prompt set for a B2B SaaS client looks like:
- "What is the best CRM for a 20-person B2B team"
- "Salesforce vs HubSpot for early-stage SaaS"
- "CRM with strong API for technical teams"
- "How does Pipedrive compare to HubSpot pricing"
Each prompt is run at the same time across engines so that index freshness is controlled for. Re-run monthly so trend lines are comparable.
Step 3: diff the three views
The output is three diffs:
- Visibility diff: across the full prompt set, who appears how often. Format as a leaderboard. "HubSpot 78%, Salesforce 71%, Client 26%, Pipedrive 22%."
- Rank-when-visible diff: when the client and competitors both appear in the same prompt, who ranks higher. This is the metric that reveals where the client is close to winning but losing the framing.
- Citation source diff: which third-party sources the engines cite for competitors that they do not cite for the client. Common gaps: G2 and Capterra reviews, Reddit threads in the relevant subreddit, podcast appearances, comparison blogs by smaller publications.
A 30-person B2B SaaS agency running this for a client might find that competitors are cited heavily because of Reddit threads and G2 reviews, while the client has almost no third-party citation footprint. That insight reframes the next 90 days of work: less blog production, more review-site and community presence.
Common mistakes
The two most common mistakes agencies make on competitor analysis:
- Treating one engine as the answer. A client that ranks first in Perplexity but is invisible in ChatGPT does not have a winning position. Analyse all five engines and present the spread.
- Reporting raw rank instead of context. "You are #3 average" is meaningless without knowing how many prompts had the client in the top 10 versus not appearing at all. Visibility, rank-when-visible, and citation share each tell a different story; report all three.
Cadence and deliverable
Run the full competitor analysis at kickoff and then quarterly. Between full runs, the monthly client report (covered separately in the cluster) tracks the headline competitor leaderboard so the client can see whether the gap is closing.