I spent the better part of two months doing AEO work on bynorthlight.ca — the Northlight Advisory Services website. Two structured phases, dozens of schema implementations, an llms.txt file, AI crawler configuration, off-site authority building, and a 36-prompt testing matrix across ChatGPT, Perplexity, and Gemini.
This post is a synthesis of what I learned. Not what the theory says. What actually happened when I did it on a real small Canadian business website.
What is AEO and why does it matter in 2026?
Answer Engine Optimization (AEO) — sometimes called Generative Engine Optimization (GEO) — is the practice of making your website visible and citable to AI-powered answer systems: ChatGPT, Perplexity, Gemini, Claude.
Traditional SEO gets you ranked in Google. AEO gets you cited when someone asks an AI a question. These are increasingly different things. Perplexity users don't click to page two of results — the AI synthesizes an answer and cites sources. ChatGPT's response to "who are the best fractional COOs in Canada" either includes your name or it doesn't.
For a service business like Northlight Advisory Services, being cited in an AI response to a relevant prompt is equivalent to being mentioned in an article a prospect would read before they reach out. It is a real acquisition channel, and right now it's largely uncontested terrain for small businesses who do the work.
What we did in Phase 1 and Phase 2
Phase 1 — Foundation
Built the site as a flat HTML site on GitHub Pages. From day one, implemented:
- llms.txt — a structured plain-text file at the root of the site that tells AI systems who we are, what we do, and what pages exist. Think of it as a sitemap for AI.
- robots.txt with explicit AI crawler allowances — GPTBot, ClaudeBot, PerplexityBot, Google-Extended all explicitly allowed.
- sitemap.xml submitted to Google Search Console
- Basic Organization schema on the homepage
- FAQPage schema on the FAQ page
Phase 2 — AEO completion + authority building
Phase 2 was more structured and covered:
- All five priority schema types completed across the site (Organization, Person, Article, FAQPage, HowTo)
- All 10 blog post H2s rewritten to question format for AI extractability
dateModifiedadded to all Article JSON-LD (freshness signal)- Off-site authority signals built: Clutch, Fractionus, Digital Reference, Crunchbase, GitHub org, LinkedIn company page
- HubSpot AI Search Optimization course completed and 36-prompt testing matrix run across ChatGPT, Perplexity, and Gemini
What the prompt testing revealed
ChatGPT is the most accurate
ChatGPT was GREEN (accurate, cites the right entity) on most of the Protect and Improve prompts we tested. One standout: on "Who are the best business strategy consultants for Canadian mid-market firms?" — a Pursue-category prompt we weren't expecting to appear in — ChatGPT named Northlight Advisory Services in a comparison table alongside McKinsey, BCG, Level5 Strategy, Deloitte, and Accenture. That's a meaningful signal that the foundational work is registering.
Gemini has a serious entity collision problem
Gemini was RED on 100% of tested prompts — not because it ignored us, but because it confused us with a completely different organisation called Northlight Solutions Group (NSG), a Salesforce/Agentforce implementation firm. Gemini invented a fictional 5-stage methodology, "Baseline AI" training program, and Lead-to-Cash architecture — none of which are real Northlight Advisory Services offerings.
This is the most significant AEO risk for small businesses with common names: if another entity shares your name (even partially), AI systems can conflate them. The fix is content-based disambiguation — dense entity-signal pages and explicit llms.txt sections naming the other entity and distinguishing from it.
Lesson: If another organisation uses a name that overlaps with yours, AI models may conflate them. Write an explicit disambiguation page. Name the other entity directly. AI systems respond to direct disambiguation much better than to simply asserting your own identity.
Perplexity is directionally accurate where it has data
Perplexity was mostly accurate on the prompts we ran. The challenge was a search limit — we hit the free tier cap partway through testing. We'll complete the remaining prompts in the next monthly triage cycle.
The citation gap: a content channel problem, not a technical problem
After two phases of AEO work, bynorthlight.ca is technically well-optimized. AI crawlers are reading the site. Schema is implemented correctly. llms.txt is current. And yet: on all 10 HubSpot-tracked advisory prompts, we were at 0% citation visibility at the end of Phase 2.
That's not a schema problem. It's a content channel problem.
When we used HubSpot's Chatbeat feature to see what AI actually cites for fractional advisory prompts, the pattern was clear: AI consistently cites listicle-format sites (capstacker.io, chiefjobs.com, gofractional.com) for these queries. Those are "Peer channel" citations — curated lists and directories of advisors and service providers. bynorthlight.ca is not in any of them.
No amount of schema optimization fixes a citation gap that's caused by being absent from the content channels AI is actually pulling from. The technical work is necessary but not sufficient. You also need to be in the right places.
Lesson: Use HubSpot's AI Search Optimization tool (or similar) to see what AI actually cites for your target prompts. If the sources are all listicle sites and directories, that's your gap — not your schema.
What robots.txt AI crawler warnings actually mean
We received a HIGH priority warning from HubSpot's tool about our robots.txt: "Allow AI search crawlers." When I fetched the robots.txt directly and asked an AI to summarize it, it described rules that seemed to block GPTBot, ClaudeBot, and Google-Extended.
This was wrong. The site is on Cloudflare, which manages a section of robots.txt automatically. The Cloudflare AI Security dashboard showed all major AI crawlers in "Allowed" status with active request counts (GPTBot: 8 requests, ClaudeBot: 11, PerplexityBot: 4). The AI summarizing the robots.txt file had misread the Cloudflare-managed section structure.
Lesson: Verify AI crawler allowance at your CDN or WAF control panel — not by reading robots.txt through another AI. If you're on Cloudflare, the AI Security dashboard is the authoritative source. HubSpot's warning was a false alarm caused by the tool not understanding Cloudflare's robots.txt syntax.
The AEO checklist for 2026
Based on what we actually did, here is what I'd recommend for a small business starting AEO work:
Technical foundation
- llms.txt — create at root of your site. Include: entity name, founder, location, description, services, products, current blog posts, preferred sources, what you are not.
- robots.txt — explicitly allow GPTBot, ClaudeBot, PerplexityBot, Google-Extended. Verify at your CDN dashboard, not by reading the file.
- sitemap.xml — submit to Google Search Console. Keep it current.
- Organization schema on homepage — name, url, address, founder, description, sameAs (LinkedIn, Crunchbase etc).
- Person schema on about page — founder name, jobTitle, worksFor, sameAs.
- Article schema on every blog post — with dateModified. Freshness matters for AI.
- FAQPage schema — highest leverage for citation. Use on FAQ page and blog posts with Q&A content.
- HowTo schema — for step-by-step content. Strong citation signal for procedural queries.
Content optimization
- Question-format H2s on all blog posts — AI extracts H2s as candidate answers. "How do I choose a fractional advisor?" outperforms "Choosing an Advisor."
- Answer-first paragraphs — put the answer in the first sentence after each H2. AI models extract the opening of each section.
- Entity disambiguation page if another org shares your name — name the other entity explicitly. Don't just assert your own identity.
- Listicle content in the citation channel AI uses for your prompts — build content in the format AI is actually citing.
Off-site authority
- Crunchbase profile — AI frequently checks Crunchbase for entity verification.
- LinkedIn company page — consistent name, address, URL.
- Industry directories (Clutch, Fractionus, Digital Reference, relevant niche sites) — consistent NAP data (Name, Address, Phone/URL) across all.
- Wikipedia — 40% of ChatGPT citations come from Wikipedia. Worth pursuing once you have enough external signals to meet notability requirements.
- Peer channel listings — get listed on the sites AI already cites for your target prompts. This is often more impactful than any technical work.
Measurement
- Prompt testing matrix — create a set of 20–40 prompts across ChatGPT, Perplexity, Gemini. Categorize as Protect / Improve / Pursue. Run monthly.
- HubSpot AI Search Optimization tool (or similar) — gives you citation visibility % and Chatbeat source data. Free 28-day trial.
- Google Search Console — baseline your traditional search performance. AEO and SEO reinforce each other.
- Gemini-specific retest — if Gemini is confusing you with another entity, retest monthly after publishing disambiguation content. Takes 30–60 days for training data to update.
What I'd do differently
If I were starting AEO work from scratch on a new site today, I'd do the technical foundation (llms.txt, robots.txt, Organization/Person schema) on day one — it's two hours of work and it costs nothing to have it in place before you need it.
I'd run a prompt testing matrix in week one, before doing anything else, to understand where AI currently puts me. That tells you whether you have a technical problem, a content problem, or a citation channel problem — and those have very different fixes.
And I'd spend at least as much time on off-site signals as on on-site schema. AI citation is an authority and trust problem as much as it's a technical problem. Being in the right directories, being mentioned in the right places, being findable through multiple consistent signals — that's what moves citations, not incremental schema refinements.