<?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: Georgi Kalchev</title>
    <description>The latest articles on DEV Community by Georgi Kalchev (@georgi_kalchev_85d01f7368).</description>
    <link>https://dev.to/georgi_kalchev_85d01f7368</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%2F4161990%2Fb9b4d48e-f16e-4c72-ab10-9fd628a87528.jpg</url>
      <title>DEV Community: Georgi Kalchev</title>
      <link>https://dev.to/georgi_kalchev_85d01f7368</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/georgi_kalchev_85d01f7368"/>
    <language>en</language>
    <item>
      <title>IndexNow, Bing and sitemaps: what models still miss</title>
      <dc:creator>Georgi Kalchev</dc:creator>
      <pubDate>Mon, 26 Oct 2026 15:01:23 +0000</pubDate>
      <link>https://dev.to/georgi_kalchev_85d01f7368/indexnow-bing-and-sitemaps-what-models-still-miss-4h1i</link>
      <guid>https://dev.to/georgi_kalchev_85d01f7368/indexnow-bing-and-sitemaps-what-models-still-miss-4h1i</guid>
      <description>&lt;p&gt;Sonnet and Haiku reviewed Bing and IndexNow submission code and wrote sitemaps. A retired endpoint and a monthly quota slipped past both; sitemaps were fine.&lt;/p&gt;

&lt;p&gt;There are three ways to tell a search engine about pages: call the Bing Webmaster API with a batch of addresses, send one IndexNow request that the receiving engine shares with the others, or publish a sitemap, name it in robots.txt and wait for crawlers. We gave two AI models both kinds of work, reviewing submission code and writing sitemap files. For the sitemap they already do the job well. For the submission code they miss what changed recently or needs a little arithmetic: Bing switched off the XML and SOAP versions of its API on 31 August 2026, its quota has a daily and a monthly figure, and an error can hide behind a success status.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full report on AISkills402:&lt;/strong&gt; &lt;a href="https://aiskills402.com/blog/indexnow-bing-sitemaps-what-models-miss?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;https://aiskills402.com/blog/indexnow-bing-sitemaps-what-models-miss?utm_source=devto&amp;amp;utm_medium=social&lt;/a&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>modelcomparison</category>
      <category>weakmodels</category>
      <category>testing</category>
    </item>
    <item>
      <title>JSON-LD and hreflang: what models add that Google refuses</title>
      <dc:creator>Georgi Kalchev</dc:creator>
      <pubDate>Mon, 26 Oct 2026 07:00:54 +0000</pubDate>
      <link>https://dev.to/georgi_kalchev_85d01f7368/json-ld-and-hreflang-what-models-add-that-google-refuses-o80</link>
      <guid>https://dev.to/georgi_kalchev_85d01f7368/json-ld-and-hreflang-what-models-add-that-google-refuses-o80</guid>
      <description>&lt;p&gt;We gave 44 page-head tasks to Sonnet and Haiku. Valid syntax hid a made-up currency, a self-awarded rating and an unsupported language code.&lt;/p&gt;

&lt;p&gt;Two kinds of markup sit in a page head for search engines alone: JSON-LD, which describes the page, and hreflang, which links its language versions. A model asked to write either one tends to produce something that looks finished and passes every syntax validator, yet contains a value the page never stated or a code Google does not accept. In our tests the damage was small in count and sharp in kind: a currency nobody mentioned, a star rating a clinic gave itself, a language code Google names as unsupported. Below are the method, the exact answers, why each one matters, and a checklist for your own pages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full report on AISkills402:&lt;/strong&gt; &lt;a href="https://aiskills402.com/blog/json-ld-hreflang-models-get-wrong?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;https://aiskills402.com/blog/json-ld-hreflang-models-get-wrong?utm_source=devto&amp;amp;utm_medium=social&lt;/a&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>hallucination</category>
      <category>modelcomparison</category>
      <category>weakmodels</category>
    </item>
    <item>
      <title>Do AI crawlers really get blocked? Reading the test</title>
      <dc:creator>Georgi Kalchev</dc:creator>
      <pubDate>Sun, 25 Oct 2026 15:01:05 +0000</pubDate>
      <link>https://dev.to/georgi_kalchev_85d01f7368/do-ai-crawlers-really-get-blocked-reading-the-test-2n48</link>
      <guid>https://dev.to/georgi_kalchev_85d01f7368/do-ai-crawlers-really-get-blocked-reading-the-test-2n48</guid>
      <description>&lt;p&gt;We gave 45 crawler situations to Sonnet and Haiku. Bare bot names fooled both, and the smaller model also slipped on robots.txt. Each trap and its fix.&lt;/p&gt;

