<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Oğuzhan Tüsen</title>
    <description>The latest articles on DEV Community by Oğuzhan Tüsen (@oguzhantusen).</description>
    <link>https://dev.to/oguzhantusen</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4029017%2F2cca5301-7176-4761-b325-9e64732ad015.png</url>
      <title>DEV Community: Oğuzhan Tüsen</title>
      <link>https://dev.to/oguzhantusen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/oguzhantusen"/>
    <language>en</language>
    <item>
      <title>Reddit decides who AI recommends: what I found measuring 241 software categories</title>
      <dc:creator>Oğuzhan Tüsen</dc:creator>
      <pubDate>Fri, 07 Aug 2026 16:59:42 +0000</pubDate>
      <link>https://dev.to/oguzhantusen/reddit-decides-who-ai-recommends-what-i-found-measuring-241-software-categories-opf</link>
      <guid>https://dev.to/oguzhantusen/reddit-decides-who-ai-recommends-what-i-found-measuring-241-software-categories-opf</guid>
      <description>&lt;p&gt;Buyers have started asking ChatGPT and Gemini which software to use instead of opening ten tabs. So over the last few weeks I ran a simple experiment 241 times: for each software category, I asked the assistants the questions a buyer actually types, wrote down every product they named, and wrote down every web page the answer was built from.&lt;/p&gt;

&lt;p&gt;The result is 241 category measurements, 1,446 answers read, and 5,037 product mentions, all from real runs I can show you. Three findings surprised me enough to write this.&lt;/p&gt;

&lt;h2&gt;
  
  
  The method, so you can repeat it
&lt;/h2&gt;

&lt;p&gt;For each category I asked six buyer-style questions: the plain "best X", plus "best free X", "most affordable X", "best X for small teams", "what X should I use", and "X recommendations". Each question got one live web search, put to ChatGPT and Gemini (and Perplexity on the earliest runs). Then I recorded, per answer, every product named and every source domain the assistant cited. No opinions, no model asked to rank anything. Whether a product counts is a literal check for its name in the answer text.&lt;/p&gt;

&lt;p&gt;You can do this by hand for your own category in an afternoon. That is the whole point: it is countable, not a vibe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 1: Reddit runs the shortlist, the review sites you pay for do not
&lt;/h2&gt;

