{"id":1910,"date":"2026-09-09T06:17:47","date_gmt":"2026-09-09T13:17:47","guid":{"rendered":"https:\/\/evinced.com\/blog\/?p=1910"},"modified":"2026-09-09T10:05:41","modified_gmt":"2026-09-09T17:05:41","slug":"the-promise-and-peril-of-prompting","status":"publish","type":"post","link":"https:\/\/www.evinced.com\/blog\/the-promise-and-peril-of-prompting\/","title":{"rendered":"The promise and peril of prompting"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Post 2 of 5 in our series on AI-assisted code and accessibility.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">In our <a href=\"https:\/\/evinced.com\/blog\/the-heart-of-the-problem-with-llms\/\" data-type=\"link\" data-id=\"https:\/\/evinced.com\/blog\/the-heart-of-the-problem-with-llms\/\">first discussion of LLM-assisted coding and accessibility<\/a>, we tested the native ability of LLMs, out of the box, to write accessible code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">But many teams don\u2019t use models that way. Instead, they provide a sometimes-lengthy set of instructions to the LLM along with the basic work request. These \u201cprompts\u201d are something of a cottage industry, too \u2013 engineers compare them, discuss them, and share them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">Indeed, there is a prompt that nearly every accessibility-minded&nbsp; team tries sooner or later:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\" style=\"font-size:16px\"><code>Follow WCAG 2.2 AA. Use semantic HTML. Make it work with a keyboard.&nbsp;<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">As a public service, we decided to re-run our experiment from our first discussion but with this in mind. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">So we asked the same three models using the same three frameworks to each build a single-page app \u2013 so nine apps in total were built. Only this time, we gave the models the exact prompt above to guide the model while it did its work. Then we analyzed the built apps for accessibility defects, exactly as we did before.&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Results<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">In the table below, you can see that the prompt did not fix the problem. It made a trade. Critical defects fell by 57%. Serious defects, the grade just below critical, <em>rose<\/em> by 49%. The total count of meaningful defects didn\u2019t change.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\"><strong>Exhibit 1. Summary of Results With and Without Accessibility Prompt<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\" style=\"font-size:18px\"><table class=\"has-fixed-layout\"><tbody><tr><td><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>BASELINE<\/strong> <br>Average Defects Created Per App (no accessibility prompt)<\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>EXPERIMENT<\/strong><br>Accessibility Prompt Included&nbsp;<\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>RESULTS<\/strong><br>% Change, Experiment vs. Baseline<\/td><\/tr><tr><td>Critical defects<\/td><td class=\"has-text-align-center\" data-align=\"center\">21<\/td><td class=\"has-text-align-center\" data-align=\"center\">9<\/td><td class=\"has-text-align-center\" data-align=\"center\">-57%<\/td><\/tr><tr><td>Serious defects<\/td><td class=\"has-text-align-center\" data-align=\"center\">24<\/td><td class=\"has-text-align-center\" data-align=\"center\">36<\/td><td class=\"has-text-align-center\" data-align=\"center\">+49%<\/td><\/tr><tr><td>Critical + serious<\/td><td class=\"has-text-align-center\" data-align=\"center\">45<\/td><td class=\"has-text-align-center\" data-align=\"center\">45<\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>0%<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\"><em>Source: Evinced Web Flow Analyzer. N = 9 apps, built using combinations of 3 frontier models and 3 frameworks. Moderate and minor defects were near zero in both runs; across all grades combined, the net change was a 1.2% decline.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Fixing the famous<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">Critical bugs \u2013 the ones that stop assistive technology users in their tracks \u2013&nbsp; did see measurable improvement and were cut by slightly more than half. So by no means perfect, but definitely better.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">What we can say is that when you prompt for accessibility, models are best at cleaning up the problems the internet talks about most. Missing image descriptions. Unlabeled buttons. Jumbled headings. Text you cannot read against its background. Those show up constantly in training data for the&nbsp; models, and they happen to be the worst offenders, which is why the critical count improves while the total barely moves.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">The pattern to remember: prompting fixes the famous bugs. Only the famous bugs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The other side of the trade<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">Now the price. Serious defects climbed 48.8% on average once we asked for accessibility, and in four of the nine apps the prompt actually increased the serious count. Take Gemini with plain JavaScript: the prompt cleared every one of its 36 critical bugs, but quadrupled its serious count from 10 to 41. Gemini with Svelte fared worst of all: 22 serious bugs became 111, five times as many, and its critical count rose too, 35 to 51.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">This is what overcompensation looks like. Chasing the famous fixes, models sprinkle in accessibility markup they do not understand and create brand-new bugs while they are at it.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Thinking about reliability<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">What it all comes down to is, can your team <em>rely<\/em> on an LLM\u2019s accessibility results, even when prompted specially?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">Recall from Exhibit 1 that on balance, the number of critical + serious defects when using the accessibility prompt was unchanged vs. the baseline.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">But we also wanted to show the variability inside that average. To help discuss that, we\u2019ve reproduced the results below for each of our nine trials.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\"><strong>Exhibit 2. Critical and Serious Accessibility Bugs Created With and Without an Accessibility Prompt<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"591\" src=\"https:\/\/evinced.com\/blog\/wp-content\/uploads\/2026\/09\/image1-1024x591.png\" alt=\"Bar chart showing the number of accessibility bugs occurring when models were prompted for accessibility. \n\nChatGPT 5.1, GP2, and Gemini 2.5 Pro, GE2, both had MORE bugs after prompting. \n\nOnly three models saw more than a 50% improvement rate:\nClaude 4.5 Sonnet, CL2 and CL3, and ChatGPT 5.1, GP3.\u00a0\" class=\"wp-image-1922\" srcset=\"https:\/\/www.evinced.com\/blog\/wp-content\/uploads\/2026\/09\/image1-1024x591.png 1024w, https:\/\/www.evinced.com\/blog\/wp-content\/uploads\/2026\/09\/image1-300x173.png 300w, https:\/\/www.evinced.com\/blog\/wp-content\/uploads\/2026\/09\/image1-767x443.png 767w, https:\/\/www.evinced.com\/blog\/wp-content\/uploads\/2026\/09\/image1-1536x887.png 1536w, https:\/\/www.evinced.com\/blog\/wp-content\/uploads\/2026\/09\/image1.png 1999w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-center has-small-font-size wp-block-paragraph\"><em>Critical and serious bugs per app, as evaluated by Evinced Web Flow Analyzer, with and without the accessibility prompt.&nbsp;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">In two of the built apps, the number of critical + serious accessibility bugs was worse than without the prompt at all. In another three, the improvement \u2013 i.e., the reduction in bugs \u2013 was less than 50%. And in the remaining three, the improvement was substantial. Beneath these averages, we also noticed (not shown) that serious issues increased in four out of the nine trials.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">Other researchers have shown better results for prompts, though with similar variability. As an example, Aaron Gustafson reports that base models pass 8 to 25% of automated accessibility checks, and written instructions lift that only to 37 to 60%. And Michael Fairchild&#8217;s <a href=\"https:\/\/microsoft.github.io\/a11y-llm-eval-report\/index.html\">A11y LLM Eval<\/a> found the same guidance pushed some models past 90% and left others near zero.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">It\u2019s precisely this variability that makes these tools unreliable: a technique that can make things 2X worse depending on which model you happen to use, and under what conditions it builds code, is not a safeguard you can build a compliance program on.&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Even written rules get ignored<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">The strongest evidence is not a statistic. There\u2019s a well-known bug report by Portland, Oregon-based developer Esti Shay where Claude Code states frankly that it treats accessibility as optional no matter what instructions you give it:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<figure class=\"wp-block-pullquote\" style=\"font-size:18px\"><blockquote><p>&#8220;I framed a11y fixes as optional effort rather than as requirements. That&#8217;s wrong\u2026For this specific issue, it would be worth framing it as a bias in the model&#8217;s decision-making: Claude treats accessibility fixes as optional trade-offs rather than requirements, even when the project&#8217;s own rules say otherwise.&#8221;<\/p><cite>Claude Code <a href=\"https:\/\/github.com\/anthropics\/claude-code\/issues\/56079\" data-type=\"link\" data-id=\"https:\/\/github.com\/anthropics\/claude-code\/issues\/56079\">issue 56079<\/a> (May 2026, @EstiShay)<\/cite><\/blockquote><\/figure>\n<\/blockquote>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">This matters because it closes off the comforting idea that smarter models will fix this on their own. The instructions were right there. The model read them. It shipped inaccessible code anyway.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Check the work, not the worker<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">If rules are just suggestions to models, where does that leave us? Nine rebuilds later, the lesson is plain: you cannot lecture a model into competence, but you can check what it produces. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"font-size:18px\">In other words, the answer is to guide the model with explicit, ideally deterministic, tests.\u00a0 That is exactly what agent skills do, and in our next post we\u2019ll examine those.\u00a0Stay tuned.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Post 2 of 5 in our series on AI-assisted code and accessibility. In our first discussion of LLM-assisted coding and accessibility, we tested the native ability of LLMs, out of the box, to write accessible code. But many teams don\u2019t use models that way. Instead, they provide a sometimes-lengthy set of instructions to the LLM [&hellip;]<\/p>\n","protected":false},"author":15,"featured_media":1885,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[7],"tags":[],"class_list":["post-1910","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"acf":{"authors_to_show":[1650]},"_links":{"self":[{"href":"https:\/\/www.evinced.com\/blog\/wp-json\/wp\/v2\/posts\/1910","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.evinced.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.evinced.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.evinced.com\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/www.evinced.com\/blog\/wp-json\/wp\/v2\/comments?post=1910"}],"version-history":[{"count":18,"href":"https:\/\/www.evinced.com\/blog\/wp-json\/wp\/v2\/posts\/1910\/revisions"}],"predecessor-version":[{"id":1938,"href":"https:\/\/www.evinced.com\/blog\/wp-json\/wp\/v2\/posts\/1910\/revisions\/1938"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.evinced.com\/blog\/wp-json\/wp\/v2\/media\/1885"}],"wp:attachment":[{"href":"https:\/\/www.evinced.com\/blog\/wp-json\/wp\/v2\/media?parent=1910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.evinced.com\/blog\/wp-json\/wp\/v2\/categories?post=1910"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.evinced.com\/blog\/wp-json\/wp\/v2\/tags?post=1910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}