&lt;p&gt;A site can be said to block an AI crawler only after you sent the vendor's complete user-agent string, once per bot of each company (its trainer and its search fetcher), plus a control request that resembles a normal browser. A bare name such as GPTBot proves nothing, because sites answer it differently from the real crawler. Models fall for this: handed such results, they declared that a site treats one company's crawler differently from another's. More traps sit around Cloudflare defaults, old HTTP clients and a token that is not a crawler at all; the models walked into some of them and stepped around others. Below are the method, each trap, and an honest account of how much two of our…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full report on AISkills402:&lt;/strong&gt; &lt;a href="https://aiskills402.com/blog/ai-crawler-access-test-misread?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;https://aiskills402.com/blog/ai-crawler-access-test-misread?utm_source=devto&amp;amp;utm_medium=social&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aicrawlers</category>
      <category>cloudflare</category>
      <category>modelcomparison</category>
      <category>weakmodels</category>
    </item>
    <item>
      <title>Google indexing fixes that models get wrong</title>
      <dc:creator>Georgi Kalchev</dc:creator>
      <pubDate>Sun, 25 Oct 2026 07:00:57 +0000</pubDate>
      <link>https://dev.to/georgi_kalchev_85d01f7368/google-indexing-fixes-that-models-get-wrong-367f</link>
      <guid>https://dev.to/georgi_kalchev_85d01f7368/google-indexing-fixes-that-models-get-wrong-367f</guid>
      <description>&lt;p&gt;We gave 46 Search Console and canonical-URL situations to Sonnet and Haiku. A strong model errs rarely, a smaller one more. Each trap and its fix.&lt;/p&gt;

&lt;p&gt;Models know the general rules of indexing well, and they still pick a stale or wrong action in a handful of specific Google situations. The ones we caught: pressing Request indexing on a URL that redirects, answering a redirect that has no destination by blaming the site, pointing a syndicated copy at the original with a canonical, and hiding an untranslated page instead of treating it as a duplicate. A strong model slipped in only a few of our test cases; a smaller one slipped more often. Below is each trap, the right move, and what the test showed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full report on AISkills402:&lt;/strong&gt; &lt;a href="https://aiskills402.com/blog/google-indexing-fixes-models-get-wrong?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;https://aiskills402.com/blog/google-indexing-fixes-models-get-wrong?utm_source=devto&amp;amp;utm_medium=social&lt;/a&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>modelcomparison</category>
      <category>weakmodels</category>
      <category>testing</category>
    </item>
    <item>
      <title>Google indexing on Workers: 500s only a burst showed</title>
      <dc:creator>Georgi Kalchev</dc:creator>
      <pubDate>Sat, 24 Oct 2026 15:01:13 +0000</pubDate>
      <link>https://dev.to/georgi_kalchev_85d01f7368/google-indexing-on-workers-500s-only-a-burst-showed-11k</link>
      <guid>https://dev.to/georgi_kalchev_85d01f7368/google-indexing-on-workers-500s-only-a-burst-showed-11k</guid>
      <description>&lt;p&gt;A site on Cloudflare Workers looked healthy page by page, yet half its pages failed under a burst. What caused it, how we fixed it, and a two-model test.&lt;/p&gt;

