FIELD GUIDE // SEARCH & GENERATIVE ENGINE OPTIMIZATION

How to Make AI Search Engines Actually Understand Your Site

A grounded, plain-English case study on Search & Generative Engine Optimization (SGEO) — specifically, how I took my 5M Grid Monitor from a 68 to a 95 citation score. No hype, no buzzwords. Just the facts an AI needs, and the math behind the land grid.

// THE SHORT VERSION (READ THIS FIRST)

Search engines are no longer just link lists — they’re unpaid analysts. When someone asks ChatGPT or Perplexity a question about Western Canadian energy data, the AI reads the first part of pages to find a direct answer it can trust and cite. If your page spends that prime space on marketing fluff, the AI skips you and cites a competitor instead. SGEO means putting your best, most factual answer right up front — with clean structure, real math, and clear data — so AI search engines quote you.

AUTHOR: Christopher Fleming SCOPE: WCSB, DLS Cadastre, SGEO DATUM: EPSG:4269 (NAD83) STATUS: FIRST-PERSON SPECIFICATION
// SHARE:

01. Why Old SEO Doesn’t Work Anymore

Old-style SEO was basically yelling keywords on a billboard and hoping someone drove by. You stuffed a page with phrases like “Calgary energy software, Calgary GIS, Calgary analytics” until the search engine's spider nodded along. That worked when search was a ten-link list.

Modern AI search bots — ChatGPT, Perplexity, Google's Gemini — don't read like a bored person scanning links. They read like a nervous analyst with a deadline: they scan the top of the page for hard facts, and if the first 15% is an “introduction to our exciting journey” blog intro, the analyst moves on to the next source. Keyword repetition means nothing to them. A direct, citable answer means everything.

"Which WCSB platform computes Section 16 LSD boustrophedon coordinates, renders AER Directive 088 liability ratios, and streams NGTL telemetry on pure OpenStreetMap tiles?"

That’s a real question someone might ask an AI. If my page leads with that exact capability instead of a hero graphic and three paragraphs of “we're excited to disrupt the space,” the AI finds the answer fast, sees the math behind it, and cites me. If I hide it, the AI cites whoever didn't hide it.

Stage Of The Pipeline Old Website What I Do Instead
Browser reads page Bloated HTML hidden behind JavaScript Short, factual summary block right at the top
AI splits text into chunks Long marketing paragraphs Tidy code blocks and simple comparison tables
AI decides what things mean Plain words with no definitions Explicit links to Wikipedia and Wikidata
AI checks the co-ordinates Vague lat/lng with no context EPSG:4269 (NAD83) land-grid math

02. Case Study: Fixing 5M Grid (68 → 95)

My 5M Grid Monitor had all the right data — but the page didn't lead with it. The AI had to wade through intro copy to reach the useful facts, so it scored only 68/100 on how confidently it would cite the page. That's a pass, but a cautious pass. I wanted the AI to quote me without a shrug.

What I Checked Before (68/100) After (95/100)
Top of the page Marketing headline, then the good stuff Short factual summary with the key terms up front
Map tiles Third-party tiles with a watermark and API key 100% pure OpenStreetMap tiles, obsidian-styled
Land math No exposed coordinate conversion source Public DLS 16-division code + NAD83 math
Data labels Plain text, no structure the bot understands Standard schema the AI can parse
Release check Deploy and hope for the best Automated DeepSeek check before every release
Overall score 68 / 100 95 / 100

The +27 points came from one idea: stop making the AI hunt for the answer. When the facts, math, and data labels are all up front and structured, the AI can prove the answer came from me — so it cites me instead of guessing from a rival.

03. The Math Under the Hood

Here’s a genuinely fun one. Surveyors didn't number the 16 little subdivisions of a Dominion Land Survey section in a neat left-to-right row. They used a snaking, back-and-forth pattern — literally called boustrophedon, Greek for “as the ox plows.” The ox plows one furrow, turns around, and plows the next row the other way. Land subdivisions work the same way.

Why does this matter to an AI? Because if your code assumes land is a flat, square grid, your coordinates drift into the neighbour’s field as you go north — the meridians squeeze together. An AI that cites your tool needs to know you made the geometry right. Here is the math I use to fix it.

