{"id":12777,"date":"2026-07-29T20:08:37","date_gmt":"2026-07-29T12:08:37","guid":{"rendered":"http:\/\/longzhuplatform.com\/?p=12777"},"modified":"2026-07-29T20:08:37","modified_gmt":"2026-07-29T12:08:37","slug":"how-perplexity-actually-picks-sources-i-read-the-stream-not-the-answers-via-sejournal-suganthan","status":"publish","type":"post","link":"http:\/\/longzhuplatform.com\/?p=12777","title":{"rendered":"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan"},"content":{"rendered":"<p><\/p> <div id=\"narrow-cont\"> <p>I promised this one at the end of the ChatGPT teardown. I\u2019ve since had to go back to ChatGPT again in a follow-up\u00a0because it moved under me while the post was still fresh. Perplexity was next, so here it is.<\/p> <p>The question hasn\u2019t changed, only the logo. \u201c<strong>How do I show up in Perplexity?<\/strong>\u201d<\/p> <p>And the answer comes back just as vague. Be a credible source, get cited, go do Reddit. Same play, different engine.<\/p> <p>So I did the same thing I did to ChatGPT.<\/p> <p>I read what Perplexity streams to my browser underneath the answer, on my own logged-in Pro account, while the reply was still rendering.<\/p> <p>One difference up front, because it sets the tone for the rest of the article.<\/p> <p>With ChatGPT, you can pull the finished conversation back from its API and read it at your leisure.<\/p> <p><iframe class=\"sej-iframe-auto-height\" id=\"in-content-iframe\" scrolling=\"no\" src=\"https:\/\/www.searchenginejournal.com\/wp-json\/sscats\/v2\/tk\/Middle_Post_Text\"><\/iframe><\/p> <p>Perplexity doesn\u2019t let you.<\/p> <p>The answer is a live stream that\u2019s gone the moment it finishes, and trying to re-fetch it just throws an error. So I hooked <code>window.fetch<\/code> before hitting enter and teed the stream as it arrived.<\/p> <blockquote> <p><em><strong>Before you quote a number from this, read this.<\/strong> It\u2019s one person, one logged-in Perplexity Pro account, build <code>7fe6ad4<\/code>, captured on 25 June 2026. 8 captures in all, 7 query types (informational, commercial, comparison, news, local, shopping, how-to) plus one Deep Research run. Single user, Dubai geo. The structural findings, the fields Perplexity uses and how they behave, are firm, because you only need to see a field once to know it\u2019s real. The numbers, any percentage or ranking or \u201cYouTube wins\u201d, come from that tiny single-user sample and my own SaaS, tech and local query choice skews them. Treat those as direction, not measurement. I flag which is which throughout. One more date for the record. Before publishing I re-ran 3 spot-check captures on 21 July 2026, build <code>df49f17<\/code>, roughly four weeks and several builds after the originals. The structure held except where I say otherwise in the body, and one thing changed enough to earn its own section, the trust field.<\/em><\/p> <\/blockquote> <h2>How To Rank In Perplexity On 1 Screen<\/h2> <p>Every row is unpacked with the evidence further down. The right column is the move.<\/p> <div class=\"scrl-table\"> <table> <thead> <tr> <th><strong>What The Wire Shows<\/strong><\/th> <th><strong>The GEO\/AI SEO Move<\/strong><\/th> <\/tr> <\/thead> <tbody> <tr> <td>A 16-head classifier routes every query, with fixed thresholds and a topic label.<\/td> <td>Read which surface your money queries trigger (maps, video, image, finance) and compete there, not just in blue links.<\/td> <\/tr> <tr> <td>Web results can carry a written trust note, credible or trusted, scoped per domain.<\/td> <td>Become the unambiguous first-party source for your patch, then check whether your domain carries an entry.<\/td> <\/tr> <tr> <td>skip_search is always false, and how-tos escalate to Study mode with a video tab.<\/td> <td>Every query is winnable here, and instructional content gets a page slot plus a video slot.<\/td> <\/tr> <tr> <td>The default fan-out is 1 round of conservative variants on your literal phrasing.<\/td> <td>Optimize for the exact words people type, not a cloud of adjacent topics.<\/td> <\/tr> <tr> <td>Retrieved and cited are different lists, and the winners flip by intent.<\/td> <td>Fresh \u201cbest X, current year\u201d listicles for commercial, your own vs page for comparisons, your changelog for news.<\/td> <\/tr> <tr> <td>YouTube gets cited heavily while Reddit gets retrieved and ignored.<\/td> <td>Make the video, because the ChatGPT Reddit playbook doesn\u2019t transfer.<\/td> <\/tr> <tr> <td>Local citations go to place-entities when the maps index binds.<\/td> <td>Google Business Profile and place indexing first, listicle presence as the fallback.<\/td> <\/tr> <tr> <td>Deep Research reads 2 to 4 pages in full and they dominate the citations.<\/td> <td>Be the most comprehensive page on the topic, because the snippet won\u2019t save you there.<\/td> <\/tr> <\/tbody> <\/table> <\/div> <h2>2 Confidence Levels, Same Rule As Last Time<\/h2> <p>If you read the ChatGPT piece you know the drill.<\/p> <p>I split everything into two piles and I don\u2019t let them touch.<\/p> <p><strong>Structural facts (high confidence).<\/strong> A field exists and this is what it\u2019s named, read straight off the wire. The classifier scorecard. The step log. The <code>meta_data.client<\/code> channel. The trust scope notes. Study-mode escalation. The privacy defaults. One clean capture proves each of these, and a prompt study, however big, can\u2019t see any of them, because they never reach the answer.<\/p> <p><strong>Frequency observations (directional only).<\/strong> Anything with a number. \u201c6 of 7 queries ran a single search,\u201d \u201cYouTube got cited 38 times,\u201d \u201cthe listicles got nothing,\u201d That\u2019s a handful of data points on one account, in one city, on the queries I happened to pick. Read it as the shape, not the measurement. Where a direction has a mechanical reason behind it, like Perplexity quoting a video so YouTube earns the citation, trust the direction and ignore the exact count.<\/p> <h2>The Boring Bit: Why This Is Harder Than ChatGPT<\/h2> <p>Skip this if you don\u2019t care how the sausage gets made.<\/p> <p>Perplexity\u2019s answer arrives as a Server-Sent-Events stream, a <code>POST<\/code> to <code>\/rest\/sse\/perplexity_ask<\/code> with <code>content-type: text\/event-stream<\/code>. The catch is that a finished SSE body isn\u2019t replayable. Once it\u2019s done, it\u2019s done, and asking for it again gets you an aborted request rather than the text. The stream only exists while it\u2019s streaming.<\/p> <p>That\u2019s why the hook has to go in before you submit. You override <code>window.fetch<\/code>, clone the response, and read the clone as it comes in. The stream itself is a run of progressive full-state snapshots, each event a near-complete copy of the growing answer object, so by the end a single answer has buffered to about 1 MB across 200-plus events. The richest payload is the largest <code>data:<\/code> block near the end. You parse that, not the terminal done marker.<\/p> <p>Two dead ends, so you don\u2019t repeat them. An isolated automated Chrome gets hard-walled by Cloudflare within a few queries; the \u201cverifying you\u2019re human\u201d loop just spins forever, so use your real Chrome with your real session. And the keepalive ping streams are also event-streams that never close, so don\u2019t sit waiting on the wrong one for a \u201cdone\u201d flag that never flips. Target the snapshot that actually carries a <code>classifier_results<\/code> field.<\/p> <p>I went down the Wireshark hole first, same as the ChatGPT post, and gave up for the same reason. The bodies are TLS encrypted on the wire. The readable layer is the browser, after decryption. (I know, I know lol.)<\/p> <p>A July addition to the dead-end list. On the current build, the answer socket doesn\u2019t close when the answer finishes; it just goes quiet and stays open, so a script that waits for the stream to end waits forever. That\u2019s what quietly killed the first version of my capture script between June and July. The one further down reads the stream as it arrives instead.<\/p> <h2>Perplexity Hands You Its Router<\/h2> <p>This is the part that doesn\u2019t exist in ChatGPT, and it\u2019s the best thing in the whole capture.<\/p> <p>Before Perplexity searches, it runs your query through a classifier, and it ships the entire scorecard to your browser in a field called <code>classifier_results.mhe_predictions_full<\/code>. Not the decision. The whole working-out.<\/p> <p>There are sixteen heads. Each one is a possible widget or intent, weather, places, shopping, video, image generation, a finance card, and so on. Each carries a probability, a fixed threshold it has to clear to fire, and a true\/false. On top sits a <code>domain_subdomain<\/code> label, Perplexity\u2019s topic taxonomy for the query.<\/p> <figure id=\"attachment_584078\" class=\"wp-caption aligncenter\" style=\"width: 2030px\"><img decoding=\"async\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw.webp\"  width=\"2030\" height=\"1942\" class=\"size-full wp-image-584078\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw-384x367.webp 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw-425x407.webp 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw-480x459.webp 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw-680x651.webp 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw-768x735.webp 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw-850x813.webp 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw-1024x980.webp 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw-1280x720.webp 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw-1300x680.webp 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw-1536x1469.webp 1536w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw-1600x1531.webp 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw-1920x1837.webp 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-10-48-4ytaw.webp 2030w\" sizes=\"auto, (max-width: 2030px) 100vw, 2030px\" loading=\"lazy\" title=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe\" alt=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe\" \/><figcaption class=\"wp-caption-text\">Image Credit: Suganthan Mohanadasan<\/figcaption><\/figure> <figure id=\"attachment_584075\" class=\"wp-caption aligncenter\" style=\"width: 2400px\"><img decoding=\"async\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae.webp\"  width=\"2400\" height=\"1862\" class=\"size-full wp-image-584075\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae-384x298.webp 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae-425x330.webp 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae-480x372.webp 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae-680x528.webp 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae-768x596.webp 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae-850x659.webp 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae-1024x794.webp 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae-1280x720.webp 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae-1300x680.webp 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae-1536x1192.webp 1536w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae-1600x1241.webp 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae-1920x1490.webp 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae-2048x1589.webp 2048w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-01-07-4nrae.webp 2400w\" sizes=\"auto, (max-width: 2400px) 100vw, 2400px\" loading=\"lazy\" title=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe1\" alt=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe1\" \/><figcaption class=\"wp-caption-text\">Image Credit: Suganthan Mohanadasan<\/figcaption><\/figure> <p>Here\u2019s the scorecard for \u201cexplain the TLS handshake like I\u2019m five,\u201d trimmed to the interesting heads.<\/p> <pre><code>{&#13; \"domain_subdomain\": { \"label\": \"TECHNOLOGY\/CYBERSECURITY\", \"probability\": 0.727 },&#13; \"image_preview\": { \"probability\": 0.318, \"threshold\": 0.42, \"is_true\": false },&#13; \"video_preview\": { \"probability\": 0.073, \"threshold\": 0.50, \"is_true\": false },&#13; \"places_search_intent\": { \"probability\": 0.044, \"threshold\": 0.85, \"is_true\": false },&#13; \"shopping_intent\": { \"probability\": 0.0002, \"threshold\": 0.80, \"is_true\": false },&#13; \"image_generation_intent\": { \"probability\": 0.002, \"threshold\": 0.98, \"is_true\": false },&#13; \"skip_personal_search\": { \"probability\": 1.0, \"threshold\": 0.95, \"is_true\": true }&#13; }<\/code><\/pre> <p>Read that, and you can watch the machine think.<\/p> <p>The query got filed under TECHNOLOGY\/CYBERSECURITY at 0.73 confidence. Every widget head came back well under its bar, so none fired. <code>image_preview<\/code> reached 0.318 against a 0.42 threshold, the closest miss, which is why an image strip nearly showed up and didn\u2019t.<\/p> <p>ChatGPT showed me one label per query, the <code>turn_use_case<\/code> bucket, and that was the end of it.<\/p> <p>Perplexity shows the probability and the bar for every surface it could have triggered, on every single query. That\u2019s a lot more of the routing logic than I expected to see exposed.<\/p> <p>The thresholds don\u2019t move. They were identical across all 7 queries in June, and identical again on a different build 26 days later, so this is the real decision boundary, not a per-query mood.<\/p> <div class=\"scrl-table\"> <table> <thead> <tr> <th><strong>Widget\/Intent Head<\/strong><\/th> <th><strong>Threshold To Fire<\/strong><\/th> <\/tr> <\/thead> <tbody> <tr> <td>image_generation<\/td> <td>0.98<\/td> <\/tr> <tr> <td>skip_personal_search<\/td> <td>0.95<\/td> <\/tr> <tr> <td>places_search_intent<\/td> <td>0.85<\/td> <\/tr> <tr> <td>shopping_intent<\/td> <td>0.80<\/td> <\/tr> <tr> <td>time_widget<\/td> <td>0.80<\/td> <\/tr> <tr> <td>finance_agent<\/td> <td>0.70<\/td> <\/tr> <tr> <td>finance_widget<\/td> <td>0.53<\/td> <\/tr> <tr> <td>video_preview<\/td> <td>0.50<\/td> <\/tr> <tr> <td>image_preview<\/td> <td>0.42<\/td> <\/tr> <tr> <td>weather_widget<\/td> <td>0.40<\/td> <\/tr> <tr> <td>calculator_widget<\/td> <td>0.30<\/td> <\/tr> <\/tbody> <\/table> <\/div> <p>The domain label moved with the query, exactly as you\u2019d hope.<\/p> <p>\u201cbest AI SEO tools 2026\u201d came in as TECHNOLOGY\/ARTIFICIAL_INTELLIGENCE at 0.86.<\/p> <p>\u201cAhrefs vs Semrush\u201d got BUSINESS\/DIGITAL_MARKETING at 0.94, the most confident call in the run.<\/p> <p>The news query, \u201clatest Google algorithm update,\u201d scored the lowest, TECHNOLOGY\/INTERNET_TECHNOLOGIES at 0.49, because news resists a single tidy topic.<\/p> <h3>The AI SEO\/GEO Takeaway<\/h3> <p><strong>Map your priority queries to their domain label and the head most likely to fire, because that tells you which surface you\u2019re actually competing for.<\/strong> A \u201cbest X near me\u201d query is going to clear the places threshold and put you in a maps fight, not a blue-links fight. A how-to is going to pull a video tab. You can stop guessing which game you\u2019re playing and read it off the classifier.<\/p> <h2>It Tells You Which Domains It Trusts, And For What<\/h2> <p>In the June captures, there was no trust signal anywhere in the stream. An even earlier free-tier capture had carried a <code>trust<\/code> field on every source, sitting empty, and build <code>7fe6ad4<\/code> dropped the field entirely.<\/p> <p>I\u2019d written the negative up for this article: no per-source quality signal reaches the browser; source ranking is server-side and invisible.<\/p> <p>Then I re-ran the captures on July 21, build <code>df49f17<\/code>, and the field is back. With values in it.<\/p> <pre><code>\"trust\": {&#13; \"level\": 1,&#13; \"name\": \"credible\",&#13; \"description\": \"is credible for first-party information about Discount Tire's U.S. tire and wheel retail stores, services, warranties, and related offerings.\"&#13; }<\/code><\/pre> <p>That\u2019s a real entry from the flat-tyre capture, attached to discounttire.com. Sources on the current build can carry a trust object with a numeric level, a tier name, and a written scope.<\/p> <p>I saw two tiers in my captures, level 1 <code>credible<\/code> and level 2 <code>trusted<\/code>, the second sitting on goodyear.eu, \u201ctrusted for official Goodyear tyre product information\u201d and on into its EMEA and fleet business.<\/p> <p>The description is the interesting part. It\u2019s a sentence about what the domain can be believed on, not a score. caranddriver.com is credible for \u201clong-established, professionally edited\u201d automotive coverage. aaa.com is credible for \u201cofficial information about AAA\u2019s own membership services.\u201d<\/p> <p>Every entry I captured has that same first-party shape. A domain is trusted about its own products, services, and patch, not trusted in general.<\/p> <figure id=\"attachment_584077\" class=\"wp-caption aligncenter\" style=\"width: 1956px\"><img decoding=\"async\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j.webp\"  width=\"1956\" height=\"1782\" class=\"size-full wp-image-584077\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j-384x350.webp 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j-425x387.webp 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j-480x437.webp 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j-680x620.webp 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j-768x700.webp 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j-850x774.webp 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j-1024x933.webp 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j-1280x720.webp 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j-1300x680.webp 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j-1536x1399.webp 1536w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j-1600x1458.webp 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j-1920x1749.webp 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-40-4xk7j.webp 1956w\" sizes=\"auto, (max-width: 1956px) 100vw, 1956px\" loading=\"lazy\" title=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe2\" alt=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe2\" \/><figcaption class=\"wp-caption-text\">Image Credit: Suganthan Mohanadasan<\/figcaption><\/figure> <figure id=\"attachment_584076\" class=\"wp-caption aligncenter\" style=\"width: 2524px\"><img decoding=\"async\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b.webp\"  width=\"2524\" height=\"1166\" class=\"size-full wp-image-584076\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b-384x177.webp 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b-425x196.webp 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b-480x222.webp 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b-680x314.webp 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b-768x355.webp 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b-850x393.webp 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b-1024x473.webp 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b-1280x720.webp 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b-1300x680.webp 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b-1536x710.webp 1536w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b-1600x739.webp 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b-1920x887.webp 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b-2048x946.webp 2048w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-09-26-4y02b.webp 2524w\" sizes=\"auto, (max-width: 2524px) 100vw, 2524px\" loading=\"lazy\" title=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe3\" alt=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe3\" \/><figcaption class=\"wp-caption-text\">Image Credit: Suganthan Mohanadasan<\/figcaption><\/figure> <p>Coverage tells its own story. On the how-to run, six of 15 sources carried a trust entry, and they were the big official domains, the RAC, AAA, Goodyear, Car and Driver. The six YouTube results carried nothing, and neither did any of the 15 sources on my local run, which were all small editorial sites.<\/p> <p>Two queries is a directional sample, but the shape looks like a curated registry being rolled out from the head of the web downwards, not a score computed for every URL on demand.<\/p> <p>Before you build a strategy on it, two caveats. A missing entry clearly doesn\u2019t keep you out of the answer, because YouTube had no trust object and still took 14 of the 40 citations on that query.<\/p> <p>And this exact field has gone from present-but-empty to absent to populated across three builds in about two months, so treat the tier names and the wording as a snapshot of a system mid-rollout, not a stable API.<\/p> <h3>The AI SEO\/GEO Takeaway<\/h3> <p><strong>Perplexity is writing scoped, first-party trust notes on domains, so the winning question stops being \u201chow do I look authoritative\u201d and becomes \u201cwhat\u2019s my domain the unambiguous first-party source for.\u201d<\/strong> Make that thing legible: your products, your data, your services, your changelog, because the scope sentences describe what a domain owns, not how big it is. And run the capture script below on your own money queries to see whether your domain carries an entry yet.<\/p> <h2>It Never Skips The Web<\/h2> <p>The single most useful finding in the ChatGPT teardown was the <code>text<\/code> bucket, the discovery that ChatGPT answers how-to and definition queries straight from training and never searches at all. If your query gets filed as <code>text<\/code>, no page on earth gets in, because no page gets fetched.<\/p> <p>Perplexity doesn\u2019t do that. <code>skip_search<\/code> was false on all 7 queries. Every one hit the web, including \u201chow do I change a flat tyre step by step,\u201d the exact query ChatGPT answered from memory with an empty network tab.<\/p> <p>What Perplexity does instead is quietly change mode.<\/p> <p>The flat-tyre query didn\u2019t run as a normal search. It escalated to Study mode, <code>model: pplx_study<\/code>, <code>search_mode: STUDY<\/code>, Perplexity\u2019s step-by-step teaching mode, and it fired a video answer tab on top. Same silent-escalation instinct as ChatGPT, opposite outcome. ChatGPT decided it already knew and shut the door.<\/p> <p>Perplexity decided to teach you and opened a video. (I re-ran this exact query on the July build. Same escalation, same video tab, video head at 0.988.)<\/p> <figure id=\"attachment_584079\" class=\"wp-caption aligncenter\" style=\"width: 1424px\"><img decoding=\"async\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-13-26-527qq.webp\"  width=\"1424\" height=\"306\" class=\"size-full wp-image-584079\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-13-26-527qq-384x83.webp 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-13-26-527qq-425x91.webp 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-13-26-527qq-480x103.webp 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-13-26-527qq-680x146.webp 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-13-26-527qq-768x165.webp 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-13-26-527qq-850x183.webp 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-13-26-527qq-1024x220.webp 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-13-26-527qq-1280x306.webp 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-13-26-527qq-1300x306.webp 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-13-26-527qq.webp 1424w\" sizes=\"auto, (max-width: 1424px) 100vw, 1424px\" loading=\"lazy\" title=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe4\" alt=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe4\" \/><figcaption class=\"wp-caption-text\">Image Credit: Suganthan Mohanadasan<\/figcaption><\/figure> <h3>The AI SEO\/GEO Takeaway<\/h3> <p><strong>In Perplexity, every query is contestable, because it always fetches.<\/strong> That\u2019s a structural advantage over ChatGPT for anyone making instructional or definitional content.<\/p> <p>In ChatGPT, a how-to can be a closed box you can\u2019t get into at any price. In Perplexity, that same how-to is a live search with a video tab attached, so there\u2019s a page slot and a video slot to win.<\/p> <h2>The Fan-Out Is Shallow By Default, Deep Only When It Has To Be<\/h2> <p>Perplexity writes the searches it runs into the stream too, as a step log in <code>final.text<\/code>. It reads like a little program.<\/p> <pre><code>INITIAL_QUERY \u2192 SEARCH_WEB { engine: web, query: \"...\", limit: 8 } \u2192 SEARCH_RESULTS \u2192 FINAL<\/code><\/pre> <p>For six of my seven queries, that\u2019s the whole sequence. It ran a single <code>SEARCH_WEB<\/code> step with the query near-verbatim, then answered. \u201cbest AI SEO tools 2026\u201d went to the web as <code>best AI SEO tools 2026<\/code> and came back with 10 results. \u201cAhrefs vs Semrush\u201d went out as <code>Ahrefs vs Semrush<\/code>, untouched. It didn\u2019t expand the query or chase tangents.<\/p> <p>Set that against ChatGPT. It rewrote my queries and injected brand names it already knew, turning one comparison into roughly 40 sub-queries and chasing tools I\u2019d never mentioned.<\/p> <p>Perplexity searched the literal string I typed. It retrieves what matches your actual phrasing, not what it can dream up around it.<\/p> <p>The one exception was local. \u201cbest specialty coffee shops near DIFC Dubai\u201d ran 4 searches across 2 rounds, and round 2 went hunting for specific businesses by name.<\/p> <p>That\u2019s genuine entity discovery, and it was the only query in the set that did it. I\u2019ll come back to it, because the result is the sharpest GEO finding in the whole capture.<\/p> <p>A July footnote on the fan-out. When I re-ran the commercial query on build <code>df49f17<\/code>, the single step carried three queries instead of one: the verbatim string plus two close variants, and one of them was \u201cAI SEO tools Dubai pricing.\u201d My city, folded straight into the expansion. So the fan-out has widened a touch since June, and it\u2019s personalized. It\u2019s still a different sport from ChatGPT\u2019s 40-query brand injection; the head query stays your literal phrasing, but \u201cbarely rewrites\u201d is drifting toward \u201crewrites conservatively.\u201d<\/p> <figure id=\"attachment_584080\" class=\"wp-caption aligncenter\" style=\"width: 1990px\"><img decoding=\"async\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9.webp\"  width=\"1990\" height=\"1916\" class=\"size-full wp-image-584080\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9-384x370.webp 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9-425x409.webp 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9-480x462.webp 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9-680x655.webp 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9-768x739.webp 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9-850x818.webp 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9-1024x986.webp 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9-1280x720.webp 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9-1300x680.webp 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9-1536x1479.webp 1536w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9-1600x1541.webp 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9-1920x1849.webp 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-25-5bfv9.webp 1990w\" sizes=\"auto, (max-width: 1990px) 100vw, 1990px\" loading=\"lazy\" title=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe5\" alt=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe5\" \/><figcaption class=\"wp-caption-text\">Image Credit: Suganthan Mohanadasan<\/figcaption><\/figure> <figure id=\"attachment_584081\" class=\"wp-caption aligncenter\" style=\"width: 2062px\"><img decoding=\"async\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow.webp\"  width=\"2062\" height=\"844\" class=\"size-full wp-image-584081\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow-384x157.webp 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow-425x174.webp 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow-480x196.webp 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow-680x278.webp 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow-768x314.webp 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow-850x348.webp 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow-1024x419.webp 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow-1280x720.webp 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow-1300x680.webp 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow-1536x629.webp 1536w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow-1600x655.webp 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow-1920x786.webp 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow-2048x838.webp 2048w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-20-39-5bpow.webp 2062w\" sizes=\"auto, (max-width: 2062px) 100vw, 2062px\" loading=\"lazy\" title=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe6\" alt=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe6\" \/><figcaption class=\"wp-caption-text\">Image Credit: Suganthan Mohanadasan<\/figcaption><\/figure> <h3>The AI SEO\/GEO Takeaway<\/h3> <p><strong>Optimize for the literal query, because Perplexity leads with your exact phrasing, expands it only conservatively, and won\u2019t invent its way to you.<\/strong> ChatGPT\u2019s habit of expanding a query gives a tangential page a chance to get pulled in.<\/p> <p>Perplexity doesn\u2019t hand you that. Exact-match relevance to the phrasing real people type matters more here than it does in ChatGPT, and the deep multi-query fan-out you might be hoping for is a Deep Research behavior, not default search.<\/p> <h2>Retrieved Isn\u2019t Cited, And The Pattern Changes With Intent<\/h2> <p>Two things happen to a source, and they\u2019re not the same thing. Retrieved means it came back in <code>web_results<\/code>, Perplexity pulled it into the candidate set. Cited means it earned an inline <code>[N]<\/code> marker in the answer, the clickable footnote.<\/p> <p>Plenty of pages get retrieved and never cited. That gap is where the GEO\/AI SEO lives.<\/p> <p>Here\u2019s the whole set at a glance.<\/p> <div class=\"scrl-table\"> <table> <thead> <tr> <th><strong>Query<\/strong><\/th> <th><strong>Domain Label @ confidence<\/strong><\/th> <th><strong>Searches<\/strong><\/th> <th><strong>Retrieved<\/strong><\/th> <th><strong>Cited<\/strong><\/th> <th><strong>Extra Surface<\/strong><\/th> <\/tr> <\/thead> <tbody> <tr> <td>informational (TLS handshake)<\/td> <td>TECHNOLOGY\/CYBERSECURITY 0.73<\/td> <td>1<\/td> <td>15<\/td> <td>n\/a<\/td> <td>Image<\/td> <\/tr> <tr> <td>commercial (best AI SEO tools 2026)<\/td> <td>TECH\/ARTIFICIAL_INTELLIGENCE 0.86<\/td> <td>1<\/td> <td>10<\/td> <td>6<\/td> <td>Image<\/td> <\/tr> <tr> <td>comparison (Ahrefs vs Semrush)<\/td> <td>BUSINESS\/DIGITAL_MARKETING 0.94<\/td> <td>1<\/td> <td>10<\/td> <td>6<\/td> <td>Image<\/td> <\/tr> <tr> <td>news (latest Google algorithm update)<\/td> <td>TECH\/INTERNET_TECHNOLOGIES 0.49<\/td> <td>1<\/td> <td>10<\/td> <td>3<\/td> <td>Image<\/td> <\/tr> <tr> <td>local (coffee near DIFC)<\/td> <td>FOOD\/RESTAURANT_RECS 0.66<\/td> <td>4<\/td> <td>15<\/td> <td>5<\/td> <td>Maps<\/td> <\/tr> <tr> <td>shopping (earbuds under $150)<\/td> <td>CONSUMER_GOODS\/AUDIO 1.00<\/td> <td>1<\/td> <td>10<\/td> <td>2<\/td> <td>Image<\/td> <\/tr> <tr> <td>how-to (change a flat tyre)<\/td> <td>CONSUMER_GOODS\/AUTOMOTIVE 0.91<\/td> <td>1<\/td> <td>15<\/td> <td>9<\/td> <td>Video<\/td> <\/tr> <\/tbody> <\/table> <\/div> <p>Now the per-intent patterns, each with the bit you can act on.<\/p> <p><strong>Commercial, \u201cbest X 2026.\u201d<\/strong> It retrieved 10 and cited six. The winners were fresh current-year listicles and mid-tier SEO blogs, onelittleweb, eesel.ai, vezadigital, manysphere. The big brand pages, semrush and designrush, were retrieved and never cited.<\/p> <pre><code>onelittleweb.com 36 cited&#13; eesel.ai 34 cited&#13; vezadigital.com 24 cited&#13; seranking.com 16 cited&#13; manysphere.com 8 cited&#13; linkedin.com 2 cited&#13; semrush.com retrieved, not cited&#13; designrush.com retrieved, not cited<\/code><\/pre> <p>Brand size isn\u2019t the gate here; freshness and being in the \u201cbest Generative AI [year]\u201d listicle is. Get into those lists and keep them dated current.<\/p> <p><strong>Comparison, \u201cX vs Y.\u201d<\/strong>\u00a0This one\u2019s almost funny.<\/p> <p>For \u201cAhrefs vs Semrush,\u201d the single most-cited domain was ahrefs.com, 18 times across two of its own URLs. The vendor\u2019s own comparison page won the comparison query. Backlinko\u2019s well-known Ahrefs-vs-Semrush post and a Reddit thread were both retrieved and cited not once.<\/p> <p>If there\u2019s a \u201c[you] vs [competitor]\u201d query you care about, publish your own honest comparison page, because the named vendor\u2019s own page is what gets cited.<\/p> <p><strong>News, \u201clatest X.\u201d<\/strong> It retrieved 10 and cited only three, and all three were Google\u2019s own properties: the Search Status Dashboard, the Search Central docs, and blog.google. A Search Engine Land piece that was three days old was retrieved and never cited.<\/p> <pre><code>status.search.google.com 12 cited&#13; developers.google.com 6 cited&#13; blog.google 4 cited&#13; searchengineland.com (3 days old) retrieved, not cited&#13; searchenginejournal.com retrieved, not cited<\/code><\/pre> <p>For news, the official primary source wins, and freshness alone doesn\u2019t. You can\u2019t out-rank someone\u2019s own announcement for their own news, so own your changelog and status pages and stop trying to beat the source.<\/p> <h3>The Big One: YouTube And Reddit Swap Places<\/h3> <p>If you took one lesson from the ChatGPT teardown, it was probably this.<\/p> <p>ChatGPT cites Reddit and almost never cites YouTube, because it fetches a YouTube page and gets the metadata, not the transcript, so there\u2019s no text to bind a citation to. Reddit is all text, so Reddit gets quoted.<\/p> <p>Perplexity is the exact inverse.<\/p> <p>On \u201cbest noise-cancelling earbuds under $150,\u201d it retrieved 10 sources and cited two, and the two were YouTube and a niche eartips brand\u2019s review page, 38 citations each. Three separate Reddit threads came back in the retrieved set and got cited not once.<\/p> <figure id=\"attachment_584085\" class=\"wp-caption aligncenter\" style=\"width: 1928px\"><img decoding=\"async\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k.webp\"  width=\"1928\" height=\"2138\" class=\"size-full wp-image-584085\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k-384x426.webp 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k-425x471.webp 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k-480x532.webp 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k-680x754.webp 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k-768x852.webp 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k-850x943.webp 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k-1024x1136.webp 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k-1280x720.webp 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k-1300x680.webp 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k-1385x1536.webp 1385w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k-1600x1774.webp 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k-1847x2048.webp 1847w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k-1920x2129.webp 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/ytscreendrop-2026-07-21-08-39-34-60r3k.webp 1928w\" sizes=\"auto, (max-width: 1928px) 100vw, 1928px\" loading=\"lazy\" title=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe7\" alt=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe7\" \/><figcaption class=\"wp-caption-text\">Image Credit: Suganthan Mohanadasan<\/figcaption><\/figure> <p>On the flat-tyre how-to, YouTube was cited 22 times across three videos.<\/p> <pre><code>youtube.com 38 cited&#13; complyfoam.com 38 cited&#13; reddit.com (\u00d73) retrieved, not cited&#13; zdnet.com retrieved, not cited<\/code><\/pre> <p>The mechanism is simple.<\/p> <p>Perplexity quotes the video; ChatGPT couldn\u2019t.<\/p> <p>How-to and product queries fire that video answer tab, and the video sources behind it get cited like any text source would.<\/p> <h3>The AI SEO\/GEO Takeaway<\/h3> <p><strong>The ChatGPT Reddit playbook doesn\u2019t transfer to Perplexity, and video is first-class GEO real estate here.<\/strong> For instructional and product queries especially, a decent YouTube video is doing the citation work that a Reddit thread does over in ChatGPT. If you\u2019ve been pouring everything into Reddit for AI visibility, Perplexity is telling you to go make the video too.<\/p> <h2>Local Means Be In The Maps Index, Full Stop<\/h2> <p>This is the finding I\u2019d put on the first slide of a client deck if they sold anything location-based.<\/p> <p>\u201cbest specialty coffee shops near DIFC Dubai\u201d fired <code>places_search_intent<\/code> at 0.996 against its 0.85 threshold, the first widget head to fire in the whole run. That kicked off the 2-round fan-out from earlier. Round 1 was a normal web search. Round 2 switched to a <code>map<\/code> engine and searched the specific businesses it had just found, through a different retrieval channel, <code>meta_data.client: \"search_api_local\"<\/code> instead of the usual <code>web<\/code>.<\/p> <pre><code>Round 1 engine=web \"best specialty coffee shops near DIFC Dubai\" \u2192 10 web results&#13; Round 2 engine=map \"specialty coffee near DIFC Dubai\"&#13; engine=map \"Encounter Coffee Roasters DIFC\" \u2192 5 place results&#13; engine=map \"Nomad Day Bar DIFC specialty coffee\"<\/code><\/pre> <p>Of 15 sources retrieved, five were cited, and all five were the business place-entities from the local API, eight citations each. The 10 editorial \u201cbest coffee in Dubai\u201d listicles that came back in round one \u2013 traveltodubai, tripadvisor, wheretoeatdubai and the rest \u2013 were cited not once.<\/p> <p>ChatGPT looked like it capped local at two results on a <code>local_results_limit<\/code> I found sitting in its config, but I\u2019ve since walked that one back. The config went dark, and the map payload turned out to carry 12 to 28 places even when only a couple render. Perplexity cited five, all of them businesses, none of them blogs. Same lesson underneath either way.<\/p> <p>One more thing worth grabbing while you\u2019re in there.<\/p> <p>In the June capture, the cited place links carried a <code>?ct-referrer=perplexity<\/code> parameter on the outbound URL, Perplexity\u2019s version of ChatGPT\u2019s <code>?utm_source=chatgpt.com<\/code>. Worth a filter in your analytics either way, with the caveat that my July re-run rendered no place links at all, so I couldn\u2019t re-confirm it. Which brings me to the wrinkle.<\/p> <figure id=\"attachment_584082\" class=\"wp-caption aligncenter\" style=\"width: 1998px\"><img decoding=\"async\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz.webp\"  width=\"1998\" height=\"1530\" class=\"size-full wp-image-584082\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz-384x294.webp 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz-425x325.webp 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz-480x368.webp 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz-680x521.webp 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz-768x588.webp 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz-850x651.webp 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz-1024x784.webp 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz-1280x720.webp 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz-1300x680.webp 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz-1536x1176.webp 1536w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz-1600x1225.webp 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz-1920x1470.webp 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-28-33-5lngz.webp 1998w\" sizes=\"auto, (max-width: 1998px) 100vw, 1998px\" loading=\"lazy\" title=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe8\" alt=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe8\" \/><figcaption class=\"wp-caption-text\">Image Credit: Suganthan Mohanadasan<\/figcaption><\/figure> <figure id=\"attachment_584074\" class=\"wp-caption aligncenter\" style=\"width: 2120px\"><img decoding=\"async\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy.webp\"  width=\"2120\" height=\"1704\" class=\"size-full wp-image-584074\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy-384x309.webp 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy-425x342.webp 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy-480x386.webp 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy-680x547.webp 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy-768x617.webp 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy-850x683.webp 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy-1024x823.webp 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy-1280x720.webp 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy-1300x680.webp 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy-1536x1235.webp 1536w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy-1600x1286.webp 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy-1920x1543.webp 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy-2048x1646.webp 2048w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/qscreendrop-2026-07-21-08-26-52-5lvhy.webp 2120w\" sizes=\"auto, (max-width: 2120px) 100vw, 2120px\" loading=\"lazy\" title=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe9\" alt=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe9\" \/><figcaption class=\"wp-caption-text\">Image Credit: Suganthan Mohanadasan<\/figcaption><\/figure> <p>The July re-run made the lesson sharper. Same query, same 0.996 on the places head, and the map engine actually got promoted; it ran first this time, three rewritten variations before the web search instead of after.<\/p> <p>But that session hadn\u2019t shared location with Perplexity, and the Places tab, which is new since June, came back with \u201cNo places match this query\u201d. No place-entities bound at all. And with no places to cite, the citations fell straight back to the round-2 web results, the same class of listicle that got blanked in June: wanderlog, novacircle, brewatlas, difc.com.<\/p> <p>So the two runs bracket the mechanism. When the places index delivers, the businesses take every citation, and the listicles watch. When it can\u2019t deliver, the listicles inherit the whole answer.<\/p> <h3>The AI SEO\/GEO Takeaway<\/h3> <p><strong>To win \u201cnear me\u201d in Perplexity, be in the maps and local index first, your Google Business Profile and your site indexed as a place, and treat listicle presence as the fallback slot.<\/strong> In June, the place-entities took every citation, and the roundups got nothing. In July, with no places bound, the roundups inherited the answer. The primary path runs through the local index, and the editorial layer only collects when that path fails.<\/p> <h2>Deep Research Is A Different Engine, And It Deep-Reads<\/h2> <p>Everything above is default Pro search. Flip the composer from Search to Deep Research, and you\u2019re talking to <code>pplx_alpha<\/code>, which behaves nothing like the others.<\/p> <p>It\u2019s slow on purpose. The run I captured took 181 seconds against 15 to 30 for normal search, and the stream ballooned to about 30 MB because it streams the report to you as it writes it.<\/p> <p>The step log gets a much richer vocabulary.<\/p> <pre><code>INITIAL_QUERY \u2192 LOAD_SKILL { research } \u2192 SEARCH_WEB (3 queries) \u2192 SEARCH_RESULTS&#13; \u2192 GET_URL_CONTENT (reads 2 pages in full) \u2192 THOUGHT \u00d73 \u2192 RESEARCH_ANSWER \u2192 FINAL<\/code><\/pre> <p>A few things stand out. It loads a named <code>research<\/code> skill; you can see <code>LOAD_SKILL {skill_names:[\"research\"]}<\/code> right there in the stream, so Perplexity\u2019s agent architecture is sitting on the wire. It runs only about three reformulated searches, nowhere near the 40 that ChatGPT\u2019s Thinking model fires, so the fan-out is modest. And then it does the thing default search never does. It calls <code>GET_URL_CONTENT<\/code> on two or three hand-picked URLs and reads the entire page body, not the snippet.<\/p> <p>That last step decides the answer. Of 15 sources retrieved, four were cited, and the pages it chose to fetch in full dominated. One comparison article, superframeworks.com, took 20 of the 30 citation markers on its own. Two-thirds of the answer came from the page it decided to read properly.<\/p> <figure id=\"attachment_584083\" class=\"wp-caption aligncenter\" style=\"width: 2046px\"><img decoding=\"async\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h.webp\"  width=\"2046\" height=\"1600\" class=\"size-full wp-image-584083\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h-384x300.webp 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h-425x332.webp 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h-480x375.webp 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h-680x532.webp 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h-768x601.webp 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h-850x665.webp 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h-1024x801.webp 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h-1280x720.webp 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h-1300x680.webp 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h-1536x1201.webp 1536w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h-1600x1251.webp 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h-1920x1501.webp 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-34-27-5tc0h.webp 2046w\" sizes=\"auto, (max-width: 2046px) 100vw, 2046px\" loading=\"lazy\" title=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe10\" alt=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe10\" \/><figcaption class=\"wp-caption-text\">Image Credit: Suganthan Mohanadasan<\/figcaption><\/figure> <figure id=\"attachment_584084\" class=\"wp-caption aligncenter\" style=\"width: 2480px\"><img decoding=\"async\" src=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd.webp\"  width=\"2480\" height=\"1502\" class=\"size-full wp-image-584084\" srcset=\"https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd-384x233.webp 384w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd-425x257.webp 425w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd-480x291.webp 480w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd-680x412.webp 680w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd-768x465.webp 768w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd-850x515.webp 850w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd-1024x620.webp 1024w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd-1280x720.webp 1280w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd-1300x680.webp 1300w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd-1536x930.webp 1536w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd-1600x969.webp 1600w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd-1920x1163.webp 1920w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd-2048x1240.webp 2048w, https:\/\/cdn.searchenginejournal.com\/wp-content\/uploads\/2026\/07\/screendrop-2026-07-21-08-35-07-5u5bd.webp 2480w\" sizes=\"auto, (max-width: 2480px) 100vw, 2480px\" loading=\"lazy\" title=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe11\" alt=\"How Perplexity Actually Picks Sources (I Read The Stream, Not The Answers) via @sejournal, @suganthan\u63d2\u56fe11\" \/><figcaption class=\"wp-caption-text\">Image Credit: Suganthan Mohanadasan<\/figcaption><\/figure> <h3>The AI SEO\/GEO Takeaway<\/h3> <p><strong>For research-grade queries, you win in two moves. Rank for the two or three obvious reformulations so you make the retrieved set, then be the single most comprehensive, best-structured page on the topic so it picks you to read in full.<\/strong> This is the one mode where the snippet doesn\u2019t save you, and the full body does. A thin page that ranks gets retrieved and skipped. The deep, well-organized one gets read end to end and cited 20 times.<\/p> <h2>What I Couldn\u2019t See<\/h2> <p>The negatives, same as last time.<\/p> <p>There\u2019s still no ranking score on the wire. The trust tiers from the July build are the closest Perplexity has ever come to exposing one, and even they don\u2019t rank anything: no number orders source 1 above source 2 inside an answer, and the most-cited source on my how-to run carried no trust entry at all.<\/p> <p>Whatever sorts the retrieved set stays server-side. So the ChatGPT conclusion applies here: anyone selling you reverse-engineered \u201cPerplexity ranking factors\u201d is still guessing.<\/p> <p>No vendor names either. ChatGPT used to stamp each result with the scraper that fetched it, <code>bright<\/code>, <code>oxylabs<\/code>, <code>serp<\/code>, <code>labrador<\/code>, until OpenAI deleted that field on July 21. I covered the removal in the ChatGPT follow-up. Perplexity never exposed the equivalent in the first place. It only tells you the channel, <code>web<\/code> or <code>search_api_local<\/code>, naming its own internal API and never the company behind it. Cleaner for them, less interesting for us.<\/p> <p>A privacy correction while I\u2019m here. My earlier free-tier note said throwaway threads were world-readable by URL. On a logged-in Pro account, that\u2019s wrong. Threads default to <code>PRIVATE_READ<\/code>. The world-readable behavior was a logged-out artifact, not the universal default.<\/p> <p>And shopping is genuinely unsettled. <code>shopping_intent<\/code> fired at 0.996, comfortably over its bar, on the earbuds query, but no product or price widget ever rendered. Could be region-gated; I\u2019m in the UAE. Could need stronger buy-intent. One query can\u2019t tell me which, so I won\u2019t pretend it can.<\/p> <p>The big unprobed surface is the agentic one. In June, Deep Research upsold it; the stream carried a <code>RUN_QUERY_IN_COMPUTER<\/code> prompt steering you toward the Comet \u201cComputer\u201d agent.<\/p> <p>By July, Computer had graduated to a first-class mode sitting next to Search in the composer, with suggested follow-ups routed to it. That\u2019s a task-execution agent, not a retrieval pipeline, so it\u2019s a separate study, not this one.<\/p> <h2>Run It Yourself<\/h2> <p>You can\u2019t replay a finished Perplexity stream, and since the July build, you can\u2019t even wait politely for it to end, because the answer socket stays open after the reply completes. So the hook goes in before you ask, and it reads the stream as it arrives. Open perplexity.ai, open the DevTools Console, and paste this in first. This is the version I re-tested on build <code>df49f17<\/code> on July 21, 2026.<\/p> <pre><code>\/\/ Paste into the Console on perplexity.ai BEFORE you ask anything.&#13; \/\/ Tees Perplexity's answer stream into window.__cap as it arrives.&#13; \/\/ Reads only your own logged-in session. Nothing leaves your machine.&#13; const _fetch = window.fetch;&#13; window.__cap = [];&#13; window.__snap = (n = -1) =&gt; {&#13; const c = window.__cap.filter(x =&gt; x.url.includes('perplexity_ask')).at(n);&#13; if (!c) return null;&#13; const lines = c.buf.split('n').filter(l =&gt; l.startsWith('data:'));&#13; for (const l of lines.sort((a, b) =&gt; b.length - a.length)) {&#13; try { return JSON.parse(l.slice(5)); } catch (e) {}&#13; }&#13; return null;&#13; };&#13; window.fetch = async (...args) =&gt; {&#13; const res = await _fetch(...args);&#13; const url = (args[0] &amp;&amp; args[0].url) || String(args[0] || '');&#13; const ct = res.headers.get('content-type') || '';&#13; if (url.includes('perplexity_ask') || ct.includes('event-stream')) {&#13; const entry = { url, buf: '' };&#13; window.__cap.push(entry);&#13; const reader = res.clone().body.getReader();&#13; const dec = new TextDecoder();&#13; (async () =&gt; {&#13; for (;;) {&#13; const { value, done } = await reader.read();&#13; if (done) break;&#13; entry.buf += dec.decode(value, { stream: true });&#13; }&#13; })();&#13; }&#13; return res;&#13; };&#13; console.log('Hooked. Ask something, let the answer finish, then read window.__snap().');<\/code><\/pre> <p>Then ask your question. When the answer finishes rendering, <code>window.__snap()<\/code> parses the richest snapshot for you: the classifier at <code>.classifier_results.mhe_predictions_full<\/code>, the step log in <code>.text<\/code>, the sources in the web-result block, and on the current build the <code>trust<\/code> objects on whichever sources carry one.<\/p> <p>A couple of keepalive streams stay open forever, and now the answer stream does too. <code>__snap()<\/code> only looks at the ask stream, so you can ignore all of that. And if you want to watch <code>pplx_alpha<\/code> load its research skill and fetch full pages, switch the composer mode from Search to Deep research before you ask.<\/p> <p>It reads only your own logged-in session, so nothing leaves your machine. And if you\u2019d rather not babysit a console script, FanoutFox, my free Chrome extension, does this whole workflow for ChatGPT in one click.<\/p> <h2>So, How Do You Show Up In Perplexity?<\/h2> <p>Perplexity behaves more like an actual search engine than ChatGPT does, which is oddly reassuring. It always searches, which means every query is winnable.<\/p> <p>The router is right there in the traffic, so you can see the game before you play it. Depth beats snippet-gaming, because the deep-read step rewards the fullest page on the topic. And video and the maps index are first-class here in a way they simply aren\u2019t in ChatGPT.<\/p> <p>So classic relevance still matters. It\u2019s just pointed at two specific targets, being the page Perplexity chooses to read, and being the entity that\u2019s actually in the maps index.<\/p> <p>Write the clean, deep, literal-match page, make the video, and get into the local index. Then watch your analytics for <code>?ct-referrer=perplexity<\/code>.<\/p> <p>And treat all of this, mine included, as a snapshot of a system that ships a new build most weeks. The structure holds. The numbers move.<\/p> <p>The July re-check proved both halves of that in a single pass: the thresholds hadn\u2019t moved by a digit in 26 days, and the trust field went from missing to live.<\/p> <p>So, this article is the story, and the Perplexity research tracker is the running record. Every change I catch in the traffic goes there, dated, with what\u2019s still true at the top. Check it before you act on anything above, because by then some of it will have moved.<\/p> <p><em>Captured June 25, 2026 on build <code>7fe6ad4<\/code>, re-verified July 21, 2026 on build <code>df49f17<\/code>, on my own logged-in Perplexity Pro account in Dubai. Eight captures, seven query types plus one Deep Research run. Structural findings are read straight from the stream and held at a single capture. Anything with a count is one account and directional.<\/em><\/p> <p>Gemini\u2019s next, and that capture\u2019s already sitting in a folder.<\/p> <p><strong>More Resources:<\/strong><\/p> <hr\/> <p><em>This post was originally published on Suganthan.<\/em><\/p> <hr\/> <p><em>Featured Image: Alonchik_73\/Shutterstock<\/em><\/p> <\/div> <p>Generative AI,SEO#Perplexity #Picks #Sources #Read #Stream #Answers #sejournal #suganthan1785326917<\/p> ","protected":false},"excerpt":{"rendered":"<p>I promised this one at the end of the ChatGPT teardown. I\u2019ve since had to go back to ChatGPT again in a follow-up\u00a0because it moved under me while the post was still fresh. Perplexity was next, so here it is. The question hasn\u2019t changed, only the logo. \u201cHow do I show up in Perplexity?\u201d And [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":12778,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[425,4273,3360,350,80,7380,43087,42538],"class_list":["post-12777","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-accessibility","tag-answers","tag-perplexity","tag-picks","tag-read","tag-sejournal","tag-sources","tag-stream","tag-suganthan"],"acf":[],"_links":{"self":[{"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/posts\/12777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12777"}],"version-history":[{"count":0,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/posts\/12777\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=\/wp\/v2\/media\/12778"}],"wp:attachment":[{"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12777"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/longzhuplatform.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}