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.
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.
// 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"
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.