&lt;p&gt;Across the 241 categories, here is how often each kind of source showed up behind an answer:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;In how many of the 241 categories&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Reddit&lt;/td&gt;
&lt;td&gt;225 (93%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quora&lt;/td&gt;
&lt;td&gt;148 (61%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;G2&lt;/td&gt;
&lt;td&gt;135 (56%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;YouTube&lt;/td&gt;
&lt;td&gt;117 (49%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gartner&lt;/td&gt;
&lt;td&gt;111 (46%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Capterra&lt;/td&gt;
&lt;td&gt;30 (12%)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Reddit was behind the answers in &lt;strong&gt;93% of categories&lt;/strong&gt; and fed 1,202 individual answers. Capterra, the directory a lot of software teams pour budget into, was behind &lt;strong&gt;12%&lt;/strong&gt;. In 196 of the 241 categories, Reddit was a source and Capterra was not there at all.&lt;/p&gt;

&lt;p&gt;This is not a Reddit-is-cool take. It is where the assistants actually go. When someone asks "best IT service management software" or "best social media scheduling tools", the answer is stitched from Reddit threads, community Q&amp;amp;A, and independent roundups, not from the review grid you optimized your profile on. You can see it category by category: Reddit fed every one of the six answers in &lt;a href="https://glotier.com/guides/who-ai-recommends/it-service-management-software" rel="noopener noreferrer"&gt;IT service management&lt;/a&gt;, &lt;a href="https://glotier.com/guides/who-ai-recommends/fraud-detection-software" rel="noopener noreferrer"&gt;fraud detection&lt;/a&gt;, &lt;a href="https://glotier.com/guides/who-ai-recommends/threat-intelligence-software" rel="noopener noreferrer"&gt;threat intelligence&lt;/a&gt;, and &lt;a href="https://glotier.com/guides/who-ai-recommends/social-media-scheduling-tools" rel="noopener noreferrer"&gt;social media scheduling&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 2: 62% of the time, there is no single winner
&lt;/h2&gt;

&lt;p&gt;We assume AI hands out one confident answer. It mostly does not. In &lt;strong&gt;149 of the 241 categories (62%)&lt;/strong&gt;, no product was named in all of the answers. Change one word in the question and the shortlist reorganizes.&lt;/p&gt;

&lt;p&gt;The clearest example is &lt;a href="https://glotier.com/guides/who-ai-recommends/test-automation-software" rel="noopener noreferrer"&gt;test automation software&lt;/a&gt;: eight different tools tied at the top, each named in only two of the six answers. &lt;a href="https://glotier.com/guides/who-ai-recommends/warehouse-management-software" rel="noopener noreferrer"&gt;Warehouse management&lt;/a&gt; had a six-way tie. Only 38% of categories had a product the assistants named every single time.&lt;/p&gt;

&lt;p&gt;For a buyer, this means the "best" answer is less stable than it looks. For a vendor, it means the race is winnable: in most categories nobody owns the top slot, so the gap between being named and being invisible is small.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 3: a few brands are the AI's default across dozens of unrelated categories
&lt;/h2&gt;

&lt;p&gt;Some names show up everywhere. Counting how many distinct categories named each brand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HubSpot: 24 categories&lt;/strong&gt; (from deal desk to help desk to product marketing)&lt;/li&gt;
&lt;li&gt;Salesforce: 16&lt;/li&gt;
&lt;li&gt;Zendesk: 12&lt;/li&gt;
&lt;li&gt;Connecteam: 12&lt;/li&gt;
&lt;li&gt;Rippling: 12&lt;/li&gt;
&lt;li&gt;BambooHR: 11&lt;/li&gt;
&lt;li&gt;Zapier, Datadog, Semrush, monday.com: 10 each&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;HubSpot gets named by the assistants in &lt;a href="https://glotier.com/guides/who-ai-recommends/revenue-operations-software" rel="noopener noreferrer"&gt;revenue operations&lt;/a&gt;, &lt;a href="https://glotier.com/guides/who-ai-recommends/sales-forecasting-software" rel="noopener noreferrer"&gt;sales forecasting&lt;/a&gt;, &lt;a href="https://glotier.com/guides/who-ai-recommends/customer-self-service-software" rel="noopener noreferrer"&gt;customer self-service&lt;/a&gt;, and twenty other categories, whether or not it is the obvious pick. The models reach for the brand they have seen described the most across the web, and that compounds. If you are competing with one of these defaults, you are not competing on features, you are competing on how often your name appears on the pages the assistant reads.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually gets you named
&lt;/h2&gt;

&lt;p&gt;Put the three findings together and the mechanism is clear: &lt;strong&gt;the source list decides who gets recommended, not market share.&lt;/strong&gt; The assistant can only name what its live search returns, and its live search returns Reddit, community threads, independent roundups, and sometimes a vendor's own comparison page. Over and over I saw a small product get named once because it sat in the single roundup that answered the "free" question, and a market leader go missing because it was absent from the exact page the assistant pulled.&lt;/p&gt;

&lt;p&gt;So if you sell software and want to be in these answers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Be in the Reddit and Quora threads that rank for your category. They were behind 93% and 61% of answers. This is earned, not bought.&lt;/li&gt;
&lt;li&gt;Get into the independent roundups that keep recurring for your category, and keep your G2 entry current (56%). Deprioritize Capterra-only effort (12%).&lt;/li&gt;
&lt;li&gt;Publish your own honest "best X" comparison. A vendor's own page repeatedly became the source the assistant quoted.&lt;/li&gt;
&lt;li&gt;Pick the question you want to win. "Free" and "affordable" pull completely different shortlists than the plain "best", so a budget product can own a query the leaders never appear in.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  See your own category
&lt;/h2&gt;

&lt;p&gt;I put all 241 measurements up, one page each, with the full named list, the counts, and the source map behind every answer: &lt;strong&gt;&lt;a href="https://glotier.com/guides/who-ai-recommends" rel="noopener noreferrer"&gt;glotier.com/guides/who-ai-recommends&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I build &lt;a href="https://glotier.com" rel="noopener noreferrer"&gt;Glotier&lt;/a&gt;, an affordable AI-visibility tool, so I have skin in this: the same measurement runs on your own category in about a minute, free and with no account, and tells you whether ChatGPT and Gemini name you or a rival, and which exact pages decide it. But the 241 above cost you nothing to read, and the method costs you nothing to repeat. If you sell in a category with real alternatives, run it before your competitor does.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Data: 241 categories measured on ChatGPT and Gemini, six buyer questions each, one live web search per answer, every product and source logged. Happy to share the raw counts for any category.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>marketing</category>
      <category>saas</category>
    </item>
    <item>
      <title>I counted the sources in 13 of Google's AI answers. 168 citations, and not one domain appeared twice.</title>
      <dc:creator>Oğuzhan Tüsen</dc:creator>
      <pubDate>Sat, 01 Aug 2026 19:32:14 +0000</pubDate>
      <link>https://dev.to/oguzhantusen/i-counted-the-sources-in-13-of-googles-ai-answers-168-citations-and-not-one-domain-appeared-1a1b</link>
      <guid>https://dev.to/oguzhantusen/i-counted-the-sources-in-13-of-googles-ai-answers-168-citations-and-not-one-domain-appeared-1a1b</guid>
      <description>&lt;p&gt;I keep a daily probe that asks the assistants the buying questions in my category and records every source behind every answer. Last week I pointed it at Google's two AI surfaces, the AI Overview box and the fuller AI Mode, and counted.&lt;/p&gt;

&lt;p&gt;Thirteen answers. 168 citations. Every single answer used a different domain for each of its sources. Not one domain was cited twice, in any answer, the whole week. Thirteen of thirteen, no repeats.&lt;/p&gt;

&lt;p&gt;That stopped me, because it is the opposite of how a normal search results page behaves. On the ten blue links, one strong site often takes three or four of the top spots. A page that ranks well ranks well repeatedly. Here, ranking well once seemed to use up the domain for that answer.&lt;/p&gt;

&lt;p&gt;Why an AI answer looks like this&lt;br&gt;
An assistant does not hand you a ranked list. It breaks your question into several smaller ones, runs those, and assembles an answer from the best source it found for each. Google's own patent on query variants (US11663201B2) describes dynamic control that "can often lead to a relatively large (e.g., more than 5, more than 10, or more than 15) quantity of variants."&lt;/p&gt;

&lt;p&gt;So an answer is not "the top pages for your query." It is "the one best page for each of a dozen sub-questions, gathered from wherever each happens to live." One page per sub-question. One slot per domain.&lt;/p&gt;

&lt;p&gt;For scale: the AI Mode answers pulled 14.75 sources on average, as many as 24. The AI Overview box drew on far fewer, 6.25 on average, sometimes zero. Different surface, different appetite, same one-slot pattern.&lt;/p&gt;

&lt;p&gt;What this changes about what you build&lt;br&gt;
If you get at most one slot in an answer, then the usual SEO instinct, publish many pages on one keyword and let the strongest rank, does close to nothing here. Ten pages about "best CRM" do not buy you ten slots. They compete for the same one.&lt;/p&gt;

&lt;p&gt;The move that fits the mechanism is the other one: be the single best page for one sub-question, and to appear in more answers, cover more distinct sub-questions. Breadth of genuinely-different pages beats depth on one term. A page that owns "how to migrate from X to Y without downtime" can win the slot for that sub-question in a way your tenth "best tool" page never will.&lt;/p&gt;

&lt;p&gt;The honest limits, because they matter&lt;br&gt;
Thirteen answers is a small sample, one question set, one week. And I cannot tell from the outside whether the one-per-domain rule is Google selecting one page per domain, or Google deduplicating what it displays after selecting more. Those are different mechanisms.&lt;/p&gt;

&lt;p&gt;Here is why I am publishing it anyway: for someone deciding where to spend next week, the consequence is identical either way. Whether it is selection or display, you still get one slot, so you still win by covering more sub-questions rather than stacking pages on one. When the decision does not change, the caveat is worth stating out loud rather than sitting on the finding.&lt;/p&gt;

&lt;p&gt;I found this by running the measurement on my own site, which is the only way I trust a number. If you want to check me, the quantity to reproduce is simple: take any AI answer, list its sources, and see how many share a domain. I would genuinely like to know if you get repeats where I got none.&lt;/p&gt;




&lt;p&gt;I found this running my own tool, &lt;a href="https://glotier.com" rel="noopener noreferrer"&gt;Glotier&lt;/a&gt;, which checks whether ChatGPT, Gemini and Perplexity name your product and what on your pages stops them from citing you. The first check is free.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>agents</category>
      <category>seo</category>
    </item>
    <item>
      <title>Everyone says submit to SaaS directories so AI finds you. I measured 172 citations across 4 categories. Directories got 1.</title>
      <dc:creator>Oğuzhan Tüsen</dc:creator>
      <pubDate>Tue, 28 Jul 2026 09:04:00 +0000</pubDate>
      <link>https://dev.to/oguzhantusen/everyone-says-submit-to-saas-directories-so-ai-finds-you-i-measured-172-citations-across-4-3d8n</link>
      <guid>https://dev.to/oguzhantusen/everyone-says-submit-to-saas-directories-so-ai-finds-you-i-measured-172-citations-across-4-3d8n</guid>
      <description>&lt;p&gt;The advice is everywhere and it sounds right: get listed on G2, Capterra, AlternativeTo, SaaSHub, Crunchbase and Product Hunt, because that is where AI assistants learn which products exist.&lt;/p&gt;

&lt;p&gt;I believed it enough to block out an afternoon for it. Before spending the afternoon, I measured it. I am glad I did, because in the data I have, the advice is close to backwards.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I measured
&lt;/h2&gt;

&lt;p&gt;I run a tool that asks ChatGPT, Gemini and Perplexity the questions buyers actually type, as live web searches, and records the source pages behind each answer. I ran it across four software categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI SEO tools&lt;/li&gt;
&lt;li&gt;Email marketing software&lt;/li&gt;
&lt;li&gt;Help desk software&lt;/li&gt;
&lt;li&gt;Social media scheduling tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Two of those, help desk and email marketing, are the classic directory categories. If G2 and Capterra drive AI answers anywhere, it should be there.&lt;/p&gt;

&lt;p&gt;172 source citations in total. Here is what the directories got.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Total citations&lt;/th&gt;
&lt;th&gt;From SaaS directories&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI SEO tools&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Email marketing software&lt;/td&gt;
&lt;td&gt;44&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Help desk software&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Social media scheduling tools&lt;/td&gt;
&lt;td&gt;41&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;172&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One. It was g2.com, cited once, in help desk software.&lt;/p&gt;

&lt;p&gt;Across all four categories, AlternativeTo, Capterra, Crunchbase, SaaSHub, GetApp, Product Hunt, StackShare, Software Advice, TrustRadius and SourceForge were cited zero times between them.&lt;/p&gt;

&lt;h2&gt;
  
  
  So what is being cited
&lt;/h2&gt;

&lt;p&gt;The winners were consistent and they were not what I expected either.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reddit, in all four categories.&lt;/strong&gt; 6 citations in help desk, 6 in social media scheduling, 4 in email marketing, 2 in AI SEO tools. In my own category, measured separately across 44 full answers, Reddit appeared in 27 of them. 61%.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Independent roundups from people who cover one niche properly.&lt;/strong&gt; Not general directories. Specific publications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Email marketing: emailvendorselection.com 6, mailtrap.io 5, emailtooltester.com 3&lt;/li&gt;
&lt;li&gt;Help desk: proprofsdesk.com 4, crm.org 3, thecxlead.com 3&lt;/li&gt;
&lt;li&gt;Social scheduling: statusbrew.com 5, technologyadvice.com 5&lt;/li&gt;
&lt;li&gt;AI SEO: onelittleweb.com 6, freddiechatt.com 4, rankability.com 4, whatagraph.com 4&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Two names that showed up across multiple categories.&lt;/strong&gt; zapier.com was cited in email marketing (6) and social scheduling (4), and separately in 7 of my own category's answers. pcmag.com appeared in both email marketing (4) and help desk (4). If you want one target that pays off in more than one category, Zapier's roundups are the closest thing in this data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quora, more than I expected.&lt;/strong&gt; 5 citations in social scheduling, 3 in help desk. It quietly behaves like Reddit does.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it goes this way
&lt;/h2&gt;

&lt;p&gt;I am guessing at the mechanism, and I want to be clear that this part is the guess and the numbers above are the measurement.&lt;/p&gt;

&lt;p&gt;A directory listing is a database row. Name, category, price, a paragraph you wrote about yourself, and a star rating. When an assistant is asked "which help desk should I use and why", a row does not answer it. Somebody's post explaining why they moved off Zendesk after two years does.&lt;/p&gt;

&lt;p&gt;The pages that get cited have an argument in them. They compare, they take a position, they say who something is not for. Directories are built to be comprehensive and neutral, which is exactly what makes them useless as a source for a recommendation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I am not claiming
&lt;/h2&gt;

&lt;p&gt;Four categories and 172 citations is not the internet, and it is one measurement per category rather than a trend.&lt;/p&gt;

&lt;p&gt;Directories can still be worth doing for reasons that have nothing to do with this: human buyers do browse Capterra, a G2 badge is social proof, and the backlink is a backlink. If someone shows me a bigger sample where directories drive AI answers, I will publish that too.&lt;/p&gt;

&lt;p&gt;The narrow claim is the one I can defend: in these four categories, the assistants building the answer were not reading the directories. If your reason for spending an afternoon on submissions is "so ChatGPT finds me", that reason did not survive contact with my data.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I did with the afternoon instead
&lt;/h2&gt;

&lt;p&gt;I dropped the directory plan and rewrote the priority order to match the citation counts. Reddit first, because 61% is not a close call. Then the specific roundups I can name from my own data, approached with the measurement rather than a request to be added, because those editors all write about this subject and none of them have data on it. Then the categories where one publication pays off twice.&lt;/p&gt;

&lt;p&gt;The uncomfortable part is that I had the plan written down three days before I measured it, and the plan was aimed at the wrong channel with total confidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run it on your own category
&lt;/h2&gt;

&lt;p&gt;You can do the manual version in twenty minutes and I would rather you checked than believed me. Ask ChatGPT, Gemini and Perplexity the question your buyer types. Open every source each answer cites. Count how many are directories and how many are somebody's opinion. Then decide where the afternoon goes.&lt;/p&gt;

&lt;p&gt;The automated version is what I build, at &lt;a href="https://glotier.com" rel="noopener noreferrer"&gt;glotier.com&lt;/a&gt;. Free, no card, no account. It asks the three assistants your buyer questions and shows you which products got named and every source page behind each answer.&lt;/p&gt;

&lt;p&gt;I would rather publish a number that costs me an afternoon of planned work than keep repeating advice that four categories of my own data say is wrong.&lt;/p&gt;

</description>
      <category>saas</category>
      <category>ai</category>
      <category>marketing</category>
      <category>seo</category>
    </item>
    <item>
      <title>13 of the 14 tools AI recommends in my category are on the same list. I am not on it.</title>
      <dc:creator>Oğuzhan Tüsen</dc:creator>
      <pubDate>Tue, 28 Jul 2026 09:03:29 +0000</pubDate>
      <link>https://dev.to/oguzhantusen/13-of-the-14-tools-ai-recommends-in-my-category-are-on-the-same-list-i-am-not-on-it-cf4</link>
      <guid>https://dev.to/oguzhantusen/13-of-the-14-tools-ai-recommends-in-my-category-are-on-the-same-list-i-am-not-on-it-cf4</guid>
      <description>&lt;p&gt;I build a tool that checks whether AI assistants name your product. So I pointed it at my own category and let it run for a week.&lt;/p&gt;

&lt;p&gt;39 different buyer questions. 44 recorded answers from ChatGPT, Gemini and Perplexity, all live web searches rather than training data. For every answer I stored three things: which products got named, which pages the answer was built from, and whether I was in it.&lt;/p&gt;

&lt;p&gt;I was named zero times. Not once, in any answer, by any assistant.&lt;/p&gt;

&lt;p&gt;This is what I found when I went looking for the reason, and the reason turned out to be much more boring and much more fixable than I expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who does get named
&lt;/h2&gt;

&lt;p&gt;Counting every mention across those 44 answers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Times named&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Profound&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Otterly&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Peec AI&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Semrush&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Surfer SEO&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frase&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SE Ranking&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ahrefs Brand Radar&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AthenaHQ&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scrunch&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rankscale&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ZipTie&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Writesonic&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nightwatch&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;My product&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;My first instinct was the comfortable one: those are bigger companies. It is a nice theory and the data kills it. Otterly starts at 29 dollars a month. Rankscale starts at 20. ZipTie and AthenaHQ are not enterprises either. Several of them are smaller operations than mine.&lt;/p&gt;

&lt;p&gt;So it is not size. Something else decides this.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing that decides it
&lt;/h2&gt;

&lt;p&gt;Every answer also stores its sources, so I counted which domains the assistants were actually reading. One name kept coming back that was not a competitor: rankability.com, cited in 8 of my 44 answers.&lt;/p&gt;

&lt;p&gt;I opened the page. It is an article called "22 Best AI Search Rank Tracking &amp;amp; Visibility Tools". A list.&lt;/p&gt;

&lt;p&gt;Then I did the comparison that took ten minutes and changed my plan for the quarter. I put the 14 tools that get named next to the 22 tools on that list.&lt;/p&gt;

&lt;p&gt;Thirteen of my fourteen are on it.&lt;/p&gt;

&lt;p&gt;Profound, Otterly, Peec AI, Semrush, Surfer, SE Ranking, Ahrefs Brand Radar, AthenaHQ, Scrunch, Rankscale, ZipTie, Writesonic, Nightwatch. All there. My product is not on the list, and my product is named zero times.&lt;/p&gt;

&lt;p&gt;I do not get to call that proof of causation from one list and 44 answers. But it is the strongest pattern in the data by a distance, and it points somewhere I can act on, which is more than any theory about being small was ever going to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fourteenth tool is the interesting one
&lt;/h2&gt;

&lt;p&gt;One name breaks the pattern: Frase. Named 10 times, and not on that list at all.&lt;/p&gt;

&lt;p&gt;So I went back to the source counts, and there it was: frase.io is itself cited as a source in 11 of the 44 answers. More often than the list that names everyone else.&lt;/p&gt;

&lt;p&gt;Frase did not get into the shortlist by being included in someone's roundup. It got in by being the page the assistant reads.&lt;/p&gt;

&lt;p&gt;That is the second route, and it is the harder one, but it means the wall is not one door. You can be on the lists that assistants read, or you can be the thing they read. Frase spent years building the second one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the answers actually come from
&lt;/h2&gt;

&lt;p&gt;While I had the data open, the full picture of my category's sources, across 44 answers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reddit.com: 27 answers, 61%&lt;/li&gt;
&lt;li&gt;youtube.com: 13 answers, 30%&lt;/li&gt;
&lt;li&gt;Individual vendors' own sites: tryprofound.com 15, frase.io 11, semrush.com 10, seranking.com 7&lt;/li&gt;
&lt;li&gt;Editorial roundups: rankability.com 8, zapier.com 7&lt;/li&gt;
&lt;li&gt;All SaaS directories combined (AlternativeTo, SaaSHub, Capterra, Crunchbase, GetApp, Product Hunt, StackShare, G2): 4&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last line is the one I had to sit with. I had a whole afternoon planned around directory submissions, based on advice I had read everywhere. In my category, by my own measurement, they are close to irrelevant. Reddit is 61%.&lt;/p&gt;

&lt;p&gt;I am writing that up separately because it deserves its own argument, but it is worth saying here: I had the plan backwards, and the only reason I know is that I measured instead of assuming.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I am doing about it
&lt;/h2&gt;

&lt;p&gt;Nothing clever. The data points at three things and they are all unglamorous.&lt;/p&gt;

&lt;p&gt;Get onto the lists that my category's answers are actually built from, which means the specific roundups I can name from my own citation counts rather than a generic directory push. Not by emailing "please add me", which gets ignored, but by giving those editors the one thing none of them have: this measurement. They all write about AI visibility and none of them measure it.&lt;/p&gt;

&lt;p&gt;Be useful on Reddit, because it is 61% and everything else is a rounding error next to it.&lt;/p&gt;

&lt;p&gt;Keep publishing, but stop expecting my own pages to do the work alone. tryprofound.com being cited 15 times proves an assistant will happily quote a vendor's own site. It also proves it does that after the vendor is already in the conversation. My pages are not wasted, they are just early.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you want to run this on your own category
&lt;/h2&gt;

&lt;p&gt;You can do a rough version by hand today, and I would rather you did that than take my word for any of it. Ask ChatGPT, Gemini and Perplexity the exact question your buyer types. Write down every product named. Then open the sources each assistant cites and look for the one page that keeps appearing. Check whether the products getting named are on it. Check whether you are.&lt;/p&gt;

&lt;p&gt;If it comes back the way mine did, at least you will know what you are up against, and it will not be "we are too small".&lt;/p&gt;

&lt;p&gt;The automated version is what I build: &lt;a href="https://glotier.com" rel="noopener noreferrer"&gt;glotier.com&lt;/a&gt;. The check is free, no card and no account. It asks the three assistants your buyer questions, shows you who got named instead of you, and lists every source page behind each answer.&lt;/p&gt;

&lt;p&gt;I would have preferred to launch with a better number than zero. It is the honest one, and it turned out to be the useful one.&lt;/p&gt;

</description>
      <category>seo</category>
      <category>ai</category>
      <category>saas</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>6 real problems building an AI agent on Cloudflare Workers (and the fixes)</title>
      <dc:creator>Oğuzhan Tüsen</dc:creator>
      <pubDate>Wed, 15 Jul 2026 16:57:52 +0000</pubDate>
      <link>https://dev.to/oguzhantusen/glotier-build-story-the-real-problems-we-hit-2ieh</link>
      <guid>https://dev.to/oguzhantusen/glotier-build-story-the-real-problems-we-hit-2ieh</guid>
      <description>&lt;p&gt;These are the technical problems we hit building Glotier, an agent that runs on Cloudflare Workers. Each one is documented from git history, commits, and code: the problem, the root cause, the fix, and the lesson. Nothing invented.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cloudflare Workers have no persistent filesystem, so a Python framework that stores state in local SQLite cannot run there&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Context. Cloudflare does support Python on Workers. Python code runs on Pyodide, which is CPython compiled to WebAssembly and interpreted inside the V8 isolate. What Workers do not provide is a persistent local filesystem. A Python agent framework that keeps its state in local SQLite files cannot run there, because those files have nowhere to live. Pyodide also only supports pure-Python packages and packages with WebAssembly builds, which rules out anything depending on arbitrary C extensions.&lt;/p&gt;

&lt;p&gt;What we did. Built the agent Cloudflare-native. A Worker acts as the orchestrator and calls the model providers directly over HTTP, with Cloudflare D1 for persistence and focused single-purpose workers that return structured JSON.&lt;/p&gt;

&lt;p&gt;Lesson. "Does this language run on Workers?" is the wrong question, because Python does. The right questions are: does the framework need a persistent filesystem (Workers has none, so state belongs in D1, KV, or R2), and are its dependencies available as pure-Python or WebAssembly builds? A framework that stores state in local files will not port, regardless of language.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The dev.to (Forem) API returns 403 to a Cloudflare Worker without a User-Agent&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Problem. Saving a draft to the dev.to (Forem) API returned 403 Forbidden from our Cloudflare Worker, with a valid API key.&lt;/p&gt;

&lt;p&gt;Root cause. dev.to rejects requests that arrive without a User-Agent header, and Cloudflare Workers' fetch does not send a default one, so the failing request went out with no User-Agent at all. Isolating the header confirmed it: an empty User-Agent returned 403, while any non-empty value returned 200.&lt;/p&gt;

&lt;p&gt;Fix. Set an explicit User-Agent and the Forem Accept header on every call:&lt;/p&gt;

&lt;p&gt;jsconst DEVTO_UA = "Glotier/1.0 (+ &lt;a href="https://glotier.com" rel="noopener noreferrer"&gt;https://glotier.com&lt;/a&gt; )";&lt;br&gt;
// on every fetch to the Forem API:&lt;br&gt;
headers: { "api-key": apiKey, "User-Agent": DEVTO_UA, Accept: "application/vnd.forem.api-v1+json" }&lt;/p&gt;

&lt;p&gt;Lesson. Cloudflare Workers' fetch is minimal and sends no default headers. When a third-party API returns 403 from a Worker but works from other clients, a missing User-Agent is a prime suspect. Set the headers the API expects explicitly.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The model kept inventing facts, and switching to a stronger model did not fix it&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Problem. The content agent wrote confident, wrong details. For a build-in-public post about a game, it stated the game was built in Unity (it is Godot) and that it had no server (it has a Supabase leaderboard).&lt;/p&gt;

&lt;p&gt;First fix that did NOT work. Moving generation to a stronger paid model. It still invented features, code, and stack details. The problem was not model capability; we were asking it to write about specifics it had never been given.&lt;/p&gt;

&lt;p&gt;Fix that worked.&lt;/p&gt;

&lt;p&gt;Made grounding notes required. With no real notes, the worker returns no draft instead of a plausible fiction:&lt;/p&gt;

&lt;p&gt;jsconst notes = (brief.ownerNotes ?? "").trim();&lt;br&gt;
if (!notes) return { draft: null, honest: true };&lt;/p&gt;

&lt;p&gt;Then tightened the prompt to forbid unstated specifics (tools, libraries, languages, frameworks, techniques the notes did not mention), and added a separate fact-check pass: an independent step that sees only the source notes and the claims from the draft, and flags any claim the source does not support.&lt;/p&gt;

&lt;p&gt;Lesson. Hallucination is a grounding problem, not a model-tier problem. A bigger model fabricates just as confidently about things it was never told. Feed it real source material, forbid unstated specifics, and verify the output against the source. If there is no source, produce nothing.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Our GEO audit gave sites credit for files that did not exist&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Problem. The audit checks whether a site has an llms.txt, a /.well-known/ai.txt, and /ai/summary.json. Single-page apps passed all of them without having any.&lt;/p&gt;

&lt;p&gt;Root cause. Many SPAs answer every path, including ones that do not exist, with a 200 and the app's HTML shell (a client-side 404). Our fetch saw 200 OK with a body and counted the file as present. It was HTML, not the expected text or JSON.&lt;/p&gt;

&lt;p&gt;Fix. Do not trust the status alone; check that the body is the shape you asked for. A file counts only if it does not look like an HTML fallback:&lt;/p&gt;

&lt;p&gt;jsconst looksLikeHtml = (t) =&amp;gt; /^\s*(&amp;lt;!doctype html|]|])/i.test(t);&lt;br&gt;
const looksLikeJson = (t) =&amp;gt; /^\s*[[{]/.test(t.trim());&lt;br&gt;
// llms.txt / ai.txt counts only if present AND !looksLikeHtml(body)&lt;br&gt;
// summary.json counts only if present AND looksLikeJson(body)&lt;/p&gt;

&lt;p&gt;Lesson. 200 OK does not mean "this resource exists." Any audit or crawler that probes for specific files has to content-sniff, or SPAs will hand it a passing grade it did not earn.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Our "is this brand named by AI" check always said yes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Problem. We ask a grounded model whether AI names a product in its space. It reported "mentioned" for nearly everything, including a product with no real AI visibility. A false "you are visible" is the worst error for a visibility tool.&lt;/p&gt;

&lt;p&gt;Root cause. The query seeded the product's own name: I'm looking for apps like "". What are the best options and alternatives?. Answering naturally, the model repeats the name in its reply, and our check then found the name and marked it mentioned. The question guaranteed the answer.&lt;/p&gt;

&lt;p&gt;Fix. Ask by category, never by name, then check whether the product surfaces on its own: What are the best  apps right now?, with the product name nowhere in the prompt. If it appears, it is genuinely named. If not, it is honestly "not named yet," and the competitors it named instead are useful too.&lt;/p&gt;

&lt;p&gt;Lesson. If you use an LLM to measure whether something is known, make sure your prompt is not what puts the answer there. Any term in the question echoes in the response. Test for presence with a question that does not contain the thing you are testing for.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Adding SoftwareApplication schema broke Google's rich-results validation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Problem. We added SoftwareApplication JSON-LD to describe the product. Google's rich-results validation then reported an error on every page carrying it.&lt;/p&gt;

&lt;p&gt;Root cause. SoftwareApplication requires aggregateRating or review to be eligible as a rich result. We had no real ratings, and we will not invent star ratings to satisfy a validator.&lt;/p&gt;

&lt;p&gt;Fix. Removed SoftwareApplication and described the entity with types valid without ratings: Organization plus WebSite, and a FAQPage from real questions and answers. Honest structured data that still improves how well AI engines parse the site. Re-add SoftwareApplication only once there are real ratings to attach.&lt;/p&gt;

&lt;p&gt;Lesson. Some schema.org types have required properties for a rich result (SoftwareApplication wants a rating). Do not bolt on a type you cannot honestly fill: a faked aggregateRating risks a manual action, and a validation error on every page costs more than the missing type is worth. Pick the richest type you can populate truthfully.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>architecture</category>
      <category>serverless</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I Made a Minimal Polygon Merge Puzzle Game for Mobile</title>
      <dc:creator>Oğuzhan Tüsen</dc:creator>
      <pubDate>Tue, 14 Jul 2026 16:28:27 +0000</pubDate>
      <link>https://dev.to/oguzhantusen/i-made-a-minimal-polygon-merge-puzzle-game-for-mobile-5dh7</link>
      <guid>https://dev.to/oguzhantusen/i-made-a-minimal-polygon-merge-puzzle-game-for-mobile-5dh7</guid>
      <description>&lt;p&gt;After experimenting with several mobile game ideas, I wanted to create something simple, satisfying and relaxing.&lt;/p&gt;

&lt;p&gt;The result is Geo Merge.&lt;/p&gt;

&lt;p&gt;Gameplay&lt;/p&gt;

&lt;p&gt;Merge colorful geometric shapes&lt;/p&gt;

&lt;p&gt;Solve increasingly challenging puzzles&lt;/p&gt;

&lt;p&gt;Clean minimalist visuals&lt;/p&gt;

&lt;p&gt;Gradually increasing difficulty&lt;/p&gt;

&lt;p&gt;Designed for quick play sessions&lt;/p&gt;

&lt;p&gt;One of my goals was to make a puzzle game that feels relaxing instead of stressful.&lt;/p&gt;

&lt;p&gt;I'm still improving the gameplay based on player feedback and adding new content.&lt;/p&gt;

&lt;p&gt;I'd really appreciate suggestions from other game developers.&lt;/p&gt;

&lt;p&gt;Google Play:&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.tusenly.geomerge" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.tusenly.geomerge&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What would make a merge puzzle game more addictive without becoming frustrating?&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>indiedev</category>
      <category>android</category>
      <category>godot</category>
    </item>
    <item>
      <title>I Built a Minimal Relaxation App to Help People Sleep, Focus and Reduce Stress</title>
      <dc:creator>Oğuzhan Tüsen</dc:creator>
      <pubDate>Tue, 14 Jul 2026 16:27:11 +0000</pubDate>
      <link>https://dev.to/oguzhantusen/i-built-a-minimal-relaxation-app-to-help-people-sleep-focus-and-reduce-stress-2opi</link>
      <guid>https://dev.to/oguzhantusen/i-built-a-minimal-relaxation-app-to-help-people-sleep-focus-and-reduce-stress-2opi</guid>
      <description>&lt;p&gt;I've always loved minimal apps that do one thing really well.&lt;/p&gt;

&lt;p&gt;Most relaxation apps are full of subscriptions, accounts, popups and distractions. I wanted something much simpler.&lt;/p&gt;

&lt;p&gt;So I built Relaxing Melody Loop.&lt;/p&gt;

&lt;p&gt;Features&lt;br&gt;
🎵 Relaxing background music&lt;br&gt;
🌙 Sleep-friendly design&lt;br&gt;
📖 Perfect for reading or studying&lt;br&gt;
🧘 Meditation and mindfulness sessions&lt;br&gt;
🎧 High quality looping audio&lt;br&gt;
📱 Lightweight interface&lt;/p&gt;

&lt;p&gt;The goal wasn't to build another complicated wellness platform.&lt;/p&gt;

&lt;p&gt;Instead, I wanted an app you can open in seconds, press play, and immediately enjoy a peaceful atmosphere.&lt;/p&gt;

&lt;p&gt;I'm continuously adding new music and improving the listening experience.&lt;/p&gt;

&lt;p&gt;I'd love to hear your feedback from other developers and users.&lt;/p&gt;

&lt;p&gt;App Store:&lt;br&gt;
&lt;a href="https://apps.apple.com/tr/app/relaxing-melody-loop/id6785572375?l=tr" rel="noopener noreferrer"&gt;https://apps.apple.com/tr/app/relaxing-melody-loop/id6785572375?l=tr&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What feature would you add to a relaxation app?&lt;/p&gt;

</description>
      <category>indiehackers</category>
      <category>ios</category>
      <category>swift</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
