
GEOlikeaPro
AI search visibility for e-commerce brands
A reader emailed me, annoyed. Our audit told him his brand barely showed up in AI answers. He opened ChatGPT himself and there he was, first line. "Your tool is wrong." Then he added the part that actually mattered: he ran our audit twice and got two different scores.
He was right on both counts, and the second one sent me down a rabbit hole.
The problem: LLMs are non-deterministic. Ask the same question twice and you can get different brands, different ordering, different recommendations. It's not a bug - they pick words by sampling, so output varies by design, and it holds even at temperature 0. Which means every AI-visibility tool that asks each model once (ours included) was handing people one sample from a noisy distribution and calling it a score. Run it again, it moves.
You can't plan content work against a number that swings 25 points on noise. So I stopped trusting the single shot.
What we built (Deep Audit):
Fan one query into ~10 real buyer-intent variations instead of one phrasing
Run all of them across ChatGPT, Claude, Gemini, Perplexity
Report a mention rate with a 95% confidence band - measure many times, report the distribution
Only count a mention if the brand name is literally in the answer (the models were tagging "partial" mentions for brands they never named - self-grading is generous)
The honest limitation: it measures what the models know from training, not your live site. I tested a brand a friend has promoted hard for a year - our tool showed near-zero, and Google's live AI Mode showed near-zero too for that query. Two different methods, same answer. Live grounding is the next problem; I'd rather ship a number you can reproduce than one that looks live and isn't.
Full writeup with the research: https://geolikeapro.com/blog/why-one-llm-audit-isnt-enough
Free brand check (no signup) on the homepage if you want to see where you stand. Happy to answer anything about the build or the measurement approach.
GEOlikeaPro started as a toolkit for checking and improving how brands show up in AI search. Now it comes to Shopify.
The app generates FAQ schema (JSON-LD) for your products, collections and blog posts and publishes it to your storefront.
Why it matters: shoppers ask ChatGPT and Google's AI "best [product]", and those answers are built from structured data the models can read. Most Shopify stores have none. This makes your products readable and eligible - it won't guarantee placement (nothing can), but it fixes the part most stores are missing.
Free with your own OpenAI key.
https://apps.shopify.com/geolikeapro
Feedback welcome
1 Like
Comment
GEOlikeaPro shows brands how they appear across ChatGPT, Claude, Gemini, and Perplexity. Spent the last couple of weeks rebuilding the navigation surface side-by-side with a daily user — enterprise SEO, four years in.
Six things shipped:
1. Home = cockpit, not a welcome card.** KPI strip (latest audit SOV %, models cited, avg rank, GVI) plus a Next-Best-Action card driven by vital triage. If Authority is critical, the card says "Authority is critical (32) → Open Recommendations". If everything's stable, "re-run periodically".
2. 17 sidebar items → 14.** SOV / Models / Recommendations / Vitals were sibling tabs but they're really four cuts of one audit. Folded into a single "Audit" entry with an inner sub-nav strip — one workflow, not four destinations that happen to share data.
3. Cmd+K command palette.** Desktop only. Type "rec" + Enter to land in Recommendations. ~200 lines of vanilla JS, no library.
4. Mobile native share sheet. Two Export pill buttons collapse into one "↗ Share" on mobile. Tap → bottom sheet → CSV routes through navigator.share({files}) → Mail / WhatsApp / Drive / Save to Files in one OS sheet. PDF goes through the system print pipeline (which on iOS+Android already includes Save-as-PDF, AirPrint, share targets).
5. Sticky header + line-clamped descriptions on mobile.** Hamburger always reachable; long intro paragraphs truncate to 2 lines with an inline "more ▾" link. Cut roughly three phone viewports of chrome before users saw any actual data.
6. Visual idiom. Mono // audit comment-style section labels, unified geometric glyphs, accent-tint active states. Distinct from the ~500 other GEO/AI-search tools — no borrowed Linear/Notion grammar.
Live: https://geolikeapro.com/tool
Three things I'd repeat on any next surface:
- Watch a real user navigate before you touch anything. The global "Query Configuration" bar pinned above every tab was obviously wrong once I saw it on his daily workflow.
- Backticks inside HTML comments inside JS template literals are evil. Caught two production breakages this way before I got smarter about CI.
- Mobile-first isn't a slogan — design at 360px first, desktop falls into place after.
Happy to dig into any of it.
1 Like
Comment
I just launched Hosting Checker on my GEO/SEO product (GEOlikeaPro), and the thing I'm most excited about is the architecture, not the marketing.
The problem: every "AI crawler audit" tool I've seen does the same useless thing — they spoof a User-Agent header (`User-Agent: GPTBot`) from their server and check whether the response is 200. That's a meaningless test. Real bot blocks are by IP range, not UA. Hostinger shared plans, Cloudflare's default-on AI bot block (since July 2025), Imperva, Sucuri, Akamai — they all key off the source IP. If you fetch with User-Agent: GPTBot from a Hetzner box, you're not GPTBot, and the host doesn't treat you as such. The test passes. The real GPTBot still gets walled.
The fix: stop spoofing, ask the AI itself.
Hosting Checker takes a URL and, in parallel:
- Hits OpenAI's gpt-4o-search-preview with a prompt: "fetch this URL and tell me the title, h1, and first 200 chars." Whatever ChatGPT actually fetches from OpenAI's IPs, that's ground truth.
- Same for Perplexity (`sonar-pro`).
- DNS-resolves the host, looks up the ASN via Team Cymru DoH, fingerprints known-problematic ASNs.
- Inspects response headers (`cf-mitigated`, x-sucuri-id, x-iinfo, etc.) for vendor signatures.
- Parses robots.txt for AI-bot disallows.
Stack: single Cloudflare Worker (everything inlined into one worker.js), Supabase for auth, KV for caching + rate limits + units. The whole multi-layer probe runs in ~5 seconds.
Abuse hardening: SSRF block (private IPs / link-local / non-default ports rejected pre-DNS and post-DNS resolution), per-user-per-domain rate limit (5/hr), per-domain-global rate limit (30/hr), 30-min KV result cache (cache hits cost 0 units).
Pricing: free tier 50 units/month (~16 scans). Paid tiers add Perplexity probe and higher caps. BYOK makes it free.
The thing I want to know from you: what other "silent infrastructure block" patterns should I fingerprint? Right now I detect the major bot-protection vendors and a handful of named hosts. There's a long tail I'm probably missing.
Tool: https://geolikeapro.com/tool (Hosting Checker tab under Standards)
1 Like
Comment
We had a tool called Agent Standards Validator on geolikeapro.com. It was supposed to tell store owners whether their site was ready for AI agents (MCP, A2A, UCP, etc.). The problem: it was a single LLM call with web search turned on, asking the model to guess which protocols a given URL implemented. No actual handshakes, no .well-known fetches, just a model reading news articles about the site and inferring.
It even had a "pseudo" status to paper over the fact that the model couldn't verify anything.
This week I rewrote it as a deterministic probe rig. What ships now:
- Real .well-known/* probes — 16 paths fired in parallel (mcp.json, agent-card.json, did.json, agentic-commerce.json, ap2.json, openapi.json, llms.txt…)
- Real MCP initialize handshake — JSON-RPC 2.0 against any discovered MCP endpoint, plus tools/list enumeration
- A2A agent-card schema validation — 8 required fields + URL HEAD probe
- 20-UA AI crawler audit — GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Bingbot, Bytespider, Applebot-Extended, MistralAI-User, and 12 others. Flags the "robots.txt-says-allowed-but-Cloudflare-403s-anyway" class of bug that the old tool missed entirely
- JS-parity check — detects hydration-shell-only sites that return 200 with empty pre-JS HTML (most AI crawlers don't run JS)
- Wikidata anchor — SPARQL exact-match on the official-website URL, not fuzzy text search. No more false positives
- Fix-it files — copy-pasteable agent-card.json, llms.txt, robots.txt delta, src/mcp-server.ts (with stack-aware mount instructions for Hydrogen / Next.js / Cloudflare Workers / plain Node), agentic-commerce.json, and a Wikidata submission brief assembled entirely from the brand's own JSON-LD (zero hallucinated facts)
- Wayback Machine fallback — when a site's bot management blocks our Worker IP (Shopify and Cloudflare both do this aggressively), we read the most recent Internet Archive snapshot instead. Real signal even when the live edge says no
- No model needed — the LLM narrative summary is gated behind a feature flag, off by default. The deterministic verdicts are the source of truth; the prose summary was decoration
What I learned along the way (the messy part):
1. Trusting the LLM was a category error. The old tool would confidently declare protocols "detected" based on what news articles said about a site, even when the actual .well-known/* files returned 404. The fix wasn't "better prompting", it was "stop asking the model to do the verification work."
2. Cloudflare Workers share IP reputation across all tenants. Hammering one Shopify store from a Worker quickly puts you in penalty box for all Shopify stores. Throttling helped (3 in flight, 200ms stagger). UA spoofing helped less. Wayback solved it.
3. SPA catch-all routes are a false-positive minefield. If a site returns 200 + <!DOCTYPE html> for /openapi.json (because the SPA serves index.html for everything), it's not "advertised but broken" — it's "not_found with extra steps." Detecting text/html on a JSON-expecting endpoint and downgrading to not_found killed a whole class of bad verdicts.
4. Hostname is a better brand signal than <title> for anywhere the title is marketing copy ("Book your flight now…"). <branddomainname>.com → brandname works on every domain; the title only works when the brand puts itself there.
Live at geolikeapro.com/tool (Agent Standards tab). Free to run. Open to feedback on what verdicts feel wrong on your site.
---
Like
Comment
I'm Alex, an SEO practitioner who's been running e-commerce stores for 12 years. I've spent the last six months obsessing over one thing: how AI assistants are quietly replacing the click between "buyer types a question" and "buyer arrives at a store."
I used to think top-3 Google rankings meant I'd done my job. Then I started checking what ChatGPT and Perplexity say when buyers ask the same questions, and most of the time my brand wasn't even mentioned. Realised that AI doesn't browse search results — it pulls from training data and a small set of cited sources, and that's a different optimization problem than SEO.
So I built GEOlikeaPro — not just for my own stores, but as a working tool for any e-commerce owner trying to figure out the new game:
- Real multi-model coverage: ChatGPT, Perplexity, Claude, and Google AI Overviews — not just one — because each pulls from different sources and ranks differently
- Multilingual output: FAQ schema, expert quotes, and citation fixes generated in your buyers' languages, not just English. Most competitors are English-only; my own stores aren't
- Cloudflare Workers + Supabase + OpenAI API** stack, single worker.js, no framework, fits in my head
The goal: help store owners go from "I have no idea if AI mentions me" to "I know what's missing and how to fix it" in an afternoon, not a quarter.
I'm at the point now where I'm refining what to charge and how to grow, and I'd love honest feedback from the community:
- What's the biggest bottleneck you face when trying to measure where your traffic actually comes from in 2026?
- Would you trust a solo-built GEO tool over a well-funded $99–$400/mo competitor — and what would tip it for you?
Alex
1 Like
Comment
About
My own stores were losing visibility I couldn't measure. That's the worst feeling for an SEO — flying blind. I built GEOlikeaPro because I needed to see what was happening, and it felt wrong to keep it to myself.

Comment