&lt;p&gt;A site can answer every single request correctly and still fail on half its pages the moment something asks for many at once. On our own site the cause was ordinary: product pages pulled their data from an API that the same site publishes, and whose rate limit was written for outside callers, and a burst of page renders used it up. A one-by-one check never gets there. Only a parallel audit, plus a look at the live Worker log while it runs, shows it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full report on AISkills402:&lt;/strong&gt; &lt;a href="https://aiskills402.com/blog/google-indexing-cloudflare-500s-under-load?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;https://aiskills402.com/blog/google-indexing-cloudflare-500s-under-load?utm_source=devto&amp;amp;utm_medium=social&lt;/a&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>cloudflare</category>
      <category>opennext</category>
      <category>debugging</category>
    </item>
    <item>
      <title>What models still get wrong about social posting APIs</title>
      <dc:creator>Georgi Kalchev</dc:creator>
      <pubDate>Sat, 24 Oct 2026 07:01:17 +0000</pubDate>
      <link>https://dev.to/georgi_kalchev_85d01f7368/what-models-still-get-wrong-about-social-posting-apis-1018</link>
      <guid>https://dev.to/georgi_kalchev_85d01f7368/what-models-still-get-wrong-about-social-posting-apis-1018</guid>
      <description>&lt;p&gt;Sonnet and Haiku each got 19 of 24 social posting API questions right alone and missed the same five. A skill fixed them, though its first wording broke two.&lt;/p&gt;

&lt;p&gt;Partly. Asked 24 short questions about posting to six services, Claude Sonnet and Claude Haiku each answered 19 correctly with no help, and they failed the same five. The five were not random. Several were things the services changed or never wrote down. Their plan would have been sound on how the protocols work and wrong on a few facts: one paywall from this year, one rule that runs against intuition, and Pinterest behaviour that no help page states. With a skill's text added, Sonnet reached 24 and Haiku 23, but the first wording of that skill also made Sonnet fail two questions it had answered correctly alone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full report on AISkills402:&lt;/strong&gt; &lt;a href="https://aiskills402.com/blog/social-api-facts-models-get-wrong?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;https://aiskills402.com/blog/social-api-facts-models-get-wrong?utm_source=devto&amp;amp;utm_medium=social&lt;/a&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>modelcomparison</category>
      <category>hallucination</category>
    </item>
    <item>
      <title>What a model gets wrong writing a job post from notes</title>
      <dc:creator>Georgi Kalchev</dc:creator>
      <pubDate>Fri, 23 Oct 2026 15:00:59 +0000</pubDate>
      <link>https://dev.to/georgi_kalchev_85d01f7368/what-a-model-gets-wrong-writing-a-job-post-from-notes-9c3</link>
      <guid>https://dev.to/georgi_kalchev_85d01f7368/what-a-model-gets-wrong-writing-a-job-post-from-notes-9c3</guid>
      <description>&lt;p&gt;Sonnet wrote 16 of 23 job posts right alone, Haiku 15. With a skill, 21 and 20, though two Sonnet posts that passed alone then failed.&lt;/p&gt;

&lt;p&gt;Not reliably. We ran Claude Sonnet and Claude Haiku over 23 sets of scrappy hiring notes, asking each for a job post with seven fixed sections. Left alone, Sonnet produced 16 posts that passed our checks and Haiku 15. The misses were rarely bad prose. A model obeyed an order hidden in the notes, kept age-flavoured wording, or answered in a language nobody asked for. With the skill's text added, the counts rose to 21 and 20, yet two of Sonnet's passes turned into fails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full report on AISkills402:&lt;/strong&gt; &lt;a href="https://aiskills402.com/blog/ai-job-post-from-hiring-notes?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;https://aiskills402.com/blog/ai-job-post-from-hiring-notes?utm_source=devto&amp;amp;utm_medium=social&lt;/a&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>modelcomparison</category>
      <category>hallucination</category>
    </item>
    <item>
      <title>What a model misses when it reviews an x402 listing</title>
      <dc:creator>Georgi Kalchev</dc:creator>
      <pubDate>Fri, 23 Oct 2026 07:02:24 +0000</pubDate>
      <link>https://dev.to/georgi_kalchev_85d01f7368/what-a-model-misses-when-it-reviews-an-x402-listing-2g18</link>
      <guid>https://dev.to/georgi_kalchev_85d01f7368/what-a-model-misses-when-it-reviews-an-x402-listing-2g18</guid>
      <description>&lt;p&gt;Unaided, Sonnet named 10 of 16 planted flaws in x402 listings and Haiku 6. Most misses were facts about the catalog and the buyer client.&lt;/p&gt;

