How this Dad-SEO Discovered the Exact Way ChatGPT Surfaces Local Results
Every December, I go through the same ritual: my son picks a new obsession, and Iāhis resident SEO dadāend up researching it like Iām preparing a technical audit for a Fortune 500 client.
This year? Bikes. Mountain bikes. BMX bikes. Bright green ones. Ones with tiny shocks. Ones that ālook cool.ā
So naturally, I did what every parent does during holiday chaos: I opened ChatGPT and typed:
ābike shops near me with great reviewsā
Within seconds, I got a tidy list of nearby bike shops, complete with star ratings, descriptions, andāof courseāimage cards. And as my son leaned over my shoulder saying āCan we get one that looks like this?ā I found myself thinking:
š How did ChatGPT decide which bike shops to show?
š Why these shopsāand not others?
š What signals does the model care about?
This is where the SEO brain flips on automatically. And this time, the ādad trying to buy a bikeā side and the āSEO curious about AEO/GEO mechanicsā side collided.
And yesāwhat I found is worth sharing.
Because the answer lies inside ChatGPTās own network logs.
š Why SEOs Need to Look Inside ChatGPTās Network Logs
Recently, an AEO/GEO expert on LinkedIn shared a quick tutorial on how to inspect ChatGPTās internal network traffic using Chrome DevTools. I followed the process out of curiosityāand what I found changed how I think about AI search.
If youāve ever wondered:
- What pages does ChatGPT fetch behind the scenes?
- What content does it actually read?
- How are local businesses ranked?
- Why did the model choose that site for citation?
ā¦then youāll want to bookmark this post.
Because once you learn to read these logs, ChatGPT becomes an open book.
š§ The Setup: Inspecting ChatGPT While Shopping for a Bike
Hereās the exact Christmas-bike shopping workflow I followed:
- I typed my query into ChatGPT
- I copied the chat ID from the URL
- I opened Chromeās Inspect ā Network tab
- I filtered requests by that chat ID
- I refreshed the page
- I clicked the request with the orange icon
Boomāinside the logs.
On the right-hand panel sits ChatGPTās real reasoning pipeline: query fanouts, snippets, confidence scores, URL-level metadata, and sources.
This is where we can finally see the real ranking signals.
Look for your URL chat ID under āNameā with the orange icon. Click on āResponseā. Now you can review the logs!
š¦ Ranking Signal #1: search_queries ā The Fanout Layer
This is the single most important ranking signal in ChatGPTās local results. Itās the modelās way of rewriting your intent into multiple structured web queries.
For my bike-shopping prompt, the fanouts looked like:
The single most important ranking signal in ChatGPT local results.
This tells you immediately:
- ChatGPT inferred location (Vancouver, WA)
- It split intent (purchase vs. repair)
- It diversified phrasing to improve coverage
If your business doesnāt match these variations, you wonāt surface.
This is the āWhat does ChatGPT think I meant?ā layer.
š§© Ranking Signal #2: snippets ā What Content Gets Extracted
This tells you which specific parts of a page ChatGPT grabbed.
For bike shops, I saw snippet entries like:
The specific parts of a page ChatGPT grabbed.
If ChatGPT extracts text from your site, youāre in a great position.
If it doesnāt extract from you, you were deemed:
- irrelevant
- unhelpful
- unreadable
- or too JS-heavy
This is the content relevance layer.
š·ļø Ranking Signal #3: page_info ā Titles, Descriptions, Canonicals
This is where ChatGPT reads the metadata we optimize for clients every day.
For example:
ChatGPT does read the metadata. An example of how great SEO helps surface results in ChatGPT.
Bad metadata = bad ranking.
Just like Google.
But hereās the twist: ChatGPT often uses your meta description as the snippet. Not always true with Google.
š Ranking Signal #4: semantic_scores ā Neural Relevance
This is where things get spicy.
This score determines how relevant ChatGPT thinks your page is to the userās question.
Example:
Semantic Scores. The neural ranking layer = GOLD
Interpreting scores:
- ā„0.95 ā extremely strong match
- ā„0.85 ā likely to be cited
- ā„0.70 ā surfaced but maybe not cited
- <0.50 ā low relevance
This is the neural ranking layer, and it is gold.
š§ Ranking Signal #5: source ā Local Data vs. Web Data
This layer matters most for ānear meā queries.
You might see:
This layer matters most for ānear meā queries.
Local Search / Place Data ā strongest signal This is equivalent to the ālocal packā in Google.
If the source says place data, youāve entered ChatGPTās local business engine.
This is where NAP consistency matters, even in AI search.
š Ranking Signal #6: citations ā Who Actually Won
This is the final list of URLs ChatGPT chose to surface.
If a page makes it into this block, it:
- matched the fanouts
- received strong snippet extraction
- had good semantic scores
- passed the trust filters
This is the final ranking layer.
THE FINAL RANKING LAYER
š¤ What DOESNāT Influence Ranking
(Important for SEOs)
Inside the logs, youāll see sections like:
- āimage_resultā
- āimage_search_queryā
These are purely for UI decoration.
They do not influence:
- ranking
- citations
- discovery
- authority weighting
- semantic scoring
Zero ranking impact.
š So What Bike Did I End Up Getting?
After all of this technical sleuthing, my son still picked the green bike he liked from the picture carousel.
Kids donāt care about semantic scores. They care about how cool the bike looks.
But now when I use ChatGPT for local searches, I understand exactly why certain businesses surfaceāand how we can optimize for it.
Because the truth is:
š§ ChatGPTās ranking signals are visible, inspectable, measurable, and influenceable. You just need to know where to look.
š Want to Learn the Inspect-Dev-Tools Method?
A recent walkthrough by Josh Blyskal on LinkedIn inspired this deep dive. His method of accessing ChatGPTās network logs through Chrome DevTools is a must-learn skill for any AEO/GEO professional.
Follow Josh and view his tutorial here. https://www.linkedin.com/feed/update/urn:li:activity:7399096886990897152/