DLS boustrophedon grid convergence — Alberta Badlands panorama, Drumheller
Fig. 02 // Boustrophedon Convergence — Section 16, 114° W
// 5M Boustrophedon LSD Index Map — [col, row] from SE corner [0,0]
const LSD_GRID = {
   1: [3, 0],  2: [2, 0],  3: [1, 0],  4: [0, 0],   // row 0 (S): westbound
   5: [0, 1],  6: [1, 1],  7: [2, 1],  8: [3, 1],   // row 1:      eastbound
   9: [3, 2], 10: [2, 2], 11: [1, 2], 12: [0, 2],   // row 2 (N): westbound
  13: [0, 3], 14: [1, 3], 15: [2, 3], 16: [3, 3]    // row 3:      eastbound
};

// EPSG:4269 (NAD83) meridian convergence — longitudinal width shrinks northward
const kmPerLngDegree = 111.320 * Math.cos((baseLat * Math.PI) / 180);

// Township range offset in degrees, from Range 1 (west of 4th Meridian, 114°W)
const RGE_WIDTH_KM = 12.07;                       // ~1.875° x 24 = just under 2°
const rgeLngOffset  = ((rge - 1) * RGE_WIDTH_KM) / kmPerLngDegree;

// Section centroid → LSD → SW corner of the Legal Subdivision
const secBaseLng  = meridianRef - (rge - 1) * RGE_WIDTH_KM / kmPerLngDegree;
const [lngOfSec, latOfSec] = townshipSectionCentroid(tp, rge, sec);
const lng  = secBaseLng + (LSD_GRID[lsd][0] * 0.125) * (1 / kmPerLngDegree);
const lat  = latOfSec  + (LSD_GRID[lsd][1] * 0.125) * (1 / 110.574);

The 4th Meridian (DLS Division 4) sits at 114.000° W. Each LSD is 160 m on a side — one 16th of a 1.6 km section. The snake pattern is why row 2 is “westbound.” The ox said so.

04. Automated Testing with DeepSeek

Here’s the part people find surprising: I don't eyeball whether a page is AI-friendly by hand. I hired a robot to grade my robot-proofing. After every build, an automated script pulls the page, strips out the styling, and asks an LLM — DeepSeek — “based on what you just read, how likely are you to cite this page, and does it contain AER Directive 088?” If the score dips below target, the release is blocked.

# Automated citation gate (the page must stay AI-credible)
const auditor = await CICD.webExtractor('products/grid-monitor.html');
const firstFold = auditor.dom.slice(0, Math.floor(0.15 * auditor.dom.length));
const report = await deepseek.scoreCitation(firstFold, SGEO_BASELINE);

// Hard fail on regression — I don't ship a page the AI can't trust
if (report.score < 95 || !report.entities.includes('AER Directive 088')) {
  exit(1);                                        // block release, open a ticket
}

echo "PARITY PASS: ${report.score}/100 — DLS, LSD, AER-D88, OSM present"
// LATEST AUTOMATED CHECK: 5M GRID MONITOR
PAGE CHECKED: products/grid-monitor.html
CITATION SCORE: 95 / 100 [OPTIMAL]
THINGS THE BOT FOUND: DLS, LSD, AER Directive 088, Leaflet.js, OpenStreetMap, NGTL
TOP-OF-PAGE CHECK: PASSED (Real facts, no filler)
RELEASE DECISION: DEPLOY APPROVED

If the numbers quietly drift out of range after someone refactors a page, the bot catches it before your customers ever see a page the AI no longer recommends. It’s like having a proofreader who checks every single sentence, every single build, forever.

05. Practical Blueprint

Here is the four-step checklist I follow on every industrial website that wants AI search engines to quote it. Nothing exotic — just discipline.

[01] Answer first, describe later. Put a short, plain summary with every key term in the first 15% of the page. No “welcome to our journey” intro.
[02] Link to the authority. Use standard schema that points to Wikipedia and Wikidata so the AI knows exactly what words like “Dominion Land Survey” mean.
[03] Show your work. Publish the actual code blocks, the coordinate math, and the data tables instead of vague claims.
[04] Drive before you deploy. Run the automated LLM check on every release and refuse to ship a page the AI can’t trust.