&lt;p&gt;Partly. Two Claude models, Sonnet and Haiku, reviewed 23 short x402 listings, scripts and plans, 16 of them hiding a planted flaw. On their own, Sonnet named 10 of the 16 in some words (9 on a strict reading) and Haiku named 6. Most misses were facts about how the catalog and the buyer client behave, and careful reading of a pasted snippet cannot reveal such a fact. Once the skill's text joined the instructions, both models named all 16.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full report on AISkills402:&lt;/strong&gt; &lt;a href="https://aiskills402.com/blog/x402-listing-what-models-miss?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;https://aiskills402.com/blog/x402-listing-what-models-miss?utm_source=devto&amp;amp;utm_medium=social&lt;/a&gt;&lt;/p&gt;

</description>
      <category>x402</category>
      <category>bazaar</category>
      <category>testing</category>
      <category>modelcomparison</category>
    </item>
    <item>
      <title>A model flags a wrong total but skips the sum</title>
      <dc:creator>Georgi Kalchev</dc:creator>
      <pubDate>Thu, 22 Oct 2026 15:01:23 +0000</pubDate>
      <link>https://dev.to/georgi_kalchev_85d01f7368/a-model-flags-a-wrong-total-but-skips-the-sum-10no</link>
      <guid>https://dev.to/georgi_kalchev_85d01f7368/a-model-flags-a-wrong-total-but-skips-the-sum-10no</guid>
      <description>&lt;p&gt;Bare, Sonnet and Haiku pointed at wrong totals and weekdays but never wrote the sum or the true day that proves them. A skill file made them show it.&lt;/p&gt;

&lt;p&gt;Mostly not. Our test set two Claude models, Sonnet and Haiku, to hunt for self-contradictions in short documents. On their own, both usually pointed at the right passage, yet wherever the answer needs arithmetic or a calendar they rarely wrote down the figure or the weekday that proves the problem. A budget whose lines add up to 105,000 against a stated 110,000 came back as a finding that set the lines against the total, with no 105,000 anywhere. The reader must redo the addition, and a finding without its proof looks just like a guess.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full report on AISkills402:&lt;/strong&gt; &lt;a href="https://aiskills402.com/blog/llm-contradiction-check-skips-the-sum?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;https://aiskills402.com/blog/llm-contradiction-check-skips-the-sum?utm_source=devto&amp;amp;utm_medium=social&lt;/a&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>modelcomparison</category>
      <category>json</category>
    </item>
    <item>
      <title>A model that summarizes a table adds its own sums</title>
      <dc:creator>Georgi Kalchev</dc:creator>
      <pubDate>Thu, 22 Oct 2026 07:01:29 +0000</pubDate>
      <link>https://dev.to/georgi_kalchev_85d01f7368/a-model-that-summarizes-a-table-adds-its-own-sums-3kog</link>
      <guid>https://dev.to/georgi_kalchev_85d01f7368/a-model-that-summarizes-a-table-adds-its-own-sums-3kog</guid>
      <description>&lt;p&gt;We gave 24 small tables to Sonnet and Haiku and told both to use only printed figures. Sonnet still computed its own on eight tables, Haiku on none.&lt;/p&gt;

