Why ChatGPT cites American sources for Canadian queries
Ask a generative engine to recommend a supplier in Montréal or Toronto, then look at what it names. Most of the time the sources are American. That isn’t bias, and it isn’t a comment on your content — it’s entity resolution, and it’s fixable.
What you’ll take away
- Generative engines don’t rank pages; they compose answers from sources they can identify. Being unidentifiable is a different failure from ranking badly.
- Four mechanisms push models toward US sources: corpus volume, unresolved entities, missing corroboration, and a retrieval backend with its own geography.
- Canada adds a fifth problem — two languages and provinces whose names double as city names.
- The technical fix (crawler access, structured data, hreflang, answer formatting) takes about a day.
- The part that actually decides the outcome — independent sources confirming your entity — takes three to six months.
I run this test with almost every Canadian client, and the result is consistent enough that I now open engagements with it. Ask ChatGPT, Perplexity or Google’s AI Mode to recommend a provider in a Canadian city, in the client’s own category. Then read the citation list rather than the answer. Most of the time, the named sources are American: a US trade publication, a Forbes listicle, a Reddit thread, Wikipedia. Sometimes the engine names American companies as options for an explicitly Canadian query.
The instinct is to call this bias. It isn’t, or at least not in any way you can act on. It’s a mechanical consequence of how these systems resolve who and what things are — and unlike bias, mechanics can be worked with.
This matters more every quarter. CIRA’s 2026 Canadian Internet Trends report found that 46% of Canadians used a generative AI tool in the past year, up from 33% in 2025 and 16% in 2024, and that 52% of those users have used AI as a search engine. Only 19% say they always verify an AI answer against another source.1 For a growing share of your market, the AI answer is the research phase. If you’re not in it, you’re not on the list.
1. Run the test yourself
Don’t take my word for the pattern. It takes three minutes and it’s the only way to know where you stand rather than where the market stands.
- Open ChatGPT with web search on, in a logged-out or temporary chat so your history doesn’t colour the result.
- Ask the question a buyer would actually type: not “who is Hicham Souilmi” but “I need an SEO consultant for a bilingual site in Montréal — who should I talk to?”
- Note whether you’re named at all, and write down every domain it cites.
- Repeat the same question in the other official language.
- Repeat the whole thing in Perplexity and Google AI Mode.
Log the results in a table like this one, and keep it. Rerun it monthly — the value is in the trend line, not the snapshot.
| Prompt | Engine | Language | You named? | Sources cited |
|---|---|---|---|---|
| Buyer-intent question, your city | ChatGPT | EN | No | 3 × US, 1 × global |
| Buyer-intent question, your city | ChatGPT | FR | No | 2 × FR-from-France |
| Category definition question | Perplexity | EN | No | Reddit, US blog |
| “Best X in [province]” | Google AI Mode | EN | Yes | Your site + directory |
The three-minute diagnostic
Ask the same question in French and in English. The gap between the two answers tells you where your entity problem sits. If you appear in one language and vanish in the other, the problem is language targeting. If you vanish in both, it’s corroboration.
2. What the citation data actually shows
Two findings from published research explain most of what you’ll see in that table.
AI citations are not your Google rankings. Semrush’s comparison of Google AI Mode against traditional search found very different degrees of overlap by surface: AI Overviews still leaned heavily on the classic index, with roughly 86% domain and 67% URL overlap with the top ten organic results, while AI Mode was much looser at around 54% domain and 35% URL overlap. ChatGPT showed the weakest overlap with Google’s top ten of any surface tested, which tracks with its dependence on a different retrieval backend.2 The practical reading: ranking first on Google buys you a decent shot at an AI Overview and very little leverage inside ChatGPT.
Content-level changes measurably move generative visibility. The KDD 2024 paper that named the field, GEO: Generative Engine Optimization, ran controlled tests across a large query benchmark and found that specific edits — adding citations, adding quotable statistics, tightening claims — produced meaningful gains in how often a source was surfaced inside generated answers, with effects varying sharply by domain.3 This is the part people miss: generative visibility responds to how a page states things, not just to whether the page exists.
Sitting underneath both findings is a well-documented behavioural tendency. An EMNLP 2024 study of brand bias in LLMs found models systematically associate global brands with positive attributes and local brands with negative ones — and, notably, that they shift toward local brands when the domestic country is stated explicitly in the prompt.4 The default leans global. Explicit local signal pulls it back. That is the whole game in one sentence.
3. Four reasons a model reaches for an American source
Corpus volume
The English-language American corpus dwarfs the Canadian one, and the French-language French corpus dwarfs the Québécois one. When a model has no strong reason to prefer a local source, sheer density decides. This is why a French-language query from Montréal often surfaces a Paris consultancy: the model isn’t choosing France, it’s choosing the largest French-language cluster it has.
Unresolved entities
A generative engine has to decide what your website is before it can decide whether to cite it. A page with a phone number in the footer and “serving the Montreal area” in the copy is a page. An entity is a thing with a type, a name, an identifier, a location and confirmations. Most Canadian SMB sites are pages.
No corroboration
This is the one that decides everything. If your business is described only on your own website, the model has exactly one witness — and that witness is you. If the same name, the same address and the same category appear on LinkedIn, a Google Business Profile, a provincial registry, an industry association and Wikidata, you become a fact rather than a claim.
The retrieval backend has its own geography
The engines don’t share an index. ChatGPT’s search layer, Google’s AI surfaces and Perplexity’s pipeline each retrieve differently, and each inherits the geographic coverage of whatever it retrieves from. Being strong in one tells you very little about the others, which is why the prompt panel above has an engine column.
4. The Canadian layer: two languages, one ambiguous province
Canadian businesses carry two extra difficulties that US businesses simply don’t have.
The bilingual split. Most Canadian sites either mix French and English
on one URL, or run two versions with no formal relationship declared between them. Both
leave a model guessing. Without reciprocal hreflang and a shared entity
identifier, your French pages and your English pages look like two unrelated weak
sites instead of one bilingual strong one.
Names that mean two things. “Quebec” is a province and a city. “Ontario” is a province and a town in California. “London” is in Ontario and in England. A human disambiguates from context; a retrieval system disambiguates from explicit declarations, or not at all. If nothing on your site states the province in machine-readable form, you are competing for attention against a city in California.
A site confirmed nowhere else isn’t an entity to a model. It’s one page among billions.
— Hicham Souilmi
5. Step 1 — Make sure you’re reachable at all
Before anything clever, check the boring thing. A meaningful share of sites block the
crawlers that feed AI answers, and most of them didn’t decide to — the block came from
a CDN default, a security plugin, or a copy-pasted robots.txt from a
publisher who did decide to.
Do three checks, in this order:
- Open
yourdomain.ca/robots.txtand search forGPTBot,OAI-SearchBot,ChatGPT-User,ClaudeBot,Claude-SearchBot,PerplexityBotandGoogle-Extended. - Check your CDN or WAF bot-management rules. Cloudflare, in particular, has managed settings that block AI crawlers independently of your
robots.txt, so the file can look permissive while the edge refuses the request. - Grep your server logs for those user agents over the last 30 days. If a bot never appears, it never arrived — whatever the file says.
It’s worth knowing that these bots do different jobs. OpenAI documents three separate
agents: GPTBot crawls for model training, OAI-SearchBot builds
the search index that produces citations, and ChatGPT-User fetches a page
live when a user’s question requires it.5 Blocking all
three because you don’t want to train someone’s model also removes you from the answers.
If that’s the trade-off you want, this is the shape of it:
# Allow the crawlers that can cite you. Refuse the one that only trains.
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: GPTBot
Disallow: /
Sitemap: https://www.yourdomain.ca/sitemap.xml
Do this first
Every other recommendation in this article assumes the crawler can reach the page. If it can’t, nothing downstream matters. This check takes ten minutes.
6. Step 2 — Declare a complete entity
The fix here isn’t editorial. It’s a declaration problem: state, in machine-readable form, exactly what a model would otherwise have to infer.
| Signal | What it fixes | Common mistake |
|---|---|---|
areaServed |
Ties your service to a named city and province instead of a vague region | Writing “Canada” only, so you compete nationally and win nowhere |
sameAs |
Claims that your profiles and your site are the same entity | Treating it as a social-links widget instead of an identity claim |
hreflang |
Separates your French and English markets instead of competing them | Non-reciprocal tags, or fr instead of fr-CA |
Unique @id |
Stops your pages declaring contradictory entities | Copying one block of JSON-LD across every page unchanged |
Here’s the shape of it. areaServed and sameAs are both
standard schema.org properties, and Google documents which types it actually consumes
for rich results — but structured data is read by far more systems than Google’s.6
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"@id": "https://www.yourdomain.ca/#organization",
"name": "Your Business Inc.",
"url": "https://www.yourdomain.ca/",
"inLanguage": ["fr-CA", "en-CA"],
"address": {
"@type": "PostalAddress",
"streetAddress": "123 rue Sainte-Catherine O",
"addressLocality": "Montréal",
"addressRegion": "QC",
"postalCode": "H3B 1A1",
"addressCountry": "CA"
},
"areaServed": [
{ "@type": "City", "name": "Montréal" },
{ "@type": "AdministrativeArea", "name": "Québec" },
{ "@type": "Country", "name": "Canada" }
],
"sameAs": [
"https://www.linkedin.com/company/your-business",
"https://www.wikidata.org/wiki/QXXXXXXX",
"https://www.crunchbase.com/organization/your-business"
]
}
Two rules that people break constantly. First, one @id per
entity, reused everywhere that entity is referenced — not one per page.
Your organisation is the same organisation on every URL; say so. Second, the values in
sameAs must be accounts that actually confirm the details you’ve declared.
A LinkedIn page listing a different city undermines the claim rather than supporting it.
For the bilingual side, declare the pair reciprocally on both pages, and include an
x-default:
<link rel="alternate" hreflang="en-CA" href="https://www.yourdomain.ca/services.html">
<link rel="alternate" hreflang="fr-CA" href="https://www.yourdomain.ca/fr/services.html">
<link rel="alternate" hreflang="x-default" href="https://www.yourdomain.ca/services.html">
Not sure what your entity looks like from the outside?
Thirty minutes to test your brand in ChatGPT, Perplexity and Google AI, and see exactly which signals are missing. No commitment, no deck.
Book a call7. Step 3 — Write answers a model can lift
Generative engines reuse question-and-answer structures readily, because the retrieval step is looking for a passage that resolves a query. The practical rule: pose the question in a heading, then answer it in one self-contained sentence, before you elaborate.
Self-contained is the hard part. A sentence that begins “this approach also works for…” is useless once it’s extracted from its paragraph. The extracted unit has to survive without the context around it.
Doesn’t survive extraction
“It usually takes about that long, depending on your situation and the factors above.”
Survives extraction
“A bilingual entity fix in Canada takes about one day of technical work and three to six months of corroboration before citations change.”
Beyond that, three formats punch above their weight:
- Definitions. One sentence, beginning with the term itself, before any qualification.
- Comparison tables. Structured, labelled, and readable without the surrounding prose.
- Numbered procedures. Steps that each name a concrete action rather than a principle.
And name yourself explicitly. Write “Montréal, Québec” rather than “here” or “the city”. Write the province. Write the country at least once on any page that targets a local market. It reads slightly redundant to a human and it removes an entire category of ambiguity for a machine.
8. Step 4 — Get corroborated
Everything above takes a day. This takes months, and it is the part that decides the outcome. An entity confirmed across three or four independent sources counts for more than ten well-optimised pages on your own domain.
Canadian surfaces worth the effort, roughly in order of return:
- Google Business Profile, with the address, categories and service areas matching your schema exactly — same spelling, same accents.
- LinkedIn company page and personal profile, both stating the same location and category. LinkedIn is among the most-cited sources across AI surfaces in B2B contexts.
- Provincial and federal registries — the Registraire des entreprises du Québec, Ontario’s business registry, Corporations Canada. These are high-trust, machine-readable and permanent.
- An industry association or professional body with a public member directory.
- Wikidata, if your organisation genuinely meets notability requirements. Don’t force it; a rejected item is worse than no item. Wikidata is a structured identity hub that many systems consult.
- Genuine Canadian press or podcast mentions. One piece in a real trade publication beats twenty directory listings.
Consistency matters more than volume. Four sources agreeing on your name, address and category do more than twelve sources disagreeing. Before you add a fifth listing, audit the four you have.
9. How to know whether any of it worked
Three measurements, monthly, in this order:
| What | Where | What it tells you |
|---|---|---|
| AI crawler hits | Server logs, filtered by user agent | Whether you’re reachable at all — the access layer |
| Referral sessions | Analytics, hostnames like chatgpt.com, perplexity.ai |
Whether citations are producing actual visits |
| Prompt panel results | Your own spreadsheet, ~20 prompts, both languages | Whether you’re named, and who’s named instead |
The third one is the only real measure of GEO progress, and there’s no shortcut to it. Generative answers vary between runs, so a single test proves nothing; a fixed panel rerun on the same date each month, in both languages, produces a trend you can act on. Keep the prompts identical even when you’re tempted to improve them — changing the instrument invalidates the series.
10. What doesn’t work
- “llms.txt” as a substitute for the real work. It’s an interesting proposal, but no major engine has committed to consuming it as a ranking or citation input. Ship it if you like; don’t count it.
- Publishing more, faster. Volume was a weak strategy for SEO and it’s a worse one here. Citation goes to passages that resolve a question cleanly, not to domains with the most URLs.
- Stuffing your pages with brand mentions. Repetition on your own domain doesn’t create corroboration. It’s still one witness, saying the same thing louder.
- Buying directory listings in bulk. Inconsistent listings actively hurt, because they introduce conflicting facts about the entity you’re trying to make unambiguous.
- Treating GEO as a separate discipline with separate content. It’s the same content, made explicit enough to be extracted.
11. A 30-day plan
- Week 1 — Diagnose. Build the prompt panel, run it in both languages across three engines, and log the baseline. Audit
robots.txtand CDN bot rules. Grep 30 days of logs for AI user agents. - Week 2 — Declare. Ship the entity schema with one
@id, fullareaServed, a real postal address, andsameAspointing only at profiles you control and have verified. Fix hreflang reciprocally. - Week 3 — Rewrite. Take your five highest-intent pages. Add a question-led heading and a one-sentence answer to each section. Add one comparison table. Name the city, province and country explicitly.
- Week 4 — Corroborate. Align Google Business Profile, LinkedIn and your registry entry so all three match your schema character for character. Identify two realistic press or association targets and start the outreach.
Then wait, and rerun the panel on the same day next month. The technical work shows up in weeks. The corroboration work shows up somewhere between month three and month six, which is why the people who start now are the ones who’ll be cited when it matters.
Questions people ask me about this
Why does ChatGPT recommend American companies for Canadian searches?
Because it can resolve the American company as an entity and it usually cannot resolve yours. A generative engine doesn’t rank pages — it composes an answer from sources it can identify and trust. American businesses are described across far more corroborating sources, so they resolve cleanly. If nothing outside your own website confirms who you are, where you operate and what you do, the model has a page but no entity, and falls back to the corpus it knows.
Does a .ca domain help me get cited by AI?
A little, and never on its own. A .ca domain is one weak geographic
hint. Explicit structured data — areaServed naming the city and
province, a real postal address, and sameAs links to profiles that
confirm the same details — carries far more weight, and works just as well on a
.com.
If I block GPTBot, can I still appear in ChatGPT answers?
Not reliably. OpenAI runs separate crawlers for separate jobs: GPTBot
for training, OAI-SearchBot for the search index behind citations,
and ChatGPT-User for live fetches a user triggers. If you want
citations without contributing training data, allow the last two and disallow the
first. Blocking all three removes you from the answer entirely.
How long before I start being cited?
The technical layer — crawler access, structured data, hreflang, answer formatting — takes about a day to ship and surfaces within a few weeks. Corroboration takes three to six months. That second part is what actually decides the outcome, which is why the honest answer to “how fast” is “start now”.
Do I need separate pages for French and English?
Yes. Separate URLs, reciprocal hreflang for fr-CA and
en-CA, plus an x-default. A single page mixing both
languages gives the model contradictory signals and usually leaves you invisible
in both markets rather than visible in one.
Is GEO actually different from SEO?
It’s the same discipline aimed at a second audience. The foundations are identical: crawlability, structure, clarity, authority. What changes is the unit of success — a cited sentence rather than a ranked page — and how much weight entity clarity and external corroboration carry relative to classic ranking factors. Anyone selling you GEO as a wholly new discipline is selling you a rebrand.
Do I need a paid GEO tracking tool?
Not to start. A twenty-prompt spreadsheet rerun monthly in both languages tells you more than most dashboards, because you choose prompts your actual buyers would type. Consider a tool once you’re tracking more brands or markets than a spreadsheet can hold.
Sources
- CIRA, Canadian Internet Trends 2026, July 2026 — generative AI adoption, use of AI as a search engine, verification habits. cira.ca
- Semrush, How Google’s AI Mode Compares to Traditional Search and Other LLMs — domain and URL overlap between AI surfaces and Google’s top ten organic results. semrush.com
- Aggarwal, Murahari, Rajpurohit, Kalyan, Narasimhan & Deshpande, GEO: Generative Engine Optimization, KDD ’24, ACM. doi.org/10.1145/3637528.3671900
- “Global is Good, Local is Bad?”: Understanding Brand Bias in LLMs, EMNLP 2024 — global-versus-local brand association and country-of-origin effects. arxiv.org/abs/2406.13997
- OpenAI, Bots — documentation for GPTBot, OAI-SearchBot and ChatGPT-User. platform.openai.com/docs/bots
- schema.org, areaServed and sameAs; Google Search Central, structured data documentation.
Where this article describes patterns without a citation, it reflects my own testing with Canadian clients rather than published research. Rerun the protocol in section 1 and judge for yourself.