&lt;p&gt;Yes, and the stronger model did it more often. Our test gave Claude Sonnet and Claude Haiku 24 small tables, and the job each time was to summarize a table in plain prose, staying inside the numbers it prints. On eight of those tables Sonnet still produced a number or a comparison that was nowhere in the data, such as a difference, a ratio or a total. Haiku did that on none. Every computed figure was correct arithmetic, which is the problem: once it sits in a paragraph, a reader cannot tell it from a number the table itself carried.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full report on AISkills402:&lt;/strong&gt; &lt;a href="https://aiskills402.com/blog/llm-table-summary-adds-figures?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;https://aiskills402.com/blog/llm-table-summary-adds-figures?utm_source=devto&amp;amp;utm_medium=social&lt;/a&gt;&lt;/p&gt;

</description>
      <category>testing</category>
      <category>modelcomparison</category>
      <category>summarization</category>
      <category>hallucination</category>
    </item>
    <item>
      <title>Cloudflare Web Analytics: link previews are not readers</title>
      <dc:creator>Georgi Kalchev</dc:creator>
      <pubDate>Wed, 21 Oct 2026 15:00:59 +0000</pubDate>
      <link>https://dev.to/georgi_kalchev_85d01f7368/cloudflare-web-analytics-link-previews-are-not-readers-429b</link>
      <guid>https://dev.to/georgi_kalchev_85d01f7368/cloudflare-web-analytics-link-previews-are-not-readers-429b</guid>
      <description>&lt;p&gt;Link previews, our own browser checks, a cache host and an EU setting skew Cloudflare stats. We gave 21 dashboards to two models, with and without a skill.&lt;/p&gt;

&lt;p&gt;Cloudflare Web Analytics counts a visit whenever a browser runs the beacon, and a lot of browsers that run it are not readers. The usual culprits are the single fetch a social network makes to draw link previews, your own headless-browser checks, and a staging site that shares the same token. Next to that, the table can also be missing real readers: one automatic setup option never injects the beacon for visitors in the EU. To get a reader count you subtract the first group, check the setting for the second, and only then add up the rest. The rows below come from our own sites, and the model test at the end shows how easily the sum goes wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full report on AISkills402:&lt;/strong&gt; &lt;a href="https://aiskills402.com/blog/cloudflare-web-analytics-real-readers?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;https://aiskills402.com/blog/cloudflare-web-analytics-real-readers?utm_source=devto&amp;amp;utm_medium=social&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloudflare</category>
      <category>testing</category>
      <category>modelcomparison</category>
      <category>statistics</category>
    </item>
    <item>
      <title>Does cookieless analytics need consent in the EU?</title>
      <dc:creator>Georgi Kalchev</dc:creator>
      <pubDate>Wed, 21 Oct 2026 07:03:11 +0000</pubDate>
      <link>https://dev.to/georgi_kalchev_85d01f7368/does-cookieless-analytics-need-consent-in-the-eu-4ldm</link>
      <guid>https://dev.to/georgi_kalchev_85d01f7368/does-cookieless-analytics-need-consent-in-the-eu-4ldm</guid>
      <description>&lt;p&gt;No cookie is not the legal test, and EU sources disagree on analytics. We read the texts, then watched a fresh browser load analytics, video and fonts.&lt;/p&gt;

&lt;p&gt;Cookieless analytics is not exempt just for lacking a cookie: having no cookie is not the test. The ePrivacy rule asks whether you store information on a visitor's device or gain access to information already there, and a script that makes the browser send details out can count as the second. The sources then split. The EU-wide text has no analytics exemption, the European Data Protection Board (EDPB) treats scripts as possible access without deciding the exemptions, France exempts audience measurement under conditions, and Germany adds no analytics exception of its own. This is a technical reading of published sources on 16 October 2026, not legal advice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the full report on AISkills402:&lt;/strong&gt; &lt;a href="https://aiskills402.com/blog/cookieless-analytics-eu-consent?utm_source=devto&amp;amp;utm_medium=social" rel="noopener noreferrer"&gt;https://aiskills402.com/blog/cookieless-analytics-eu-consent?utm_source=devto&amp;amp;utm_medium=social&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloudflare</category>
      <category>testing</category>
      <category>modelcomparison</category>
    </item>
  </channel>
</rss>
