<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Pixels and Patterns]]></title><description><![CDATA[Research and reflections at the intersection of social science, digital humanities, and artificial intelligence.]]></description><link>https://www.pixelsandpatterns.org</link><image><url>https://substackcdn.com/image/fetch/$s_!YGtb!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5c1c326-7cd0-4791-ad50-7d68a67a6453_512x512.png</url><title>Pixels and Patterns</title><link>https://www.pixelsandpatterns.org</link></image><generator>Substack</generator><lastBuildDate>Tue, 10 Nov 2026 22:07:28 GMT</lastBuildDate><atom:link href="https://www.pixelsandpatterns.org/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Steven Denney]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[pixelsandpatterns@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[pixelsandpatterns@substack.com]]></itunes:email><itunes:name><![CDATA[Steven Denney]]></itunes:name></itunes:owner><itunes:author><![CDATA[Steven Denney]]></itunes:author><googleplay:owner><![CDATA[pixelsandpatterns@substack.com]]></googleplay:owner><googleplay:email><![CDATA[pixelsandpatterns@substack.com]]></googleplay:email><googleplay:author><![CDATA[Steven Denney]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Online survey panel quality in the age of AI: Some reflections from recent surveys]]></title><description><![CDATA[Lessons on AI use and online sample quality from four countries]]></description><link>https://www.pixelsandpatterns.org/p/online-survey-panel-quality-in-the</link><guid isPermaLink="false">https://www.pixelsandpatterns.org/p/online-survey-panel-quality-in-the</guid><dc:creator><![CDATA[Steven Denney]]></dc:creator><pubDate>Thu, 15 Oct 2026 10:54:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!x1ud!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac1090c-a282-42b5-b9bb-9e4afa103e9b_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x1ud!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac1090c-a282-42b5-b9bb-9e4afa103e9b_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x1ud!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac1090c-a282-42b5-b9bb-9e4afa103e9b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!x1ud!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac1090c-a282-42b5-b9bb-9e4afa103e9b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!x1ud!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac1090c-a282-42b5-b9bb-9e4afa103e9b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!x1ud!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac1090c-a282-42b5-b9bb-9e4afa103e9b_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x1ud!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac1090c-a282-42b5-b9bb-9e4afa103e9b_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cac1090c-a282-42b5-b9bb-9e4afa103e9b_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2304109,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/220325829?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac1090c-a282-42b5-b9bb-9e4afa103e9b_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x1ud!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac1090c-a282-42b5-b9bb-9e4afa103e9b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!x1ud!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac1090c-a282-42b5-b9bb-9e4afa103e9b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!x1ud!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac1090c-a282-42b5-b9bb-9e4afa103e9b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!x1ud!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac1090c-a282-42b5-b9bb-9e4afa103e9b_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Online panels have long had a quality problem. Some respondents speed through questions (<em>speeding</em>) and some give the same answer to every question (<em>straightlining</em>). Attention checks are the standard way to catch them, but what about survey takers who automate answering? In November last year, Sean Westwood published a paper in <em>PNAS</em> showing that his AI agent could answer online surveys in a consistent persona and pass 99.8 percent of 6,000 common attention checks.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> If that holds, and automated survey completion becomes (or perhaps already is) common, the main tool for catching low-quality respondents no longer works, and any study run on an online sample is compromised.</p><p>In August, I fielded survey experiments on attitudes towards immigration in four countries (Germany, South Korea, Singapore and the US), with around 2,500 completes per country from Bilendi (Germany), Rakuten Insight (South Korea and Singapore) and Prolific (US). The core of the survey was two conjoint experiments, in which respondents evaluate a series of profiles whose features are randomly varied. In the first, respondents saw one immigrant at a time and said whether they supported granting that person permanent residence. In the second, they saw an immigration policy that varied in how it was decided and implemented, the area it covered, its direction and the group it affected, and said whether they supported it. Each experiment had eleven tasks, and the last repeated the first exactly. With Westwood&#8217;s result in mind, I did not rely on attention checks alone. I added layers of checks for both AI use and low effort. This post looks at the wider problem and then at what I found, or didn&#8217;t find, in my own surveys.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><h2>What do we know about AI use in surveys?</h2><p>How large this problem is likely to be is a matter of some debate. Westwood and Frederick flagged 4.4 percent of a sample from Prolific for indicators of using AI (either pasting in text or typing too fast).<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> Rothschild et al.&#8217;s response to their paper argued that this number was too high.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a> They also point out that there are at least three distinct problems. Human respondents may use chatbots to help them answer, simple agents may answer on their own, and autonomous agents may answer from inside a managed panel. The first of these is well documented, and seems quite common. Veselovsky et al. find between a third and nearly half of MTurk workers using large language models (LLMs) to aid them in a summarization task,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> and Zhang, Xu, and Alvero find about a third of their respondents admit to using an LLM to answer open-ended questions.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> The evidence for the other two is thin, with <a href="https://morningconsult.com/articles/are-llms-taking-online-surveys-not-yet">Morning Consult</a> finding signs of OpenAI&#8217;s Operator agent in around 0.01 percent of interviews.</p><p>There is very little evidence for the last two, but it is possible to check for all three (plus low-effort respondents), so I did.</p><h2>What I checked</h2><p>I have grouped the checks by what each was meant to catch. In most cases, the automation checks were run by a short script on four of the conjoint screens (the first task in each experiment, and again for the repeat).</p><ol><li><p><strong>Low effort</strong>: Attention checks have long been used to weed out respondents who are not paying attention.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> They are not much help against AI, though, as Operator passed Morning Consult&#8217;s attention checks.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> The repeated task gives a baseline of how consistent respondents are with themselves (about 77 percent on average across studies, according to Clayton et al.),<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a> and I recorded how long each screen took.</p></li><li><p><strong>Chatbot help</strong>: Pasting is a common sign of chatbot use, and disabling copy-paste roughly halved LLM use by crowd workers in one study.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-9" href="#footnote-9" target="_self">9</a> The script counted pastes. Near the end of the survey I also asked directly, &#8220;Did you use an AI tool (such as ChatGPT, an AI browser assistant, or similar) to help you complete this survey?&#8221; This is obviously imperfect. An agent built to pass as human would presumably not admit it, while someone using a translation tool might. Still, Xu and Malkin found that most respondents who admitted to using AI had already been caught by a copy-paste check, and that agents usually admitted to being used when asked.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-10" href="#footnote-10" target="_self">10</a> People do, however, under-report their own AI use.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-11" href="#footnote-11" target="_self">11</a></p></li><li><p><strong>Scripts and agents</strong>: The script recorded whether anything filled an off-screen &#8220;honeypot&#8221; text field, which a human cannot see but a script auto-filling every input would fill. Honeypots are inexpensive to add, but Storozuk et al. found none of their bots triggered them,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-12" href="#footnote-12" target="_self">12</a> and Operator was not fooled by them either. The script also recorded whether the browser reported being under automated control (the <a href="https://w3c.github.io/webdriver/">webdriver flag</a>, which many automation tools set by default), and it counted mouse movements, clicks, key presses and touches. I could not find a study on whether consumer agents set the flag. Mouse movements say little about respondents on phones. <a href="https://www.prolific.com/resources/authenticity-checks-how-we-tested-the-most-accurate-method-for-identifying-agentic-ai">Prolific has found</a> that behavioral metrics of this kind correctly identify agents 95 percent of the time, compared to 60 percent for more classic attention checks.</p></li><li><p><strong>Platform screening</strong>: Qualtrics scored each session with Google&#8217;s reCAPTCHA and a fraud and duplicate service, and Prolific runs its own checks to keep its pool authentic.</p></li></ol><h2>The automation checks came back empty</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SYPU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf8722-ba1b-4122-b809-cec71b810b54_1456x645.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SYPU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf8722-ba1b-4122-b809-cec71b810b54_1456x645.png 424w, https://substackcdn.com/image/fetch/$s_!SYPU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf8722-ba1b-4122-b809-cec71b810b54_1456x645.png 848w, https://substackcdn.com/image/fetch/$s_!SYPU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf8722-ba1b-4122-b809-cec71b810b54_1456x645.png 1272w, https://substackcdn.com/image/fetch/$s_!SYPU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf8722-ba1b-4122-b809-cec71b810b54_1456x645.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!SYPU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf8722-ba1b-4122-b809-cec71b810b54_1456x645.png" width="1456" height="645" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7acf8722-ba1b-4122-b809-cec71b810b54_1456x645.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:645,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:115077,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/220325829?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf8722-ba1b-4122-b809-cec71b810b54_1456x645.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SYPU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf8722-ba1b-4122-b809-cec71b810b54_1456x645.png 424w, https://substackcdn.com/image/fetch/$s_!SYPU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf8722-ba1b-4122-b809-cec71b810b54_1456x645.png 848w, https://substackcdn.com/image/fetch/$s_!SYPU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf8722-ba1b-4122-b809-cec71b810b54_1456x645.png 1272w, https://substackcdn.com/image/fetch/$s_!SYPU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7acf8722-ba1b-4122-b809-cec71b810b54_1456x645.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The direct automation tests, by country. Counts of respondents among all delivered completes. reCAPTCHA is shown as a share for contrast.</figcaption></figure></div><p>Among 10,930 delivered completes, zero participants filled out the hidden field, zero participants used a browser that reported being controlled by an automated program, and zero participants got through all of my measured screens without interacting with any part of the screen. Two participants (both in the US) pasted text. Neither reported using AI. reCAPTCHA flagged 2 to 13 percent of sessions as suspect, but because the reCAPTCHA score is not very specific, and the more direct measurements are all zero, I believe this is just noise. Prolific&#8217;s quality checks were similarly unremarkable. Among the 2,462 participants in my main US study, no participant scored Low (problematic) on the LLM check or the bot check, and 19 scored Mixed on the LLM check and 12 on the bot check.</p><h2>Who admitted to using AI</h2><p>In total, 854 respondents said they had used AI to complete the survey. This corresponds to 0.4 percent in the US, 4.6 percent in Germany, 8.6 percent in South Korea, and 16.5 percent in Singapore. If these were simple scripts, at least some of them would have set off the automation checks &#8212; but none did.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u9gj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15ec1d06-98b7-4db5-af42-cb5b9da667ae_2913x1170.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u9gj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15ec1d06-98b7-4db5-af42-cb5b9da667ae_2913x1170.png 424w, https://substackcdn.com/image/fetch/$s_!u9gj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15ec1d06-98b7-4db5-af42-cb5b9da667ae_2913x1170.png 848w, https://substackcdn.com/image/fetch/$s_!u9gj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15ec1d06-98b7-4db5-af42-cb5b9da667ae_2913x1170.png 1272w, https://substackcdn.com/image/fetch/$s_!u9gj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15ec1d06-98b7-4db5-af42-cb5b9da667ae_2913x1170.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!u9gj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15ec1d06-98b7-4db5-af42-cb5b9da667ae_2913x1170.png" width="1456" height="585" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15ec1d06-98b7-4db5-af42-cb5b9da667ae_2913x1170.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:585,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:199228,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/220325829?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15ec1d06-98b7-4db5-af42-cb5b9da667ae_2913x1170.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u9gj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15ec1d06-98b7-4db5-af42-cb5b9da667ae_2913x1170.png 424w, https://substackcdn.com/image/fetch/$s_!u9gj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15ec1d06-98b7-4db5-af42-cb5b9da667ae_2913x1170.png 848w, https://substackcdn.com/image/fetch/$s_!u9gj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15ec1d06-98b7-4db5-af42-cb5b9da667ae_2913x1170.png 1272w, https://substackcdn.com/image/fetch/$s_!u9gj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15ec1d06-98b7-4db5-af42-cb5b9da667ae_2913x1170.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Respondents who said they used AI (gold) against those who said they did not (blue), all delivered completes. The US comparison is based on 11 respondents.</figcaption></figure></div><p>I did some digging to see if I could spot differences between the two groups. People who say they used AI take between a third and a half as much time to complete each conjoint screen in every country (a median of 8 to 10 seconds per screen against 21 to 29). They are also more likely to be using a touchscreen device, fail the attention check, and (in Germany and South Korea) not give the same answer to the same task a second time. </p><p>So the &#8220;typical&#8221; self-reporting person seems to be someone speeding through the survey and using a touchscreen device. If they were using a script I think it would show up in the paradata somehow, but I do not see any evidence for it. There is one small exception. The 11 US respondents who said yes barely moved the mouse (a median of 6 movements per screen against 256), though they also finished each screen in 8 seconds and none of them pasted or set off the automation flag. I do not have any data to confirm this, but it is possible that something about being on a phone makes people more likely to say &#8220;yes&#8221; (maybe some AI feature on the keyboard or browser?). Translation tools are another possibility, since the rate was highest in Singapore, where some respondents may have run the questions through a translator. I gave Singaporean respondents the option to take the survey in English or Mandarin Chinese (most opted for English), so I&#8217;m not sure about the translator explanation.</p><p>The self-report also overlaps with the checks I already had. In Germany, South Korea and Singapore, between 28 and 36 percent of those who said yes failed the attention check, against 3 to 8 percent of those who said no. Between 36 and 40 percent showed two or more of four low-effort signals (a changed answer on the repeated task, speeding, or identical answers across profiles in either experiment), against 8 to 13 percent of everyone else. So saying yes goes with low effort, but most of the people who said yes did not show two or more of these signals.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-13" href="#footnote-13" target="_self">13</a></p><h2>How each panel handled self-reported AI use</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4Oym!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8f8b8b-0c7e-4495-af12-d16684385120_1456x690.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Oym!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8f8b8b-0c7e-4495-af12-d16684385120_1456x690.png 424w, https://substackcdn.com/image/fetch/$s_!4Oym!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8f8b8b-0c7e-4495-af12-d16684385120_1456x690.png 848w, https://substackcdn.com/image/fetch/$s_!4Oym!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8f8b8b-0c7e-4495-af12-d16684385120_1456x690.png 1272w, https://substackcdn.com/image/fetch/$s_!4Oym!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8f8b8b-0c7e-4495-af12-d16684385120_1456x690.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Oym!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8f8b8b-0c7e-4495-af12-d16684385120_1456x690.png" width="1456" height="690" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cc8f8b8b-0c7e-4495-af12-d16684385120_1456x690.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:690,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:163691,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/220325829?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8f8b8b-0c7e-4495-af12-d16684385120_1456x690.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4Oym!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8f8b8b-0c7e-4495-af12-d16684385120_1456x690.png 424w, https://substackcdn.com/image/fetch/$s_!4Oym!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8f8b8b-0c7e-4495-af12-d16684385120_1456x690.png 848w, https://substackcdn.com/image/fetch/$s_!4Oym!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8f8b8b-0c7e-4495-af12-d16684385120_1456x690.png 1272w, https://substackcdn.com/image/fetch/$s_!4Oym!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcc8f8b8b-0c7e-4495-af12-d16684385120_1456x690.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">What each panel did with the AI question. Delivered completes, the replacement rule and the final sample, by country.</figcaption></figure></div><p>The self-report was still used for billing. With both Bilendi and Rakuten, I agreed to replace a self-reporter if they met at least two of four criteria. These were (i) saying something different for the repeated task, (ii) being faster than half the median time, (iii) answering the same for all profiles in the first experiment, and (iv) answering the same for all profiles in the second experiment. Self-reporters who met none or only one of the criteria were kept: 79 in Germany, 150 in South Korea and 286 in Singapore. I approved all my Prolific completes (Prolific has no pool to replace them from), and I only dropped US participants for the pre-registered reasons. The attention check accounted for more replacements than the AI rule in all three countries. Replacement means the panel did not bill me for the respondent and recruited a new one in their place. I still have the data on everyone who was replaced.</p><p>This is worth knowing for anyone running a study like this. Prolific is automated, so I never discussed any of this with anyone from the company &#8212; although they seem quite responsive and if I had major concerns, I turst I would have been able to get in touch with someone involved with quality control. The other vendors were <em>very</em> interested in all of this and willing to look into any respondent I suspected of being low quality &#8212; for whatever reasons, AI or not. Of course, sample quality is central to their business model. You can typically work with your project manager to make sure you end up with the best-quality sample possible.</p><h2>What the checks can and cannot catch</h2><p>In these four online panels in the summer of 2026, I found no measurable sign of automated responding. The problem that did show up was low effort, from respondents who sped through, straightlined, or answered the repeated task differently.</p><p>So, I think I collected generally good-quality samples. After doing the replacements, I found that when I showed the same task again, respondents answered the same as the first time 78 to 80 percent of the time in Germany, South Korea, and Singapore, and 89 percent of the time in the US. This is at or above the 77 percent average in Clayton et al. None of my automation checks flagged anyone, and I only had to replace 5 to 13 percent of completes.</p><p>The checks I used I think work well to detect crude forms of automation, but they would not catch someone running an AI assistant in their browser, as the AI could generate normal browser events for all input. If the AI agent was sophisticated enough, it would see the page just as a human does and would not fill the hidden field. Mouse movement might help here for now, as someone using a computer had a median of about 250 mouse movements per screen (in US respondents answering no to my AI question), but most non-US respondents were on touchscreens. These measures only catch the kinds of automation I thought to look for. There could be others slipping through undetected.</p><p>Insofar as lessons go, I recommend using layered checks. In particular, I recommend using behavioral checks on a repeated screen, and then if a respondent answered yes to the AI question, deciding whether to replace them based on those behavioral signals.</p><p>So is the attention check compromised? Perhaps, if someone is trying to defeat it. However, I found no sign of anyone doing that in my samples. People simply rushed through the survey, and a repeated task, a clock and the attention check were enough to catch them. Whether or not my findings from my summer surveys can be relied upon going forward is a big open question. I think probably not. Browser agents are getting cheaper and better at acting like people, and the checks that came back empty here are the first ones they will learn to pass &#8212; if they aren&#8217;t already passing them. The case for running them anyway is they are easy to implement and cost you basically nothing. You can build these into, for example, a Qualtrics <a href="https://github.com/scdenney/open-science-skills">AI design skill</a>, taking into account any new contributions that people have made. And perhaps in collaboration with your vendor, who has the strongest interest in the world (their business model) to ensure that their samples are human and that their survey takers are not automating the process. </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Sean J. Westwood, &#8220;The potential existential threat of large language models to online survey research,&#8221; <em>Proceedings of the National Academy of Sciences</em> 122, no. 47 (2025): e2518075122, <a href="https://doi.org/10.1073/pnas.2518075122">https://doi.org/10.1073/pnas.2518075122</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Sean J. Westwood and Samuel Frederick, &#8220;Reply to Van der Stigchel et al.: Empirical evidence that AI survey contamination is real and substantial,&#8221; <em>Proceedings of the National Academy of Sciences</em> 123, no. 8 (2026): e2537420123, <a href="https://doi.org/10.1073/pnas.2537420123">https://doi.org/10.1073/pnas.2537420123</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>David M. Rothschild, Soubhik Barari, Trent D. Buskirk, Andrew Gordon and D. Sunshine Hillygus, &#8220;Reply to Westwood: Questioning the empirical evidence that AI survey contamination is real and substantial,&#8221; unpublished letter, 2026, <a href="https://researchdmr.com/files/Letter_Westwood.pdf">https://researchdmr.com/files/Letter_Westwood.pdf</a>. Gordon works for Prolific.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Veniamin Veselovsky, Manoel Horta Ribeiro and Robert West, &#8220;Artificial Artificial Artificial Intelligence: Crowd Workers Widely Use Large Language Models for Text Production Tasks,&#8221; arXiv:2306.07899 (2023), <a href="https://arxiv.org/abs/2306.07899">https://arxiv.org/abs/2306.07899</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Simone Zhang, Janet Xu and AJ Alvero, &#8220;Generative AI Meets Open-Ended Survey Responses: Research Participant Use of AI and Homogenization,&#8221; <em>Sociological Methods &amp; Research</em> 54, no. 3 (2025): 1197&#8211;1242, <a href="https://doi.org/10.1177/00491241251327130">https://doi.org/10.1177/00491241251327130</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>Adam J. Berinsky, Michele F. Margolis and Michael W. Sances, &#8220;Separating the Shirkers from the Workers? Making Sure Respondents Pay Attention on Self-Administered Surveys,&#8221; <em>American Journal of Political Science</em> 58, no. 3 (2014): 739&#8211;753, <a href="https://doi.org/10.1111/ajps.12081">https://doi.org/10.1111/ajps.12081</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>James Martherus, Alexander Podkul, Edgar Cook and Robert Liebowitz, &#8220;How to Detect AI-assisted Interviews in Online Surveys,&#8221; <em>Survey Practice</em> 18, no. 1 (2025), <a href="https://doi.org/10.29115/SP-2025-0016">https://doi.org/10.29115/SP-2025-0016</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p>Katherine Clayton, Yusaku Horiuchi, Aaron R. Kaufman, Gary King and Mayya Komisarchik, &#8220;Correcting measurement error bias in conjoint survey experiments,&#8221; <em>American Journal of Political Science</em> (2026), <a href="https://doi.org/10.1111/ajps.70076">https://doi.org/10.1111/ajps.70076</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-9" href="#footnote-anchor-9" class="footnote-number" contenteditable="false" target="_self">9</a><div class="footnote-content"><p>Veniamin Veselovsky, Manoel Horta Ribeiro, Philip J. Cozzolino, Andrew Gordon, David Rothschild and Robert West, &#8220;Prevalence and Prevention of Large Language Model Use in Crowd Work,&#8221; <em>Communications of the ACM</em> 68, no. 3 (2025): 42&#8211;47, <a href="https://doi.org/10.1145/3685527">https://doi.org/10.1145/3685527</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-10" href="#footnote-anchor-10" class="footnote-number" contenteditable="false" target="_self">10</a><div class="footnote-content"><p>Zane Xu and Nathan Malkin, &#8220;A Penny for Your Prompts: Experiments Detecting and Mitigating LLM Usage by Survey Respondents,&#8221; arXiv:2607.00403 (2026), <a href="https://arxiv.org/abs/2607.00403">https://arxiv.org/abs/2607.00403</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-11" href="#footnote-anchor-11" class="footnote-number" contenteditable="false" target="_self">11</a><div class="footnote-content"><p>Yier Ling, Alex Kale and Alex Imas, &#8220;Underreporting of AI Use: The Role of Social Desirability Bias,&#8221; in <em>Proceedings of the 2026 CHI Conference on Human Factors in Computing Systems</em> (2026), 1&#8211;22, <a href="https://doi.org/10.1145/3772318.3791073">https://doi.org/10.1145/3772318.3791073</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-12" href="#footnote-anchor-12" class="footnote-number" contenteditable="false" target="_self">12</a><div class="footnote-content"><p>Andie Storozuk, Marilyn Ashley, V&#233;ronic Delage and Erin A. Maloney, &#8220;Got Bots? Practical Recommendations to Protect Online Survey Data from Bot Attacks,&#8221; <em>The Quantitative Methods for Psychology</em> 16, no. 5 (2020): 472&#8211;481, <a href="https://doi.org/10.20982/tqmp.16.5.p472">https://doi.org/10.20982/tqmp.16.5.p472</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-13" href="#footnote-anchor-13" class="footnote-number" contenteditable="false" target="_self">13</a><div class="footnote-content"><p>Each experiment also ended with a manipulation check, which asked whether respondents had noticed differences in the attribute being tested (how the immigrant entered the country, and how the policy was decided). In Germany, South Korea and Singapore, 20 to 35 percent of respondents who failed the attention check or showed two or more low-effort signals said they had not noticed at least one of these, against 9 to 18 percent of those with no flags. Respondents who said they used AI went the other way. Only 9 to 10 percent of them missed one, against 15 to 21 percent of those who said no. I do not have a good explanation for this, though the manipulation check is itself a self-report.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[JEV Is Fast. Is It Better than LLMs?]]></title><description><![CDATA[Accuracy, cost, speed and calibration across seven text-as-data replications.]]></description><link>https://www.pixelsandpatterns.org/p/jev-is-fast-is-it-better-than-llms</link><guid isPermaLink="false">https://www.pixelsandpatterns.org/p/jev-is-fast-is-it-better-than-llms</guid><dc:creator><![CDATA[Steven Denney]]></dc:creator><pubDate>Wed, 07 Oct 2026 14:07:02 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/7447959c-d503-4347-ad47-9e04ea3c3438_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In September TypeSafe released the first public model in its System One class of models.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> The model, JEV (version 1.13), takes its class name from Kahneman&#8217;s System 1, which stands for fast and intuitive thinking. Rather than generating text, the model takes a text and a list of questions with fixed answers as input and then outputs an answer to each question along with a probability for every answer option. TypeSafe claims the model is much cheaper and faster to run than LLMs, and that it produces better-calibrated probabilities through a post-training process it calls &#8220;reinforcement learning for calibrated decisions.&#8221;</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><p>If you annotate or scale political text, you are probably wondering whether JEV is really cheaper, faster and better calibrated than other options, and whether it gives up any accuracy to get there. To find out, Matt DiGiuseppe and I re-ran seven applications from the political science literature in a new working paper, now on arXiv (<a href="https://arxiv.org/abs/2610.06625">Denney and DiGiuseppe 2026</a>). For each application, we scored JEV against the same human benchmark as the original paper, along with a current low-cost commercial model (GPT-6 Luna) and an open-weight model you can run locally (Qwen3.8-27B).<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><p>Overall, JEV is fairly close to the other models in accuracy. It is generally a bit worse than Luna on the reading tasks but better than both models on the V-Dem codes. It is not cheaper than Luna at batch prices, but it was much faster for us. With each question asked only once, it also produced better-calibrated probabilities than Luna&#8217;s token probabilities. Compared with Qwen, it depends on the task.</p><h2>Seven Text as Data Replications</h2><p>We examine seven applications of annotation and scaling. In the first five, the model has access to the text itself. The last two, which we call recall tasks, give the model just a name, and it must answer solely on the basis of what it learned during training.</p><ul><li><p>tweet relevance for content moderation (Gilardi et al. 2023);</p></li><li><p>sentiment in tweets about two Supreme Court decisions (Ornstein et al. 2025);</p></li><li><p>attack types in 37,709 Global Terrorism Database incidents (Brandt et al. 2026);</p></li><li><p>pairwise scaling of open-ended survey answers on economic knowledge (DiGiuseppe and Flynn 2026);</p></li><li><p>sentence-level positions in UK party manifestos and European Parliament speeches (Le Mens and Gallego 2025);</p></li><li><p>left&#8211;right positions of European parties from their names alone (Di Leo et al. 2025);</p></li><li><p>V-Dem expert codes for 53 indicators in 171 countries, again from the country name alone (Weidmann et al. 2026).</p></li></ul><p>To be as consistent with the original studies as possible, we used their prompt wording where JEV allowed it but left out the instructions about the format of the answer. In cases where a study had used a numeric scale, we rephrased the scale in terms of JEV&#8217;s worded answer levels. In cases where a study had allowed for a &#8220;not applicable&#8221; answer, we added a separate yes/no question instead. All of these changes are described in the appendices of our paper. I go through the questions in order, starting with accuracy, then cost and speed, and finally the probabilities.</p><h2>Accuracy: close, but rarely ahead of Luna</h2><p>Figure 1 shows the level of agreement that each model achieves with the human benchmark (each study uses its own measure for this). No single model outperforms all others, with JEV underperforming Luna on tweets, manifestos and EP speeches, matching it on survey pairs and party positions, and doing slightly better at identifying the type of attack. It also outperforms both models (and the published GPT-4o codings) on V-Dem. Compared with Qwen, JEV does better on attack types and both recall tasks, worse on tweet sentiment and the 2023 tweets, and about the same elsewhere.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bZ0M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9824f0fb-f450-44fa-baf9-bae5e5d1f284_1600x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bZ0M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9824f0fb-f450-44fa-baf9-bae5e5d1f284_1600x1080.png 424w, https://substackcdn.com/image/fetch/$s_!bZ0M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9824f0fb-f450-44fa-baf9-bae5e5d1f284_1600x1080.png 848w, https://substackcdn.com/image/fetch/$s_!bZ0M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9824f0fb-f450-44fa-baf9-bae5e5d1f284_1600x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!bZ0M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9824f0fb-f450-44fa-baf9-bae5e5d1f284_1600x1080.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!bZ0M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9824f0fb-f450-44fa-baf9-bae5e5d1f284_1600x1080.png" width="1456" height="983" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9824f0fb-f450-44fa-baf9-bae5e5d1f284_1600x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:983,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:150537,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/219228111?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9824f0fb-f450-44fa-baf9-bae5e5d1f284_1600x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bZ0M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9824f0fb-f450-44fa-baf9-bae5e5d1f284_1600x1080.png 424w, https://substackcdn.com/image/fetch/$s_!bZ0M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9824f0fb-f450-44fa-baf9-bae5e5d1f284_1600x1080.png 848w, https://substackcdn.com/image/fetch/$s_!bZ0M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9824f0fb-f450-44fa-baf9-bae5e5d1f284_1600x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!bZ0M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9824f0fb-f450-44fa-baf9-bae5e5d1f284_1600x1080.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Figure 1. Agreement with each study&#8217;s human benchmark on its headline measure. Metrics differ by row (accuracy, F1 or Pearson correlation), so compare models within a row, not across rows. Source: Denney and DiGiuseppe (2026), Tables 4&#8211;14.</figcaption></figure></div><p>One caveat applies to the recall tasks. Both the V-Dem data (version 14) and the expert party placements were publicly available before all three models were trained. To the extent that they were part of the training data, this is a form of <a href="https://arxiv.org/abs/2406.04244">data contamination</a>, and some of the agreement may come from the models recalling the benchmark. This matters most for the comparison with GPT-4o&#8217;s V-Dem codes, since GPT-4o was trained before V-Dem version 14 was released.</p><h2>Cost and speed: faster, not cheaper</h2><p>At OpenAI&#8217;s Batch prices (which apply when you are willing to wait up to a day for results), Luna is between 34 and 55 percent cheaper than JEV on five of the seven tasks and within 3 percent of JEV on the other two (see Table 1). If you need your results immediately and pay the more expensive Standard prices, JEV is cheaper on six of the seven tasks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gUrZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78bf1f07-bdfe-4bf7-9c4b-5e216a23a39e_1600x760.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gUrZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78bf1f07-bdfe-4bf7-9c4b-5e216a23a39e_1600x760.png 424w, https://substackcdn.com/image/fetch/$s_!gUrZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78bf1f07-bdfe-4bf7-9c4b-5e216a23a39e_1600x760.png 848w, https://substackcdn.com/image/fetch/$s_!gUrZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78bf1f07-bdfe-4bf7-9c4b-5e216a23a39e_1600x760.png 1272w, https://substackcdn.com/image/fetch/$s_!gUrZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78bf1f07-bdfe-4bf7-9c4b-5e216a23a39e_1600x760.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!gUrZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78bf1f07-bdfe-4bf7-9c4b-5e216a23a39e_1600x760.png" width="1456" height="692" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78bf1f07-bdfe-4bf7-9c4b-5e216a23a39e_1600x760.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:692,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118432,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/219228111?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78bf1f07-bdfe-4bf7-9c4b-5e216a23a39e_1600x760.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gUrZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78bf1f07-bdfe-4bf7-9c4b-5e216a23a39e_1600x760.png 424w, https://substackcdn.com/image/fetch/$s_!gUrZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78bf1f07-bdfe-4bf7-9c4b-5e216a23a39e_1600x760.png 848w, https://substackcdn.com/image/fetch/$s_!gUrZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78bf1f07-bdfe-4bf7-9c4b-5e216a23a39e_1600x760.png 1272w, https://substackcdn.com/image/fetch/$s_!gUrZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78bf1f07-bdfe-4bf7-9c4b-5e216a23a39e_1600x760.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Table 1. Dollars per 100,000 decisions and median seconds per decision (one request at a time). Luna is priced at OpenAI&#8217;s posted Batch and Standard rates. Qwen ran through a hosted API with no batch rate. Timings come from 200 items per application, sent from the Netherlands on 29&#8211;30 September 2026. Source: Denney and DiGiuseppe (2026), Table 2, recomputed from the replication archive to show two decimals.</figcaption></figure></div><p>TypeSafe&#8217;s pricing is less helpful than it first seems. TypeSafe does not charge for output, which matters for a reasoning LLM that writes many output tokens, but in a classification task the labels are so short that input makes up most of the cost. Luna wrote around four tokens for each answer, while JEV billed 1.2 to 3.3 times as many input tokens per decision, because it counts the question and all of the answer options as input. Qwen was more expensive still through a hosted API, at 2.35 to 5.41 times the cost per decision of JEV, but a 27B model is small enough that you might be able to run it on a good computer or on your university&#8217;s supercomputer (like Leiden University&#8217;s <a href="https://www.universiteitleiden.nl/en/research/research-facilities/alice-leiden-computer-cluster">ALICE</a>).</p><p>In our runs, JEV was much faster than the other two models (0.09 to 0.27 seconds per decision, against 0.75 to 1.04 for Luna and 0.39 to 0.87 for Qwen), although for most projects you can run a batch job and come back the next day for results.</p><h2>Probabilities: easy to get, and better calibrated than Luna&#8217;s</h2><p>TypeSafe&#8217;s third claim, and in my view the most interesting, is about JEV&#8217;s probabilities. Researchers typically use such probabilities in one of two ways. Some send the answers the model is unsure about to a human coder, or search a corpus for a rare category. What matters then is that the probabilities rank the right answers above the wrong ones, which AUROC measures. Others build a continuous scale from the probabilities or read them as rates. That requires the probabilities to be calibrated, meaning that the model is right 80% of the time when it gives an answer 80% probability, which the expected calibration error (ECE) measures. Chat-tuned LLMs are known to be overconfident, and many APIs give token probabilities for only a few of the top tokens, or none at all (OpenAI gives at most the top five for Luna, and <em>none</em> when it reasons).</p><p>Take a look at Figure 2 here. In the party-comparison task, 74% of Luna&#8217;s probabilities are smaller than 0.01 or larger than 0.99. For JEV the figure is 18%, and for Qwen 16%. If you ask a model which of two parties is more right-wing and the two are close to each other on the political spectrum, a reasonable answer is a probability somewhere in the middle of the range. JEV and Qwen give that kind of answer far more often than Luna does. Since Qwen does it too, near-certainty is <em>not</em> inherent to LLMs in general. Or at least not to Qwen.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q0uB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c1db49-1692-4304-b373-337c32021aaa_1500x1120.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q0uB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c1db49-1692-4304-b373-337c32021aaa_1500x1120.png 424w, https://substackcdn.com/image/fetch/$s_!Q0uB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c1db49-1692-4304-b373-337c32021aaa_1500x1120.png 848w, https://substackcdn.com/image/fetch/$s_!Q0uB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c1db49-1692-4304-b373-337c32021aaa_1500x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!Q0uB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c1db49-1692-4304-b373-337c32021aaa_1500x1120.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q0uB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c1db49-1692-4304-b373-337c32021aaa_1500x1120.png" width="1456" height="1087" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a9c1db49-1692-4304-b373-337c32021aaa_1500x1120.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1087,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:109441,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/219228111?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c1db49-1692-4304-b373-337c32021aaa_1500x1120.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Q0uB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c1db49-1692-4304-b373-337c32021aaa_1500x1120.png 424w, https://substackcdn.com/image/fetch/$s_!Q0uB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c1db49-1692-4304-b373-337c32021aaa_1500x1120.png 848w, https://substackcdn.com/image/fetch/$s_!Q0uB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c1db49-1692-4304-b373-337c32021aaa_1500x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!Q0uB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9c1db49-1692-4304-b373-337c32021aaa_1500x1120.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Figure 2. Each model&#8217;s probability that the first party in a pair is more right-wing, across the 347,801 party comparisons in our replication of Di Leo et al. (2025); one Qwen reply was lost. JEV&#8217;s probability comes from a two-option Choice question. Luna&#8217;s and Qwen&#8217;s come from the probability of their first answer token (Luna reports the top five tokens, Qwen the top twenty). Source: Denney and DiGiuseppe (2026), Figure 1.</figcaption></figure></div><p>Extreme probabilities are a warning sign, but they are not proof of poor calibration. To check calibration, we compare the probabilities with the human labels, and Figure 3 shows the results. It covers every task where we have human labels and probabilities from all three models, which includes the tasks we replicated and four tasks we added. On all eight reading tasks where we ask each question only once and read Luna&#8217;s probability from its answer token, Luna has a higher calibration error than JEV. When we ask each pair in both orders and average, the gap narrows, and on the survey pairs it disappears. On the task where Luna writes out its probability (attack type), Luna is better calibrated than JEV.</p><p>Against Qwen, each model is better calibrated on its own kind of task, and by quite a lot. Qwen is better calibrated on all four pairwise tasks. JEV is better calibrated on three of the four labelling tasks, on attack type and on both recall tasks. On V-Dem, for example, JEV&#8217;s calibration error is 0.06, while Qwen&#8217;s is 0.15.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QKIw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7c0d436-46a8-4c30-bb53-4df04dc8b908_1600x1120.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QKIw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7c0d436-46a8-4c30-bb53-4df04dc8b908_1600x1120.png 424w, https://substackcdn.com/image/fetch/$s_!QKIw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7c0d436-46a8-4c30-bb53-4df04dc8b908_1600x1120.png 848w, https://substackcdn.com/image/fetch/$s_!QKIw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7c0d436-46a8-4c30-bb53-4df04dc8b908_1600x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!QKIw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7c0d436-46a8-4c30-bb53-4df04dc8b908_1600x1120.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!QKIw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7c0d436-46a8-4c30-bb53-4df04dc8b908_1600x1120.png" width="1456" height="1019" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f7c0d436-46a8-4c30-bb53-4df04dc8b908_1600x1120.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1019,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:156452,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/219228111?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7c0d436-46a8-4c30-bb53-4df04dc8b908_1600x1120.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QKIw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7c0d436-46a8-4c30-bb53-4df04dc8b908_1600x1120.png 424w, https://substackcdn.com/image/fetch/$s_!QKIw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7c0d436-46a8-4c30-bb53-4df04dc8b908_1600x1120.png 848w, https://substackcdn.com/image/fetch/$s_!QKIw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7c0d436-46a8-4c30-bb53-4df04dc8b908_1600x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!QKIw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7c0d436-46a8-4c30-bb53-4df04dc8b908_1600x1120.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Figure 3. Calibration error (ECE) by task, each question asked once; lower is better. Starred rows are pairwise tasks, and rows marked &#8220;added&#8221; are not among the seven replications. On attack type, Luna and Qwen write their probabilities in the reply. The paper&#8217;s Figure 2 adds 95% intervals and the results averaged over both presentation orders. Source: Denney and DiGiuseppe (2026), Figure 2.</figcaption></figure></div><p>The ranking results point the same way. Compared with JEV, Luna&#8217;s AUROC is lower on seven of the eight tasks where each question was asked once, and equal on the other. Compared with Qwen, it is lower on all eight. JEV and Qwen are not consistently different from each other.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><h2>JEV! Should you use it?</h2><p>JEV does not save you money if you can wait for batch results, and it is not more accurate than Luna on most reading tasks. On the other hand, it is very fast, and unlike Luna it gives you a clean probability for each answer, rather than making you infer it from a handful of tokens that often have probabilities close to 0 or 1. For most social science work, the probabilities are the more useful of the two. The speed difference is big, but it does not matter unless you need the answers immediately, as in market research, rather than a day later from a batch job.</p><p>Qwen is at least as accurate as JEV on most reading tasks and better calibrated on the pairwise ones. If you are able to run an open-weight model yourself, for example on a university cluster, you may not need JEV. JEV is ahead of Qwen on the recall tasks and on attack type, though, in both accuracy and calibration.</p><p>TypeSafe has not released any of JEV&#8217;s internals (its architecture, training data or reward), so there is little to judge it on beyond how it performs on tasks like these. As with any LLM, that means validating it against human coding for the task you are interested in.</p><p style="text-align: center;">***</p><p>The full paper, with all seven replications, the prompts and the appendices, is on arXiv: Denney, Steven, and Matthew DiGiuseppe. 2026. &#8220;JEV versus LLMs: Accuracy, Cost and Calibration on Seven Political Science Replications.&#8221; Preprint, arXiv, October 5. <a href="https://doi.org/10.48550/arXiv.2610.06625">https://doi.org/10.48550/arXiv.2610.06625</a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>On 6 October, after we had finished our runs, OpenAI released a similar endpoint in public beta, the <a href="https://developers.openai.com/api/docs/guides/decisions">Decisions API</a>. It runs on GPT-6 Luna, one of the models we compare JEV to, and returns probabilities for all answer options. It also only charges for input, like JEV does. We have not tested it.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Both GPT-6 Luna and Qwen3.8-27B ran with reasoning turned off. Qwen ran through OpenRouter on a single host (Parasail) at 8-bit precision, not on our own hardware.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Talk to your terminal]]></title><description><![CDATA[Dictating prompts to a CLI agent beats typing them.]]></description><link>https://www.pixelsandpatterns.org/p/talk-to-your-terminal</link><guid isPermaLink="false">https://www.pixelsandpatterns.org/p/talk-to-your-terminal</guid><dc:creator><![CDATA[Steven Denney]]></dc:creator><pubDate>Mon, 13 Jul 2026 12:07:06 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/2b2dbf0a-f9e1-479c-a1f5-a52b699f4a2f_1774x887.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8LRc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42726d8e-8453-4ba2-b979-8832bad4b46c_1774x887.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8LRc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42726d8e-8453-4ba2-b979-8832bad4b46c_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!8LRc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42726d8e-8453-4ba2-b979-8832bad4b46c_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!8LRc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42726d8e-8453-4ba2-b979-8832bad4b46c_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!8LRc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42726d8e-8453-4ba2-b979-8832bad4b46c_1774x887.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8LRc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42726d8e-8453-4ba2-b979-8832bad4b46c_1774x887.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42726d8e-8453-4ba2-b979-8832bad4b46c_1774x887.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2183605,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/206812575?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42726d8e-8453-4ba2-b979-8832bad4b46c_1774x887.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8LRc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42726d8e-8453-4ba2-b979-8832bad4b46c_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!8LRc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42726d8e-8453-4ba2-b979-8832bad4b46c_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!8LRc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42726d8e-8453-4ba2-b979-8832bad4b46c_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!8LRc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42726d8e-8453-4ba2-b979-8832bad4b46c_1774x887.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most of my work with a command-line agent is writing prompts. The agent (whether it&#8217;s Claude Code or Codex) does best when I give it as much information as possible. It&#8217;s really good at figuring out what I want from the latent constructs in the text I give it. That means my prompts can easily run to 300 words (or more), and typing 300-word prompts all day is energy-sapping. It&#8217;s drudgery. So the rational move is to make the prompt shorter, which degrades the answer and the work being done.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><p>Earlier this year I realized how good speech-to-text has become, and I set it up on my desktop (Linux) and my MacBook Pro. Almost all my prompts are <em>dictated</em> now. It works like this: I hit a hotkey, talk into my mic for as long as the thought takes, hit the hotkey again, and about a second later the cleaned-up text is sitting at my cursor. My prompts are much longer as a result, and the output is better, because a language model can work out what I want even if I ramble a bit. It needs lots and lots of info and detail for it to work properly, and speaking is the cheapest way to give it that. I still type when I need exact wording though, like slash commands, paths, flag names, model IDs, etc. Otherwise, it&#8217;s all spoken.</p><p>I find this really useful when I need to explain a lot of stuff and closely supervise the work, like iterating on my own writing, drafting emails, turning rough ideas into prose, or providing detailed feedback on student assignments, especially writing assignments. When providing feedback, the bottleneck is often how much I&#8217;m willing to type out. Feedback requires a lot of explanation: what the problem is, why it is a problem, how to revise, which of multiple revision options is better, etc.</p><p>It&#8217;s not just a matter of talking being faster than typing; it&#8217;s also that I can think more fully when I talk. I can talk through an argument, qualify a judgment, add examples, revise as I go, and then clean it all up by editing (mostly by typing, but some by talking, too). This has made my advising of students a lot better, allowing for more specific, more useful feedback. I haven&#8217;t run an A/B test, but my impression, and I tell my students this, is that the feedback is <em>much better</em> than what they&#8217;re used to getting.</p><p>Typing isn&#8217;t obsolete, though. It&#8217;s still better for anything that has to be exact, and the best approach uses both. Your words also get modified somewhat on the way to text, especially if you want clean output; more on that below. In this post I cover how much the technology has improved and then the setup I run on Linux and macOS. Both are public: <a href="https://github.com/scdenney/hyperwhspr">hyperwhspr</a> for Linux and <a href="https://github.com/scdenney/macwhspr">macwhspr</a> for the Mac. Speech-to-text has lots of uses, but what follows comes mostly from my experience working with agentic AI.</p><h2>Speech recognition is good now</h2><p>For a long time, dictation was frustrating because fixing the errors took longer than just typing would have. In 2011, researchers at Microsoft cut the word error rate on conversational telephone speech from 27.4 percent to 18.5 percent by replacing Gaussian mixture models with deep networks (<a href="https://www.isca-archive.org/interspeech_2011/seide11_interspeech.html">Seide, Li, and Yu 2011</a>). This may sound pretty bad (almost one word in five is still wrong), but at the time it was a huge breakthrough. By 2016 the error on the same benchmark was 5.8 percent, on par with the then-measured 5.9 percent for professional human transcribers (<a href="https://arxiv.org/abs/1610.05256">Xiong et al. 2016</a>). In 2017 it was 5.1 percent (<a href="https://arxiv.org/abs/1708.06073">Xiong et al. 2017</a>).</p><p>OpenAI&#8217;s Whisper model made high-quality speech recognition accessible to all. The model, trained on 680K hours of data, achieves a zero-shot error rate of 2.7 percent on the LibriSpeech benchmark. It also shows a big improvement in robustness to accented speech and background noise compared to previous models (<a href="https://arxiv.org/abs/2212.04356">Radford et al. 2022</a>). In 2023 OpenAI put it behind an API at $0.006 USD per minute (<a href="https://openai.com/index/introducing-chatgpt-and-whisper-apis/">OpenAI 2023</a>), or 36 cents per hour of speech. The 2025 generation, gpt-4o-transcribe, beats Whisper across the FLEURS benchmark, by OpenAI&#8217;s own evaluation (<a href="https://openai.com/index/introducing-our-next-generation-audio-models/">OpenAI 2025</a>). Note: these numbers are all from different test sets so are not directly comparable, but they give a sense of the improvements in quality and cost.</p><p>The main remaining issue with speech recognition, once you get the accuracy good enough, is the latency after you stop talking before you get the transcription. The 2026 releases handle this by streaming the transcription back to you as you&#8217;re talking. ElevenLabs claims it can do this in under 150ms with their Scribe v2 Realtime model (<a href="https://elevenlabs.io/blog/introducing-scribe-v2-realtime">ElevenLabs 2025</a>), and OpenAI does it with gpt-realtime-whisper, which streams over a WebSocket, for a cost of $0.017 per minute (<a href="https://platform.openai.com/docs/guides/speech-to-text">OpenAI docs</a>). I just switched my two machines over to use it this week and the improvement is great.</p><h2>The setup</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8pP7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6cd504-4113-4852-9783-aa9141c7b7ea_1456x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8pP7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6cd504-4113-4852-9783-aa9141c7b7ea_1456x600.png 424w, https://substackcdn.com/image/fetch/$s_!8pP7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6cd504-4113-4852-9783-aa9141c7b7ea_1456x600.png 848w, https://substackcdn.com/image/fetch/$s_!8pP7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6cd504-4113-4852-9783-aa9141c7b7ea_1456x600.png 1272w, https://substackcdn.com/image/fetch/$s_!8pP7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6cd504-4113-4852-9783-aa9141c7b7ea_1456x600.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!8pP7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6cd504-4113-4852-9783-aa9141c7b7ea_1456x600.png" width="1456" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d6cd504-4113-4852-9783-aa9141c7b7ea_1456x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:131785,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/206812575?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6cd504-4113-4852-9783-aa9141c7b7ea_1456x600.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8pP7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6cd504-4113-4852-9783-aa9141c7b7ea_1456x600.png 424w, https://substackcdn.com/image/fetch/$s_!8pP7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6cd504-4113-4852-9783-aa9141c7b7ea_1456x600.png 848w, https://substackcdn.com/image/fetch/$s_!8pP7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6cd504-4113-4852-9783-aa9141c7b7ea_1456x600.png 1272w, https://substackcdn.com/image/fetch/$s_!8pP7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d6cd504-4113-4852-9783-aa9141c7b7ea_1456x600.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The pipeline. Configuration at scdenney/hyperwhspr (Linux) and scdenney/macwhspr (macOS).</figcaption></figure></div><p>The pipeline is the same on both machines. I hit a hotkey to start recording. As I talk, the audio is streamed to a transcription model. Then I tap the hotkey again to commit the buffer and, after about a second, I get the final transcript. I run it through a small LLM to clean it up and then paste it at the cursor, which is usually in a terminal, but sometimes in a draft like this one.</p><h3><em>hyperwhspr</em>, for Linux</h3><p>On Linux the recorder is <a href="https://github.com/goodroot/hyprwhspr">hyprwhspr</a>, and <a href="https://github.com/scdenney/hyperwhspr">scdenney/hyperwhspr</a> is the pattern I use to reproduce my configuration under Omarchy/Hyprland. It also includes the config for the backend to make it stream, the code for the hook that calls the cleanup model with a constrained prompt, the vocab file I&#8217;m using, a systemd service file (with some Wayland fixes), and the command I use to calibrate (feeding the cleanup model&#8217;s log in to create new vocab rules). I have a README with a dated table of all the issues I know about (the latest being this week&#8217;s move to a streaming model). The items are added either by my agents or by me.</p><h3><em>macwhspr</em>, for the Mac</h3><p>There&#8217;s no hyprwhspr for macOS, so <a href="https://github.com/scdenney/macwhspr">scdenney/macwhspr</a> is the whole thing. It contains an idempotent install script and a small Python daemon that uses SoX to record audio and stream it to the transcription service, with the Globe key (press and release) to start and stop recording, and Karabiner and Hammerspoon for the hotkey and status indicator. The daemon runs in the background via launchd. If your transcript lands in the wrong window, you can recover one of your last 20 recordings with Ctrl-Cmd-V. Apart from the platform-specific bits, it uses the same transcription, cleanup, calibration, and logging pipeline as the Linux setup.</p><p>There&#8217;s one piece I initially underestimated, and that&#8217;s the cleanup stage. The transcription model inevitably produces messy output, with filler words, false starts, and little punctuation. To clean it up, I feed it into GPT-4.1 mini, very carefully prompting it to only add punctuation, paragraphs, and other formatting, and not to change the meaning of the transcription in any way. This way, if I prompt Claude by asking it a question, it will receive a properly formatted question, not an answer to my question. I also log all cleanups, and have a calibration command that goes through the log and updates a vocabulary file of spellings, names, romanizations, and other common corrections I want the cleanup stage to make. This is the main way the setup is personalized, and it gets better with usage.</p><p>Below is an example of what the setup looks like in action on my Linux machine. I press a hotkey to start, a pill appears that updates in real time as I speak, and when I press the hotkey again, the cleaned-up output is fed into the Claude Code prompt.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;6b446456-3af8-47bd-b84c-92bd27bc5f2b&quot;,&quot;duration&quot;:null}"></div><h2>Latency differences</h2><p>Previously, for both machines, the upload happened only after I had finished talking, and the time taken depended on how long I spoke for. Now that I have switched to the streaming backend, the work is done while I am still talking.</p><p>I tested this with the same audio (synthetic speech streamed at real-time pace over the same network), the only change being the backend. It&#8217;s a pretty modest difference for the short (6.5 second) clip (1.7 seconds for batch versus 0.9 for streaming), but for the longer (94 second) one, it&#8217;s an enormous improvement (5.9 seconds for batch versus 0.9 for streaming). Across the lengths I tested, streaming consistently takes about a second, regardless of length. My most recent dictation in the log is 128 seconds long (I was complaining about how LaTeX was laying out a table in a manuscript, undoubtedly an experience familiar to many of you); with batch I had to wait 5 seconds just for the transcription to appear. Now I wait about 1. Given that I do dozens of these per day, this is a big improvement. The new model is <em>much</em> better.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IB0x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64446137-3b31-4b2c-850f-3dbf371c9b35_1456x840.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IB0x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64446137-3b31-4b2c-850f-3dbf371c9b35_1456x840.png 424w, https://substackcdn.com/image/fetch/$s_!IB0x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64446137-3b31-4b2c-850f-3dbf371c9b35_1456x840.png 848w, https://substackcdn.com/image/fetch/$s_!IB0x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64446137-3b31-4b2c-850f-3dbf371c9b35_1456x840.png 1272w, https://substackcdn.com/image/fetch/$s_!IB0x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64446137-3b31-4b2c-850f-3dbf371c9b35_1456x840.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!IB0x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64446137-3b31-4b2c-850f-3dbf371c9b35_1456x840.png" width="1456" height="840" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64446137-3b31-4b2c-850f-3dbf371c9b35_1456x840.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:840,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:96109,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/206812575?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64446137-3b31-4b2c-850f-3dbf371c9b35_1456x840.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IB0x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64446137-3b31-4b2c-850f-3dbf371c9b35_1456x840.png 424w, https://substackcdn.com/image/fetch/$s_!IB0x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64446137-3b31-4b2c-850f-3dbf371c9b35_1456x840.png 848w, https://substackcdn.com/image/fetch/$s_!IB0x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64446137-3b31-4b2c-850f-3dbf371c9b35_1456x840.png 1272w, https://substackcdn.com/image/fetch/$s_!IB0x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64446137-3b31-4b2c-850f-3dbf371c9b35_1456x840.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Measured 2026-07-13, one run per cell. The batch wait grows with audio length. The streaming wait stays at about a second.</figcaption></figure></div><p>Each cell in the above chart corresponds to a single run. Similar results are visible in the production logs. The downside is that streaming is more expensive (0.017 USD/min vs. 0.006 USD/min). For a two-minute dictation, this translates into ~0.03 USD. Other minor downsides: (1) the realtime model does not accept a vocabulary prompt, so domain-specific terms have to be dealt with in the cleanup stage, and (2) websocket communication introduces additional failure modes. To mitigate (1) and (2), both repos allow you to switch back to the batch model with a one-line config change. Finally, if you do not want your audio data to leave your machine, hyprwhspr offers a locally-hosted ONNX backend that requires ~5.7 GB of VRAM to run, and you have to maintain the model yourself. I found it usable, but IMO the quality isn&#8217;t good enough to justify the hassle.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><h2>What a month of this costs</h2><p>People often ask how much this costs to run, so before writing this post I went back and grabbed my logs from the last 30 days (June 13th to July 13th) on both of my machines. It turns out I&#8217;ve invoked dictation 662 times for a total of 7.7 hours of dictation, generating 54,796 words. The cost to transcribe those words was $2.77 USD; the cost to run the cleanup model was another $0.27, for a total of $3.04, or about 5.5 cents per thousand words. Keep in mind that this is using the old, batch-oriented backend. If I had been using the streaming backend (which is what I&#8217;m using now), it would have cost about $8.11 for the month. The difference is totally negligible for me, and really the only thing that matters is the latency.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qyQ6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1c2c8ef-bcd5-419d-a4d5-5a582ac2ce77_1456x880.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qyQ6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1c2c8ef-bcd5-419d-a4d5-5a582ac2ce77_1456x880.png 424w, https://substackcdn.com/image/fetch/$s_!qyQ6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1c2c8ef-bcd5-419d-a4d5-5a582ac2ce77_1456x880.png 848w, https://substackcdn.com/image/fetch/$s_!qyQ6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1c2c8ef-bcd5-419d-a4d5-5a582ac2ce77_1456x880.png 1272w, https://substackcdn.com/image/fetch/$s_!qyQ6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1c2c8ef-bcd5-419d-a4d5-5a582ac2ce77_1456x880.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!qyQ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1c2c8ef-bcd5-419d-a4d5-5a582ac2ce77_1456x880.png" width="1456" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1c2c8ef-bcd5-419d-a4d5-5a582ac2ce77_1456x880.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:111159,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/206812575?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1c2c8ef-bcd5-419d-a4d5-5a582ac2ce77_1456x880.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qyQ6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1c2c8ef-bcd5-419d-a4d5-5a582ac2ce77_1456x880.png 424w, https://substackcdn.com/image/fetch/$s_!qyQ6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1c2c8ef-bcd5-419d-a4d5-5a582ac2ce77_1456x880.png 848w, https://substackcdn.com/image/fetch/$s_!qyQ6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1c2c8ef-bcd5-419d-a4d5-5a582ac2ce77_1456x880.png 1272w, https://substackcdn.com/image/fetch/$s_!qyQ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1c2c8ef-bcd5-419d-a4d5-5a582ac2ce77_1456x880.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Thirty days of dictation, stacked by machine. Mac minutes are measured per recording, and Linux minutes are estimated from each day&#8217;s words at the calibrated pace. All of it ran on the batch backend.</figcaption></figure></div><h2>Make the switch</h2><p>I should mention that typing is still useful and will continue to be used when exactness is important, such as commands, file paths, quoting text, citations and other identifiers. Also, I still do my writing by typing. I&#8217;m not going to dictate a scientific manuscript, at least not anytime soon.</p><p>But typing shouldn&#8217;t be the only way you work with an AI agent. Only typing creates a trade-off where you either under-contextualize the agent or spend more time and energy contextualizing it. A combination of the two works best. Explain the problem to the agent out loud (the transcription and cleanup give you a first draft, which you can always edit), then type out the specific commands, paths, etc.</p><p>Voice input has reached a level of accuracy, cheapness, and immediacy where it&#8217;s no longer a gimmick or just an accessibility tool. If you&#8217;re doing serious work with agents and still typing out all your prompts, you&#8217;re bottlenecking yourself. If you&#8217;re not already using speech recognition to give detailed instructions to the agents in your computational (or non-computational) pipelines, you should be.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Who are the Americans?]]></title><description><![CDATA[On the 250th birthday of the United States, I reflect on thirty years of survey data to show a national identity in flux and make a bullish case for liberal nationalism.]]></description><link>https://www.pixelsandpatterns.org/p/who-are-the-americans</link><guid isPermaLink="false">https://www.pixelsandpatterns.org/p/who-are-the-americans</guid><dc:creator><![CDATA[Steven Denney]]></dc:creator><pubDate>Sat, 04 Jul 2026 15:20:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gj0L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f57e-f740-46c1-8a86-a43d7339bbe6_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gj0L!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f57e-f740-46c1-8a86-a43d7339bbe6_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gj0L!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f57e-f740-46c1-8a86-a43d7339bbe6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!gj0L!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f57e-f740-46c1-8a86-a43d7339bbe6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!gj0L!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f57e-f740-46c1-8a86-a43d7339bbe6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!gj0L!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f57e-f740-46c1-8a86-a43d7339bbe6_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gj0L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f57e-f740-46c1-8a86-a43d7339bbe6_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b63f57e-f740-46c1-8a86-a43d7339bbe6_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2354793,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/204947762?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f57e-f740-46c1-8a86-a43d7339bbe6_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gj0L!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f57e-f740-46c1-8a86-a43d7339bbe6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!gj0L!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f57e-f740-46c1-8a86-a43d7339bbe6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!gj0L!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f57e-f740-46c1-8a86-a43d7339bbe6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!gj0L!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f57e-f740-46c1-8a86-a43d7339bbe6_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Note: Data and replication code for the analysis provided here are <a href="https://github.com/scdenney/four-americas-replication">available on GitHub</a>.</em></p><p>The United States turns 250 this year, and the old argument over what it means to be American remains as intense as ever. What better moment than now to engage in that age-old debate of what it means to be an American? Flatten by media coverage, the debate usually gets <a href="https://www.nytimes.com/2026/06/09/opinion/america-250-national-identity.html">cast as two options</a>. Either the country is a creed, a set of ideas anyone can sign up to, or it is a <a href="https://www.nytimes.com/2025/12/17/opinion/republican-identity-divide.html">heritage</a>, as a matter of belonging that you inherit by birth and/or blood.</p><p>That two-sided framing is not merely an artifact of punditry. It dates back at least to the historian Hans Kohn, who, in 1944, distinguished between civic and ethnic nationalism. Civic nationalism defines the nation in political terms, as a community of citizens bound by shared institutions and ideals. Ethnic nationalism defines it in cultural and genealogical terms, as a people united by common ancestry, language, or heritage. At its core, Kohn's distinction concerned how people answered a fundamental question: <a href="https://www.cambridge.org/core/books/immigration-and-the-american-ethos/2F57F30CC2EC3110230C719EB023C111">who belongs to the &#8220;circle of we"</a>? To a large degree, this civic-ethnic distinction has organized the study of nationalism ever since. Scholars have, of course, challenged how clean the divide really is. As Anthony Smith argued, even civic nations draw on ethnic myths and symbols.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> </p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><p>As public opinion surveys became a cheaper and more reliable way to measure public opinion, political scientists and sociologists began <a href="https://onlinelibrary.wiley.com/doi/full/10.1111/nana.12947">asking people directly</a> who belongs to the nation and how they relate to it, rather than inferring those views from elite rhetoric. Deborah Schildkraut&#8217;s <em><a href="https://www.cambridge.org/core/books/americanism-in-the-twentyfirst-century/F448C226AD2607AB6E30DC295F437503">Americanism in the Twenty-First Century</a></em> and Elizabeth Theiss-Morse&#8217;s <em><a href="https://www.cambridge.org/core/books/who-counts-as-an-american/ABD0630256EFAA098D18BFFFB6AEBD0C">Who Counts as an American?</a></em> both show that Americans&#8217; views are more varied than a simple creed-or-heritage divide suggests.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><p>When Americans are asked directly, they do not divide neatly into two camps. Using a method that identifies recurring patterns across attitudes toward national belonging and national pride, <a href="https://wp.nyu.edu/bonikowski/wp-content/uploads/sites/18814/2020/08/bonikowski_and_dimaggio_-_varieties_of_american_popular_nationalism.pdf">Bart Bonikowski and Paul DiMaggio</a> distinguish four dispositions. Their typology, however, was developed from a 2004 survey and only later compared with data from 1996 and 2012. The question is whether those same four types still structure American national identity today.</p><p>I replicated their approach using the <a href="https://www.gesis.org/en/issp/data-and-documentation/national-identity">International Social Survey Programme&#8217;s (ISSP) National Identity module</a>, which asked the same battery of questions in 1995, 2003, 2013, and 2023. I find, again, the same four identiy types. Americans do not sort into two competing visions of the nation, but four. What has changed over the past three decades is the relative size of those groups. One has remained remarkably stable, while the others have risen and fallen.</p><h2>Two questions, four Americas</h2><p>The types follow from two basic categories of questions. First, <em>who counts as truly American</em>? Is it about being born here and being Christian, or about citizenship and respecting the country's institutions? Second, <em>how warm you feel</em> about America. How proud are you of the country? Crossing these two dimensions gives you four identity types.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OAU3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63261e7d-1db2-41f4-a31f-8a9702b69133_2280x1860.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OAU3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63261e7d-1db2-41f4-a31f-8a9702b69133_2280x1860.png 424w, https://substackcdn.com/image/fetch/$s_!OAU3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63261e7d-1db2-41f4-a31f-8a9702b69133_2280x1860.png 848w, https://substackcdn.com/image/fetch/$s_!OAU3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63261e7d-1db2-41f4-a31f-8a9702b69133_2280x1860.png 1272w, https://substackcdn.com/image/fetch/$s_!OAU3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63261e7d-1db2-41f4-a31f-8a9702b69133_2280x1860.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!OAU3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63261e7d-1db2-41f4-a31f-8a9702b69133_2280x1860.png" width="1456" height="1188" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63261e7d-1db2-41f4-a31f-8a9702b69133_2280x1860.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1188,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:109885,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/204947762?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63261e7d-1db2-41f4-a31f-8a9702b69133_2280x1860.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OAU3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63261e7d-1db2-41f4-a31f-8a9702b69133_2280x1860.png 424w, https://substackcdn.com/image/fetch/$s_!OAU3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63261e7d-1db2-41f4-a31f-8a9702b69133_2280x1860.png 848w, https://substackcdn.com/image/fetch/$s_!OAU3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63261e7d-1db2-41f4-a31f-8a9702b69133_2280x1860.png 1272w, https://substackcdn.com/image/fetch/$s_!OAU3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63261e7d-1db2-41f4-a31f-8a9702b69133_2280x1860.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>A stylized graph of the four identity types and the questions that define them. </em></figcaption></figure></div><p>The horizontal axis captures who counts as truly American, from inclusive (citizenship and shared institutions) to exclusive (birth and religion). The vertical axis captures national pride. The types and their attitudes are then as follows:</p><ul><li><p><strong>Ardent:</strong> &#8220;hot&#8221; nationalists, scoring high on everything. They want high boundaries for belonging and are proud across the board.</p></li><li><p><strong>Restrictive:</strong> people who also draw distinctive boundaries of belonging and are sure the country is superior to others, but their pride in its actual achievements runs cooler than ardent nationalists.</p></li><li><p><strong>Creedal:</strong> those who are proud and inclusive. They anchor belonging in citizenship and institutions rather than birth or ethnicity/religion, and they are less likely than ardent or restrictive nationalists to say the country is better than others.</p></li><li><p><strong>Disengaged</strong>: those &#8220;cool&#8221; on all of it, rejecting or downplaying any sort of national identification.</p></li></ul><p>You can see each type's profile in the survey responses. The clearest divide is not national pride, which most engaged Americans share, but the boundaries of belonging. The ardent and restrictive types are much more likely to say that being Christian is part of being truly American and that the United States is superior to other countries. Creedal Americans reject both of these items as conditions for national membership. They are low on the ascriptive criteria (born here, be Christian) and on superiority, but high on the civic criteria (citizenship, respecting institutions) and moderately proud, the signature of an inclusive-but-attached patriotism. The data presented so far already complicates the creedal-versus-heritage framing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YpgI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4790bc91-eeed-44ba-b667-95b2929587ed_3360x1680.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YpgI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4790bc91-eeed-44ba-b667-95b2929587ed_3360x1680.png 424w, https://substackcdn.com/image/fetch/$s_!YpgI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4790bc91-eeed-44ba-b667-95b2929587ed_3360x1680.png 848w, https://substackcdn.com/image/fetch/$s_!YpgI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4790bc91-eeed-44ba-b667-95b2929587ed_3360x1680.png 1272w, https://substackcdn.com/image/fetch/$s_!YpgI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4790bc91-eeed-44ba-b667-95b2929587ed_3360x1680.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!YpgI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4790bc91-eeed-44ba-b667-95b2929587ed_3360x1680.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4790bc91-eeed-44ba-b667-95b2929587ed_3360x1680.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:132956,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/204947762?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4790bc91-eeed-44ba-b667-95b2929587ed_3360x1680.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YpgI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4790bc91-eeed-44ba-b667-95b2929587ed_3360x1680.png 424w, https://substackcdn.com/image/fetch/$s_!YpgI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4790bc91-eeed-44ba-b667-95b2929587ed_3360x1680.png 848w, https://substackcdn.com/image/fetch/$s_!YpgI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4790bc91-eeed-44ba-b667-95b2929587ed_3360x1680.png 1272w, https://substackcdn.com/image/fetch/$s_!YpgI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4790bc91-eeed-44ba-b667-95b2929587ed_3360x1680.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>What each identity type endorses from the pooled data (1995-2023). Each bar is the share of that type who say a criterion is important (very or somewhat) to being truly American, or that they are proud (very or somewhat) of it, colored by domain types. </em></figcaption></figure></div><h2>How the types are measured</h2><p>Since this Substack is meant to be somewhat technical, a word on how the types are constructed. The data come from the ISSP National Identity module, which fielded comparable nationally representative U.S. surveys in 1995, 2003, 2013, and 2023. I use the sixteen items included in all four waves.</p><p>As the figure above shows, the questions fall into three broad domains: who counts as truly American, how proud respondents are of different aspects of the country, and whether they express a sense of national superiority or unconditional loyalty. The first domain distinguishes civic criteria, such as citizenship and respect for institutions, from ascriptive ones, such as birthplace and Christianity. The first eleven items use four-point response scales; the remaining five use five-point agree-disagree scales.</p><p>The identity types are derived from <a href="https://journals.sagepub.com/doi/10.1177/0095798420930932?__cf_chl_f_tk=fg.3QIdpUlLf2K8udyfTNxXqEPbx6tZLFhilvbP4Jww-1783156218-1.0.1.1-867h.T_3nsyLteNfGqGAzUdh4tCRGP6qyfFfMFlYH1k">latent class analysis.</a> The method treats the population as a mixture of unobserved groups, each defined by a distinct pattern of responses. It estimates both the size of each group and the probability that each respondent belongs to it. Unlike <a href="https://www.qualtrics.com/articles/strategy-research/factor-analysis/">factor analysis</a>, a commonly <a href="https://journals.sagepub.com/doi/10.1177/000312240907400404">used alternative in the study of national identity</a>, which places respondents on one or more continuous dimensions, latent class analysis identifies qualitatively distinct types of people whose responses <em>cluster</em> together. That makes it well suited to studying national identity when the question is not how much nationalism people express, but how they combine different ideas about belonging and national pride. Bonikowski and DiMaggio adopted this approach, which is why "creedal" here refers to a type of respondent rather than a high score on, say, a creedal scale. </p><p>I estimate latent class models with one to six classes and selected the four-class solution based on model fit and interpretability. The classes are well separated, and the same four-type structure appears in all four survey waves.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p><h2>What changed</h2><p>The next question is how these four conceptions of the nation have changed over time. Below is the proportions belonging to one of the four over the last thirty years. What do we see?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qoa4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d4c94e-16a7-4f23-9b52-8f98868bafeb_2280x1380.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qoa4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d4c94e-16a7-4f23-9b52-8f98868bafeb_2280x1380.png 424w, https://substackcdn.com/image/fetch/$s_!Qoa4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d4c94e-16a7-4f23-9b52-8f98868bafeb_2280x1380.png 848w, https://substackcdn.com/image/fetch/$s_!Qoa4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d4c94e-16a7-4f23-9b52-8f98868bafeb_2280x1380.png 1272w, https://substackcdn.com/image/fetch/$s_!Qoa4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d4c94e-16a7-4f23-9b52-8f98868bafeb_2280x1380.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qoa4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d4c94e-16a7-4f23-9b52-8f98868bafeb_2280x1380.png" width="1456" height="881" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8d4c94e-16a7-4f23-9b52-8f98868bafeb_2280x1380.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:881,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:161232,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/204947762?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d4c94e-16a7-4f23-9b52-8f98868bafeb_2280x1380.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Qoa4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d4c94e-16a7-4f23-9b52-8f98868bafeb_2280x1380.png 424w, https://substackcdn.com/image/fetch/$s_!Qoa4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d4c94e-16a7-4f23-9b52-8f98868bafeb_2280x1380.png 848w, https://substackcdn.com/image/fetch/$s_!Qoa4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d4c94e-16a7-4f23-9b52-8f98868bafeb_2280x1380.png 1272w, https://substackcdn.com/image/fetch/$s_!Qoa4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8d4c94e-16a7-4f23-9b52-8f98868bafeb_2280x1380.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>The share of Americans in each type, 1995 to 2023. </em></figcaption></figure></div><p>Two things stand out. First, the two hot types have receded. The September 11 terrorist attacks produced a sharp but temporary surge in more exclusionary forms of nationalism. The ardent type reached its peak in 2003 before steadily declining, while the restrictive type has fallen below its pre-9/11 level. Second, the creedal type experienced the inverse of that surge. Its share fell sharply in 2003 but returned to its long-run level of roughly one-third of Americans by 2013, where it has remained since. Across three of the four survey waves, the inclusive conception of the nation is the modal form of American nationalism.</p><p>Perhaps most striking is <em>the growth of the disengaged</em>. In 1995, they accounted for about one in eight Americans. By 2023, they had become the largest of the four groups, comprising more than one-third of the population. Because these are repeated cross-sectional surveys rather than panel data, we cannot conclude that individuals moved from the ardent or restrictive types into disengagement. But the aggregate pattern is consistent with exactly that possibility.</p><p>This finding should hold our attention. In 2023, <em>the most common way of relating to the nation is detachment</em>. It is hard not to make this connection to a broader <a href="https://www.journalofdemocracy.org/articles/bowling-alone-americas-declining-social-capital/">retreat from shared life and experiences</a>. <a href="https://www.pewresearch.org/2025/05/08/americans-trust-in-one-another/">Interpersonal trust</a> has fallen, while community and religious membership has <a href="https://news.gallup.com/poll/341963/church-membership-falls-below-majority-first-time.aspx">thinned out</a>. <a href="https://www.hhs.gov/sites/default/files/surgeon-general-social-connection-advisory.pdf">Isolation</a> has risen to the point that the Surgeon General has called it an epidemic. The problem is less that Americans hate one another's idea of the country than that a growing number are opting out of having one at all.</p><p>Politically, the next obvious question is whether this shift has unfolded similarly between left/right partisans. Looking separately at Democrats and Republicans show both encouraging similarities and notable differences.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x8Mu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F787e1108-1771-4625-b954-c72ac471dbaa_2940x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x8Mu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F787e1108-1771-4625-b954-c72ac471dbaa_2940x1440.png 424w, https://substackcdn.com/image/fetch/$s_!x8Mu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F787e1108-1771-4625-b954-c72ac471dbaa_2940x1440.png 848w, https://substackcdn.com/image/fetch/$s_!x8Mu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F787e1108-1771-4625-b954-c72ac471dbaa_2940x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!x8Mu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F787e1108-1771-4625-b954-c72ac471dbaa_2940x1440.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!x8Mu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F787e1108-1771-4625-b954-c72ac471dbaa_2940x1440.png" width="1456" height="713" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/787e1108-1771-4625-b954-c72ac471dbaa_2940x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:713,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:197646,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/204947762?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F787e1108-1771-4625-b954-c72ac471dbaa_2940x1440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x8Mu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F787e1108-1771-4625-b954-c72ac471dbaa_2940x1440.png 424w, https://substackcdn.com/image/fetch/$s_!x8Mu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F787e1108-1771-4625-b954-c72ac471dbaa_2940x1440.png 848w, https://substackcdn.com/image/fetch/$s_!x8Mu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F787e1108-1771-4625-b954-c72ac471dbaa_2940x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!x8Mu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F787e1108-1771-4625-b954-c72ac471dbaa_2940x1440.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>The four types over time within each party. Democrats (L), Republicans (R).</em></figcaption></figure></div><p>The most striking finding is <em>the stability of the creedal type across the partisan divide</em>. Throughout the past three decades, roughly one-third of both Democrats and Republicans have held an inclusive but proud conception of the nation.</p><p>Where the parties differ is in the trajectory of the other three types. Among Democrats, the hot and boundary-drawing types declined, with most of that shift moving toward disengagement, which now accounts for <em>more than four in ten</em> Democrats.</p><p>Among Republicans, the restrictive type remained relatively stable, although it now appears to be declining as well. Instead, the defining change over the past three decades was the sharp post-9/11 surge in ardent nationalism, followed by its steady decline. Disengaged Republicans also became more common, although they remain much less prevalent than among Democrats.</p><h2>The case for liberal nationalism</h2><p>The creedal conception of the nation has proven more durable than the others. For those who see liberal nationalism as the most desirable basis for democratic politics, that is encouraging news. Creedal Americans define national belonging in terms of citizenship and shared institutions rather than ancestry, while expressing pride in their country without believing it is superior to others. This is what political theorists call <a href="https://press.princeton.edu/books/paperback/9780691001746/liberal-nationalism">liberal nationalism</a>. It is, among self-identifying nationalists, a normatively desirable form of thinking about community in the nation-state era.</p><p>The central claim of liberal nationalism is straightforward. A shared civic identity can sustain liberal institutions by encouraging strangers to see one another as members of the same political community. Rather than defining the nation by ethnicity or religion, it defines membership through citizenship and shared democratic institutions.</p><p>The distinction is not merely theoretical. It also lies at the heart of one of the country&#8217;s most consequential constitutional debates: birthright citizenship. Creedal Americans place relatively little weight on being born in the United States as a condition of being &#8220;truly American,&#8221; but they overwhelmingly regard citizenship as essential. The logic of the creedal conception therefore points toward <em>jus soli</em> &#8212; citizenship, rather than ancestry, is the basis of national belonging. The Supreme Court&#8217;s recent decision In <em><a href="https://www.supremecourt.gov/opinions/25pdf/25-365_4hdj.pdf">Trump v. Barbara</a></em><a href="https://www.supremecourt.gov/opinions/25pdf/25-365_4hdj.pdf"> (2026</a>), reaffirming birthright citizenship under the Fourteenth Amendment, reflects this civic understanding of national membership.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a>  </p><p>In recent years, a growing number of scholars have argued that liberals <a href="https://www.journalofdemocracy.org/articles/the-power-of-liberal-nationalism/">should reclaim</a> this inclusive form of nationalism rather than cede the idea of the nation to more exclusionary visions. Writers making that case for America, from <a href="https://www.noahpinion.blog/p/america-needs-liberal-nationalism">Noah Smith</a> to <a href="https://www.popularbydesign.org/p/why-us-nationalism-is-essential-after">Alexander Kustov</a> and others, argue that the strongest foundation for national identity is one rooted in citizenship rather than ancestry, open to newcomers, and confident enough in its ideals to welcome them as fellow citizens. Attempts to bypass national identity altogether, whether through cosmopolitanism or other forms of supra- or non-national identification, they argue, simply leave the language of nationhood to the demagogues.</p><p>My findings suggest that this civic conception of the nation is more than a normative ideal. While ardent, restrictive, and disengaged forms of national identity have expanded and contracted over the past three decades, the creedal type has remained remarkably stable, accounting for roughly one-third of Americans in every survey. Nor is that durability merely an American curiosity. In my comparative study of twenty-nine countries, the United States emerges as the clearest example of civic nationalism: the country where commitment to democratic rights most strongly constrains hostility toward outsiders.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><h2>The road ahead</h2><p>So the mood on America's 250th should be one of cautious optimism. The meaning of the American nation remains unsettled. The &#8220;<a href="https://x.com/McConaughey/status/2073013891937034425">bets still on the table</a>&#8221;. The civic conception of the country has endured, exclusionary nationalism has not become dominant, but a growing share of Americans remains disengaged rather than committed to either vision. </p><p>There is, to be sure, a real loss of attachment. But that also leaves space <a href="https://hiddentribes.us/">for persuasion</a>. As <a href="https://www.youtube.com/watch?v=5k4oajXMsVQ&amp;themeRefresh=1">Ross Douthat argues</a>, America&#8217;s enduring strength is its capacity to continually renew itself. This is a contested nation, but <a href="https://www.pewresearch.org/short-reads/2026/03/25/how-americans-value-racial-diversity-ahead-of-the-countrys-250th-anniversary/">diversity is somethig most Americans think makes the country stronger</a>, anyway.</p><p>The central challenge, then, is not simply to contain exclusionary nationalism, which is always going to exist in some form or another. It is to build a more compelling alternative. The evidence suggests that the most durable conception of the American nation is also the most <em>small-l</em> liberal. It is the one that grounds belonging in citizenship, shared institutions, and common political commitments rather than ascriptive characteristics. For advocates of liberal nationalism, the task is therefore not only to oppose exclusion, but to persuade the growing number of disengaged Americans, especially on the left, that the American experiment is still a project worth identifying with and investing in.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Hans Kohn, <em>The Idea of Nationalism: A Study in Its Origins and Background</em> (1944), is the source of the civic-versus-ethnic distinction. Anthony Smith spent much of his career complicating it, arguing that civic nations carry their own ethnic and symbolic content. Rogers Brubaker&#8217;s <em>Citizenship and Nationhood in France and Germany</em> (1992) shows the distinction operating as law, not just rhetoric. Even Samuel Huntington, in <em>Who Are We?</em> (2004), pushed against a purely creedal reading of American identity, though from the other direction. He argued the creed itself grew out of, and depends on, an Anglo-Protestant culture rather than standing free of one. Rogers Smith&#8217;s <em>Civic Ideals</em> (1997) is the fullest brief for a third view, that American political culture has always uncomfortably and contentiously bound liberal, republican, and ascriptive traditions together rather than resting on the creed alone.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Both books draw on original national surveys, not just theory. Jack Citrin&#8217;s decades of work on American identity, much of it with co-authors including Donald Green and David Sears, can be read as the earlier generation of this empirical tradition.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>The four-type structure is imposed as a modeling constraint. I estimate a multi-group latent class model that holds the class-specific response profiles constant across waves while allowing only class proportions to vary. I compared this specification with an alternative that allowed the class-specific response profiles to vary across waves. The constrained model was preferred because it had a lower Bayesian Information Criterion (BIC), a standard measure that balances model fit against unnecessary complexity. So, the class definitions are estimated jointly from all four waves. Holding the measurement model fixed ensures that changes in class proportions reflect <em>changes in the prevalence of the same latent types over time</em>. Estimating the model separately for each wave would redefine the classes in each year, making longitudinal comparisons of the identity groups confusing.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Citizenship is one of the few criteria endorsed across all four types: 93 percent of creedal respondents and essentially all restrictive respondents say it is important to being truly American. Birthplace is far more divisive. Between 78 and 91 percent of ardent and restrictive respondents say one must be born in the United States, compared with 45 percent of the creedal type. <a href="https://www.pewresearch.org/short-reads/2021/05/25/in-both-parties-fewer-now-say-being-christian-or-being-born-in-u-s-is-important-to-being-truly-american/">Pew likewise finds</a> declining support for birthplace as a criterion of American identity, especially among Democrats. Notably, roughly <a href="https://apnorc.org/projects/only-a-quarter-believe-that-the-u-s-is-a-great-place-for-immigrants/">two-thirds of Americans support birthright citizenship</a>, although support drops when surveys ask specifically about children born to parents who are in the country unlawfully.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>I show across 29 countries that democratic commitment restrains the exclusionary face of nationalism mainly where nationhood is imagined in civic rather than ethnic terms. The US is the civic nation exemplar, with the strongest such restraint of any country in the sample. See: Steven Denney, Democracy and Nationalism, Reconsidered (June 09, 2026). Available at SSRN: <a href="https://ssrn.com/abstract=6904542">https://ssrn.com/abstract=6904542</a>.</p></div></div>]]></content:encoded></item><item><title><![CDATA[From hallucination to verification]]></title><description><![CDATA[AI has made fabricated citations commonplace. Used correctly, AI can make them rare. I show you how, using "skills".]]></description><link>https://www.pixelsandpatterns.org/p/from-hallucination-to-verification</link><guid isPermaLink="false">https://www.pixelsandpatterns.org/p/from-hallucination-to-verification</guid><dc:creator><![CDATA[Steven Denney]]></dc:creator><pubDate>Tue, 30 Jun 2026 07:23:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rk-W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f06942-85a9-44c9-8dae-5fe2981c633e_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rk-W!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f06942-85a9-44c9-8dae-5fe2981c633e_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rk-W!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f06942-85a9-44c9-8dae-5fe2981c633e_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!rk-W!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f06942-85a9-44c9-8dae-5fe2981c633e_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!rk-W!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f06942-85a9-44c9-8dae-5fe2981c633e_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!rk-W!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f06942-85a9-44c9-8dae-5fe2981c633e_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rk-W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f06942-85a9-44c9-8dae-5fe2981c633e_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6f06942-85a9-44c9-8dae-5fe2981c633e_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2239327,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.pixelsandpatterns.org/i/204137437?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f06942-85a9-44c9-8dae-5fe2981c633e_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rk-W!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f06942-85a9-44c9-8dae-5fe2981c633e_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!rk-W!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f06942-85a9-44c9-8dae-5fe2981c633e_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!rk-W!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f06942-85a9-44c9-8dae-5fe2981c633e_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!rk-W!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6f06942-85a9-44c9-8dae-5fe2981c633e_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Earlier this month, <a href="https://x.com/ChrisCarothers/status/2065792749282943030">a thread on X</a> that went quite viral pointed out that a prominent political scientist had a half-dozen fabricated citations in a recent article on South Korean politics.<sup><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></sup></p><p>The reaction was about what you would expect: disappointment, mostly, and in some quarters shock. No instructor would accept this from a student, and when it appears in a published article it has to be addressed, through a correction or a retraction. Given the number of bad references, I imagine most people following the case expect the latter.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><p>Still, the speed and the intensity of the response are worth pausing over. A case like this should have been handled with more care.</p><p>First of all, we do not know how the citations got there. It is unlikely, but it is possible that the fault lies with the journal rather than the author. Many of us have concluded that this outlet does not meet the standards it advertises, and at the time it was turning articles around very quickly to get thoughts out on the fast-moving events in Korea. It would not be out of the question that an editor ran the article through an AI program to tidy or reformat the references, and that the program made them up. I do not know whether this is what happened, and it seems like this information should have come out by now. But neither does anyone else.</p><p>It is fair to call out errors of this kind. But it is also important to be certain that the grounds for a public accusation of malpractice against an individual are solid, because once it is made, it cannot easily be undone. The damage to reputation is immediate and severe, and a later correction, if one comes at all, rarely gets the same attention.</p><p>It is also a time for humility. In the most mundane and boring parts of academic work, such as locating a source and formatting a reference, many of us have had the rug pulled out from under us. These tools are very good at making it seem like the work is done correctly when it is not, and they can trick even otherwise careful people into thinking that their personal robot got it right.</p><p>I suspect that much of this anger is coming from a broader anxiety about what AI is doing to the academy. All that to say, we should be far more sure of what happened before we make an example of someone who has, by and large, done excellent work, and we should consider the case in the context of larger structural issues.</p><p>To be clear, I do not actually know how this happened. But I am far more inclined to believe that it was a case of misplaced confidence in a technology that routinely spits out convincing falsehoods than a case of calculated fraud. That does not excuse the error, but it does change what we should learn from it. The failure may be less an individual lapse than a structural one: a culture that has adopted powerful tools without equally powerful norms of verification. The good news is that this is a problem we can fix &#8212; and I have some solutions to try out. But first, we need to understand how we got here, and why the machine is so good at deceiving us.</p><h2>Old habits die hard</h2><p>Type a scholar&#8217;s name and a couple of keywords into Google Scholar, and you get a list of citations. Use a few of them without reading past the abstract because you already know roughly what that person argues, and you have done one of the more mundane tasks of writing. AI is just exposing an inconvenient truth. We do not (closely) read every source we cite. Some citations are indeed used as evidence, and some are presented as a kind of performance. They signal that we know the literature or that we have cited whoever a reviewer expected or explicitly asked us to. A chatbot like ChatGPT or Claude, in these early days, feels like the same exercise. You ask for the literature on a subject or particular claim, and it gives you names you recognize along with titles that look right. The problem is that some of those titles do not exist.</p><p>None of this is new. Take one prominent example. A decade ago, before anyone could blame a model, <a href="https://retractionwatch.com/2019/09/17/columbia-historian-stepping-down-after-plagiarism-finding/">a prize-winning history of North Korea</a> was found to cite nonexistent or irrelevant sources in at least sixty-one places. The author returned the prize and left his chair.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> A milder form of the same problem is extremely common: a wrong DOI, a page range off by two, a citation to a real paper for a claim it does not make. These are hallucinations in all but name. What AI adds is ease of use and an appearance of accuracy, and that is one of the big structural issues we are dealing with now.</p><h2>Why the machine makes things up</h2><p>Google Scholar (usually) returns sources that actually exist. A large language model returns what is probable. It is not a database, nor a search engine. It spits out the next most likely token given everything before it, so when you ask for a citation, it produces a string that <em>looks</em> like one: an author, a year, a title, a journal, and a volume, because that shape is overwhelmingly probable wherever citations appear. Nothing in that process checks the reference against a master list. The model does not care whether the work exists, which makes it a bullshit machine in <a href="https://link.springer.com/article/10.1007/s10676-024-09775-5">Harry Frankfurt&#8217;s sense of the term</a>. This problem is deeply entrenched in these models, as the authors of a recent <a href="https://arxiv.org/abs/2509.04664">paper from OpenAI</a> point out. When we train and evaluate these models, we usually end up rewarding a confident guess over an admission that the model does not know the answer.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p><p>How often does this happen? In <a href="https://doi.org/10.1038/s41598-023-41032-5">one controlled study</a>, GPT-3.5 fabricated 55 percent of the citations it generated for literature reviews. The newer GPT-4 was much better, but still fabricated 18 percent.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> In <a href="https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(26)00603-3/fulltext">an audit of two and a half million biomedical papers</a>, the rate of fabricated references rose more than twelvefold after 2023, to about 57 per 10,000 papers by early 2026. The steepest rise came with the introduction of new AI writing tools in mid-2024. Most of these references had made it through peer review, which is understandable, since it would be a lot of work for reviewers to check every source.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> The problem reaches well beyond the academy. In 2023, a federal judge <a href="https://law.justia.com/cases/federal/district-courts/new-york/nysdce/1:2022cv01461/575368/54/">fined two New York lawyers five thousand dollars</a> for submitting a brief that included six judicial opinions ChatGPT had invented. One of the lawyers had used ChatGPT to verify that one of the opinions was real.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kJ_j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F672c5bc9-264f-404a-b086-b7a487542b87_1803x1034.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kJ_j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F672c5bc9-264f-404a-b086-b7a487542b87_1803x1034.png 424w, https://substackcdn.com/image/fetch/$s_!kJ_j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F672c5bc9-264f-404a-b086-b7a487542b87_1803x1034.png 848w, https://substackcdn.com/image/fetch/$s_!kJ_j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F672c5bc9-264f-404a-b086-b7a487542b87_1803x1034.png 1272w, https://substackcdn.com/image/fetch/$s_!kJ_j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F672c5bc9-264f-404a-b086-b7a487542b87_1803x1034.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!kJ_j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F672c5bc9-264f-404a-b086-b7a487542b87_1803x1034.png" width="1456" height="835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/672c5bc9-264f-404a-b086-b7a487542b87_1803x1034.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:835,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Quarterly rate of fabricated references per 10,000 biomedical papers, rising from about four in 2023 to nearly 57 by early 2026.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Quarterly rate of fabricated references per 10,000 biomedical papers, rising from about four in 2023 to nearly 57 by early 2026." title="Quarterly rate of fabricated references per 10,000 biomedical papers, rising from about four in 2023 to nearly 57 by early 2026." srcset="https://substackcdn.com/image/fetch/$s_!kJ_j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F672c5bc9-264f-404a-b086-b7a487542b87_1803x1034.png 424w, https://substackcdn.com/image/fetch/$s_!kJ_j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F672c5bc9-264f-404a-b086-b7a487542b87_1803x1034.png 848w, https://substackcdn.com/image/fetch/$s_!kJ_j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F672c5bc9-264f-404a-b086-b7a487542b87_1803x1034.png 1272w, https://substackcdn.com/image/fetch/$s_!kJ_j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F672c5bc9-264f-404a-b086-b7a487542b87_1803x1034.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We do not know how the fabricated citations in the case described at the start of this post were produced, but my guess is the simplest one: someone used a single prompt to a general-purpose chatbot, with no tools or documents to check against. That is the weakest possible way to use the new technology, and it almost guarantees some hallucination in the answer(s). Tools that retrieve and read sources before answering do much better, but they still have a way to go. When <a href="https://doi.org/10.1111/jels.12413">Stanford tested</a> retrieval-based legal tools that vendors marketed as &#8220;hallucination-free,&#8221; they still gave a false answer in something like one out of six cases. But this is at least a sign of things moving in the right direction.</p><p>At the very least, we need verification systems that can find hallucinations and other errors.</p><h2>Responsible all the same</h2><p>We are accountable for what we publish. The best way to avoid this problem is to read the sources we use carefully, check every citation, and leave out anything we cannot verify. Fake sources are unacceptable whether they come from misusing an LLM, a tired research assistant, or our own carelessness in formatting.</p><p>For students, that standard has to be explicit, and at my institution it is. I am not impressed by how universities (mine included) mostly cast AI as a tool for cheating, but <a href="https://www.organisatiegids.universiteitleiden.nl/binaries/content/assets/geesteswetenschappen/oer/2024-2025/oer-2024-2025-ma-algemeen-fgw-eng.pdf">Leiden University&#8217;s Faculty of Humanities</a> gets the definition of fraud right: any act or omission that prevents a correct assessment of a student&#8217;s knowledge. Its examples include the unauthorized use of AI software and the invention of research data.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> Its <a href="https://www.organisatiegids.universiteitleiden.nl/en/regulations/humanities/guidelines-for-the-use-of-genai-in-assessment">guidance on generative AI</a> is more direct: &#8220;GenAI generates language, not information &#8230; If asked to produce references, many LLMs will simply invent non-existent citations.&#8221; A fabricated citation misrepresents the evidence the work rests on, which is exactly what assessment is meant to evaluate. So yes, if taken literally, it is fraud, and the <a href="https://www.organisatiegids.universiteitleiden.nl/en/regulations/general/plagiarism">heaviest penalty on the books</a>, exclusion from all examinations for a year, should be deterrent enough.</p><p>A field-wide response is going to be harder than a local one, and the distance between what these policies aim to resolve and what actually happens seems quite wide. It seems like people are trying to police their way out of this problem. That comes from a good place, a wish to make sure people can do good science, and it is understandable. In mid-May, for example, <a href="https://techcrunch.com/2026/05/16/research-repository-arxiv-will-ban-authors-for-a-year-if-they-let-ai-do-all-the-work/">arXiv announced</a> that authors who post papers with hallucinated references will be banned for a year, and after that can only post papers that have cleared peer review elsewhere.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a> I like the motivation, but not the mechanism. The policy is, as has been noted, <a href="https://www.insidehighered.com/news/faculty/books-publishing/2026/05/22/ban-authors-who-submit-ai-content-welcome-unenforceable">&#8220;welcome but unenforceable.&#8221;</a></p><p>The early evidence backs this up. When one peer-review service <a href="https://reviewer3.com/live/arxiv">ran its reference checker over two hundred papers</a> posted to arXiv after the ban, more than a quarter of them still included a hallucinated citation. Despite the threats of punishment, it is obvious that people are using AI as a research tool. The technology is too good and too useful for prohibition to hold. People are going to use it to think with and write with, whatever the rules say. To the extent that the deterrent messaging is heard at all, I think it is mostly leading to <a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=5464215&amp;__cf_chl_f_tk=HjfjFtdjV0QXvMc325Mi5U2F_jPtNMXsIuyLOKbq.o0-1782765665-1.0.1.1-w81elC9vRsNfufDg1PueKB.3dTuqrDPTOBMYHIKyyyg">underreporting of AI use because of social desirability</a>.</p><p>We need a different approach. The answer is to teach people to use the tools openly rather than in secret, and to turn the same tools on the problems they have made worse. We can, for example, build them into the checking process when someone submits work to a journal. We can also use them to help writers, senior authors and students alike, audit their reference lists and check that each source actually supports the claim attached to it, until this becomes routine. Done properly, this checking could be more systematic and reliable than it ever was before ChatGPT. Rather than tell people what they cannot do, we should show them what they can do instead.</p><h2>Skills / chatbots</h2><p>The first thing we need to do is stop using chatbots as the default for serious research and writing, and start building (or using) skills for <a href="https://cloud.google.com/discover/what-is-agentic-ai">agentic AI</a> instead.</p><p><a href="https://support.claude.com/en/articles/12512176-what-are-skills">A skill</a> is a set of instructions that an agentic AI system uses to perform a task. A skill constrains what the AI can do by giving it specific steps to follow and the tools to use for those steps. It also gives the model steps to check its own work. With a one-shot prompt, we are asking the AI to be creative. With a skill, we are taking that opportunity away. A skill can tell the model to dispatch <a href="https://cloud.google.com/discover/what-are-ai-agents">agents</a>, to look up sources in actual indexes, and to tell the difference between what it confirmed and what it merely guessed. Fabrication comes from a model answering from probability instead of evidence, and a well-built skill helps close off that option.</p><p>I write these for my own research and keep them in a small library, the <a href="https://github.com/scdenney/open-science-skills">Open Science Skills</a>. Three of them are relevant here.</p><p>The first is a <a href="https://github.com/scdenney/open-science-skills/blob/main/plugin/skills/citation-check/SKILL.md">reference checker</a> (<code>citation-check</code>). This one most directly addresses the problem discussed in this post. It reads every in-text citation and every bibliography entry in a paper and then checks each reference. It confirms that the reference exists by looking it up in programmatic indexes such as Crossref and OpenAlex, not in the model&#8217;s memory. For references with a DOI, it checks that the DOI resolves to the cited paper and not merely to <em>some</em> paper. If a title looks made up, it checks it against the named author&#8217;s actual body of work. Only if it cannot find the reference by title or by author does it call it fabricated. What comes back separates the serious problems from the cosmetic ones and flags the uncertain cases for a human. It is <em>not</em> perfect, but overall, it works.</p><p>The second skill addresses a different, arguably much deeper problem, one that is much less likely to go viral on X. Even if a citation is real and formatted correctly, what if it does not actually support the claim it is attached to? The <a href="https://github.com/scdenney/open-science-skills/blob/main/plugin/skills/fact-check/SKILL.md">source-claim checker</a> (<code>fact-check</code>) reads the cited source and asks whether it supports the specific sentence, and it flags overclaiming and direction errors. To do that, it needs the sources to read. As I&#8217;ve written the skill, it cannot just look things up on the internet or &#8220;get creative.&#8221; That is what the third skill is for.</p><p>The third, a <a href="https://github.com/scdenney/open-science-skills/blob/main/plugin/skills/research-repo/SKILL.md">knowledge-base scaffold</a> (<code>research-repo</code>), builds a project around its source library. The library has two folders: one for the original source documents (PDFs, etc.) and one for the machine-readable versions (preferably in markdown) that the checker actually reads. Each document is keyed to an entry in the bibliography, so that each source is directly connected to its bibliographic metadata. The claim checker will not run against an empty or half-built library, because to verify that you have represented a source faithfully, you need to have that source, or, where the source is not available, a file that faithfully summarizes it.</p><h2>Try it yourself</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://scdenney.github.io/ai-for-research/" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0y_h!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54aa7047-f32a-41c8-a101-75c1185721b7_1800x592.png 424w, https://substackcdn.com/image/fetch/$s_!0y_h!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54aa7047-f32a-41c8-a101-75c1185721b7_1800x592.png 848w, https://substackcdn.com/image/fetch/$s_!0y_h!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54aa7047-f32a-41c8-a101-75c1185721b7_1800x592.png 1272w, https://substackcdn.com/image/fetch/$s_!0y_h!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54aa7047-f32a-41c8-a101-75c1185721b7_1800x592.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!0y_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54aa7047-f32a-41c8-a101-75c1185721b7_1800x592.png" width="1456" height="479" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54aa7047-f32a-41c8-a101-75c1185721b7_1800x592.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:479,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;AI for Research &#8212; demos, lecture slides, and how-to guides for working with AI agents and skills.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:&quot;https://scdenney.github.io/ai-for-research/&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="AI for Research &#8212; demos, lecture slides, and how-to guides for working with AI agents and skills." title="AI for Research &#8212; demos, lecture slides, and how-to guides for working with AI agents and skills." srcset="https://substackcdn.com/image/fetch/$s_!0y_h!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54aa7047-f32a-41c8-a101-75c1185721b7_1800x592.png 424w, https://substackcdn.com/image/fetch/$s_!0y_h!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54aa7047-f32a-41c8-a101-75c1185721b7_1800x592.png 848w, https://substackcdn.com/image/fetch/$s_!0y_h!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54aa7047-f32a-41c8-a101-75c1185721b7_1800x592.png 1272w, https://substackcdn.com/image/fetch/$s_!0y_h!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54aa7047-f32a-41c8-a101-75c1185721b7_1800x592.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The companion hub, where I will post demos and presentation slides.</figcaption></figure></div><p>In practice, none of this is as elaborate as it might sound, and the best way to figure it out is to do it yourself. For this post I put up a small, self-contained <a href="https://scdenney.github.io/ai-for-research/reference-check">walk-through</a> on a synthetic manuscript seeded with deliberate errors, so you can watch the checks fire. It is the first of a series of demos I am preparing for students and colleagues at Leiden University in a <a href="https://scdenney.github.io/ai-for-research">teaching hub</a> (still a working prototype), with the setup guide and slides alongside it.</p><p>We are in an odd spot right now. The technology is too useful to ignore, but still unreliable enough to embarrass or even discredit us. And we have not been at it long enough to establish good habits. That is a dangerous combination.</p><p>What we need is not a moratorium, or a rejection of the technology, or a hunt on social media for the next person to make an example of. What we need is humility about how easily these tools can fool us, some grace for those who have misused them, and a serious tightening of the standards for how we use them. These positions are not inconsistent. We can hold all three at once.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><p><em>Correction: It has since been clarified that the article published in Korea Observer was an "annual review" reflection and was therefore not subject to peer review, which explains its quick publication timeline.</em></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>The article appeared in <em>Korea Observer</em> 57, no. 1 (Spring 2026): 1&#8211;21, https://doi.org/10.29152/KOIKS.2026.57.1.1, a 21-page review of South Korean politics after the December 2024 martial law crisis. It was submitted on February 10 and accepted on February 21, and the journal advertises itself as a peer-reviewed quarterly. The widely shared thread on June 13 flagged six citations as fabricated, and two of the scholars named confirmed the attributed works do not exist. Two of the named authors, asked by news outlet <a href="https://www.nknews.org/2026/06/award-winning-korea-studies-scholar-accused-of-using-ai-fabricated-citations/">NK News</a>, confirmed they had never written the works attributed to them. The article published, notably, was not subjected to the journal&#8217;s peer review process, as it is a special &#8220;annual review&#8221; reflection.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Charles K. Armstrong, <em>Tyranny of the Weak: North Korea and the World, 1950&#8211;1992</em> (Ithaca, NY: Cornell University Press, 2013). The citation problems were first documented in detail by the historian Bal&#225;zs Szalontai. A <a href="https://retractionwatch.com/2019/09/17/columbia-historian-stepping-down-after-plagiarism-finding/">Columbia University investigation</a> found research misconduct, concluding that Armstrong had &#8220;cited nonexistent or irrelevant sources in at least 61 instances,&#8221; alongside plagiarism; Szalontai&#8217;s own count ran higher still. In 2017 he <a href="https://retractionwatch.com/2017/07/05/historian-returns-prize-high-profile-book-70-corrections/">returned</a> the American Historical Association&#8217;s John K. Fairbank Prize, writing, &#8220;Due to the numerous citation errors in my book, I have decided to return the prize out of respect for the AHA,&#8221; and he retired from Columbia in 2020. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Adam Tauman Kalai, Ofir Nachum, Santosh S. Vempala, and Edwin Zhang, &#8220;Why Language Models Hallucinate,&#8221; arXiv:2509.04664 (2025), p. 1: &#8220;language models hallucinate because the training and evaluation procedures reward guessing over acknowledging uncertainty &#8230; language models are optimized to be good test-takers, and guessing when uncertain improves test performance.&#8221;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>William H. Walters and Esther Isabelle Wilder, &#8220;Fabrication and Errors in the Bibliographic Citations Generated by ChatGPT,&#8221; <em>Scientific Reports</em> 13 (2023): 14045, https://doi.org/10.1038/s41598-023-41032-5, p. 5. Across 636 citations, &#8220;55% of the GPT-3.5 citations but just 18% of the GPT-4 citations are fabricated. Likewise, 43% of the real GPT-3.5 citations but just 24% of the real GPT-4 citations include substantive citation errors.&#8221;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Maxim Topaz, Nir Roguin, Pallavi Gupta, Zhihong Zhang, and Laura-Maria Peltonen, &#8220;Fabricated Citations: An Audit across 2&#183;5 Million Biomedical Papers,&#8221; <em>The Lancet</em> 407, no. 10541 (2026): 1779&#8211;1781, https://doi.org/10.1016/S0140-6736(26)00603-3. The audit scanned the PubMed Central open-access subset, about 2.5 million papers and 125.6 million references, of which 97.1 million carried an identifier and could be verified. It found the rate of fabricated references rising more than twelvefold, from roughly four per 10,000 papers in 2023 to 51.3 per 10,000 in the fourth quarter of 2025 and 56.9 in early 2026, with the sharp inflection in mid-2024. The share of papers with at least one fabricated reference rose from one in 2,828 in 2023 to one in 277 in the first seven weeks of 2026. The authors cite earlier work estimating that 30 to 69 percent of LLM-generated references in biomedicine are fabricated.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>Leiden University, Faculty of Humanities, Course and Examination Regulations, Art. 7: &#8220;Fraud is defined as any activity or omission carried out by a student aimed at completely or partially hindering a correct assessment of the student&#8217;s knowledge, understanding and skills, including at least the following: &#8230; c. unauthorized use of AI software; d. inventing research data &#8230;&#8221; The enumerated list does not use the words &#8220;fabricated references&#8221; verbatim, so mapping a hallucinated citation to a specific clause is an interpretation, but coverage under the general definition is clear.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>Reported across Nature, TechCrunch, Times Higher Education, Inside Higher Ed, and others in mid-May 2026, and announced by an arXiv moderator and computer-science section chair rather than, at first, as codified policy text on arXiv&#8217;s official pages. The stated trigger is &#8220;incontrovertible evidence&#8221; of unchecked LLM output, with hallucinated references the main example. This is distinct from arXiv&#8217;s earlier (October 2025) requirement that review and survey articles in its CS category clear peer review before posting, which is a submission rule, not an author ban.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[Vision-language models are weirdly good at Old-Korean]]></title><description><![CDATA[I stress test VLMs on Old-Korean and it works surprisingly well.]]></description><link>https://www.pixelsandpatterns.org/p/vision-language-models-are-weirdly</link><guid isPermaLink="false">https://www.pixelsandpatterns.org/p/vision-language-models-are-weirdly</guid><dc:creator><![CDATA[Aron van de Pol]]></dc:creator><pubDate>Fri, 26 Jun 2026 16:24:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e79d4085-2b31-4b01-b9a7-d157fc20d870_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><p></p><p>OCR has changed substantially in the last few years. For clean, modern, printed English, the task no longer usually requires a dedicated OCR engine, a domain-specific training set, or extensive preprocessing. Current vision-language models can often transcribe such material directly from a prompt, sometimes zero-shot and sometimes with a single example. In that limited sense, printed Latin-script OCR for high-resource, modern material has become a largely infrastructural problem rather than a central research challenge.</p><p>Historical documents are still harder. Old paper, damaged scans, unusual layouts, handwriting, and older typefaces all push modern models well outside their comfort zone. But even here the progress has been striking. Platforms like <em><a href="https://www.transkribus.org/">Transkribus</a></em> routinely read European manuscripts that would have seemed hopeless a decade ago, and projects such as <em><a href="https://github.com/knaw-huc/loghi">Loghi</a></em> report similarly strong results on historical print. OCR has become much more accessible.</p><p>Korean, and by extension CJK<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>  and other non-Western scripts, is a different case, and early-twentieth-century Korean is different again. Pre-1933, Korean was written in an orthography that has since fallen out of use. It spelled words closer to how they sounded than to a fixed stem, and it kept letters the modern keyboard has dropped, among them the dot vowel arae-a (&#12685;) and a set of old consonant clusters. The spelling we read today is the Unified Orthography of 1933 (&#54620;&#44544; &#47582;&#52644;&#48277; &#53685;&#51068;&#50504;), the morphophonemic standard carried by Chu Sigy&#335;ng&#8217;s lineage in the Korean Language Society, and it became the convention only after a long argument that ran through the colonial period and resurfaced in the spelling crisis of the early 1950s.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><p>Modern Korean OCR remains less stable than the English and European-script cases above. On the Korean portion of the <a href="https://songjhpku.github.io/PM4Bench/">PM<sup>4</sup>Bench</a> benchmark the leading system changes with each new model release, and in the current version Gemini 3 Pro ranks ahead of the newest open model, Qwen3-VL, which does not improve on its own predecessor for this task. This should be read as a relative ranking within a weak field rather than as evidence of reliable transcription. The absolute scores remain low.</p><p>In one of my projects, I need OCR labels for about ninety-four million individual character images. Because I study the appearance of historical type rather than the content of the text, it is important that older Korean characters are transcribed as they were printed, rather than silently modernized. This post explores how well current models actually do.</p><h2>A few tests pages</h2><p>The page is from <em>Sony&#335;n</em> (&#49548;&#45380;), a children&#8217;s magazine published in 1908, and contains a chain-rhyme word game. It is printed in vertical columns read from right to left, combining (Old-)Korean <em>Hangul</em> and <em>Hanja</em> on the same page. Material like this has traditionally been difficult for OCR systems.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZY-M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c32c2f-cb10-45f3-9f5f-a9d5449f2bf6_1168x1206.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZY-M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c32c2f-cb10-45f3-9f5f-a9d5449f2bf6_1168x1206.png 424w, https://substackcdn.com/image/fetch/$s_!ZY-M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c32c2f-cb10-45f3-9f5f-a9d5449f2bf6_1168x1206.png 848w, https://substackcdn.com/image/fetch/$s_!ZY-M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c32c2f-cb10-45f3-9f5f-a9d5449f2bf6_1168x1206.png 1272w, https://substackcdn.com/image/fetch/$s_!ZY-M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c32c2f-cb10-45f3-9f5f-a9d5449f2bf6_1168x1206.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZY-M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c32c2f-cb10-45f3-9f5f-a9d5449f2bf6_1168x1206.png" width="1168" height="1206" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6c32c2f-cb10-45f3-9f5f-a9d5449f2bf6_1168x1206.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1206,&quot;width&quot;:1168,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2260716,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://pixelsandpatterns.substack.com/i/203420919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c32c2f-cb10-45f3-9f5f-a9d5449f2bf6_1168x1206.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ZY-M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c32c2f-cb10-45f3-9f5f-a9d5449f2bf6_1168x1206.png 424w, https://substackcdn.com/image/fetch/$s_!ZY-M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c32c2f-cb10-45f3-9f5f-a9d5449f2bf6_1168x1206.png 848w, https://substackcdn.com/image/fetch/$s_!ZY-M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c32c2f-cb10-45f3-9f5f-a9d5449f2bf6_1168x1206.png 1272w, https://substackcdn.com/image/fetch/$s_!ZY-M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6c32c2f-cb10-45f3-9f5f-a9d5449f2bf6_1168x1206.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The part I cared about was not whether the models could produce readable Korean. (Though even this would be helpful for many historians.) It was whether they would OCR Korean letters as printed. Before the 1933 spelling reform, Korean used forms that later disappeared or changed in ordinary writing. These include the dot-vowel arae-a (&#12685;) and several old consonant clusters. A model can read a page fluently and still normalize those forms into modern Korean. For most readers the output still looks right. For my purposes, it is wrong.</p><p>The first page was a narrow test. It happened to contain two old cluster forms, &#4397;&#4449; and &#4399;&#4465;. A modern transcription would normally write these as &#44620; and &#46832;. GPT-5.5 kept all six occurrences of those old clusters on every run. The previous GPT model had modernized all six. That was already a meaningful change, but it did not prove much beyond this particular page.</p><p>So I tried five more pages from <em>Sony&#335;n</em>, using prose and dialogue rather than word games. These pages contained a wider range of old Korean forms: arae-a in forms such as &#4370;&#4510; and &#4354;&#4510;&#4523;, several &#12613;-cluster groups such as &#12666;, &#12668;, and &#12669;, and even the rarer triple cluster &#12660;. This was the real test. The question was no longer whether a model could preserve two repeated forms on one page, but whether it could keep a broader old-orthography repertoire across different pages.</p><p>The current models can preserve old Korean forms, but not with equal reliability. Preservation is still something to check, not something to assume. In practice I treated an old form as trustworthy only when different models produced it, because a single model can also hallucinate plausible old-looking Korean.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sTf9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2907f57-8f12-4389-9858-cee2c0eea3dc_880x460.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sTf9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2907f57-8f12-4389-9858-cee2c0eea3dc_880x460.png 424w, https://substackcdn.com/image/fetch/$s_!sTf9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2907f57-8f12-4389-9858-cee2c0eea3dc_880x460.png 848w, https://substackcdn.com/image/fetch/$s_!sTf9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2907f57-8f12-4389-9858-cee2c0eea3dc_880x460.png 1272w, https://substackcdn.com/image/fetch/$s_!sTf9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2907f57-8f12-4389-9858-cee2c0eea3dc_880x460.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!sTf9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2907f57-8f12-4389-9858-cee2c0eea3dc_880x460.png" width="880" height="460" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2907f57-8f12-4389-9858-cee2c0eea3dc_880x460.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:460,&quot;width&quot;:880,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:28408,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://pixelsandpatterns.substack.com/i/203420919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2907f57-8f12-4389-9858-cee2c0eea3dc_880x460.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!sTf9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2907f57-8f12-4389-9858-cee2c0eea3dc_880x460.png 424w, https://substackcdn.com/image/fetch/$s_!sTf9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2907f57-8f12-4389-9858-cee2c0eea3dc_880x460.png 848w, https://substackcdn.com/image/fetch/$s_!sTf9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2907f57-8f12-4389-9858-cee2c0eea3dc_880x460.png 1272w, https://substackcdn.com/image/fetch/$s_!sTf9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2907f57-8f12-4389-9858-cee2c0eea3dc_880x460.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The dedicated OCR engines were not trained on any form of old-Korean and not surprising that they performed the poorest. <a href="https://mistral.ai/news/ocr-4/">Mistral OCR</a>, <a href="https://github.com/deepseek-ai/DeepSeek-OCR">DeepSeek-OCR</a>, <a href="https://github.com/baidu/Unlimited-OCR">Baidu&#8217;s Unlimited-OCR</a>, <a href="https://github.com/zai-org/GLM-OCR">GLM-OCR</a>, all read the page and then modernized the old letters or fell apart, one of them looping a few character lines a few hundred times, another reading the Hangul as Chinese and drifting into a gibberish. Qwen3-VL was different. It read the Korean fluently, but silently regularized every older form into modern Korean. If your goal is simply to recover the text, that is a respectable result. If you care about preserving historical orthography, it is not.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ysBP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f0b5486-551b-4fdc-8515-8595a5e0ab3b_2271x2182.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ysBP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f0b5486-551b-4fdc-8515-8595a5e0ab3b_2271x2182.png 424w, https://substackcdn.com/image/fetch/$s_!ysBP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f0b5486-551b-4fdc-8515-8595a5e0ab3b_2271x2182.png 848w, https://substackcdn.com/image/fetch/$s_!ysBP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f0b5486-551b-4fdc-8515-8595a5e0ab3b_2271x2182.png 1272w, https://substackcdn.com/image/fetch/$s_!ysBP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f0b5486-551b-4fdc-8515-8595a5e0ab3b_2271x2182.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!ysBP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f0b5486-551b-4fdc-8515-8595a5e0ab3b_2271x2182.png" width="1456" height="1399" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f0b5486-551b-4fdc-8515-8595a5e0ab3b_2271x2182.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1399,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:553025,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://pixelsandpatterns.substack.com/i/203420919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f0b5486-551b-4fdc-8515-8595a5e0ab3b_2271x2182.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ysBP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f0b5486-551b-4fdc-8515-8595a5e0ab3b_2271x2182.png 424w, https://substackcdn.com/image/fetch/$s_!ysBP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f0b5486-551b-4fdc-8515-8595a5e0ab3b_2271x2182.png 848w, https://substackcdn.com/image/fetch/$s_!ysBP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f0b5486-551b-4fdc-8515-8595a5e0ab3b_2271x2182.png 1272w, https://substackcdn.com/image/fetch/$s_!ysBP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f0b5486-551b-4fdc-8515-8595a5e0ab3b_2271x2182.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Going back further, to 1896</h2><p>After <em>Sony&#335;n</em>, I wanted to know how the models handled even earlier Korean print. As a final test, I tried the front page of the <em>Tongnip Sinmun</em> (&#46021;&#47549;&#49888;&#47928;, <em>The Independent</em>) from 1896, the first privately published Korean newspaper, set entirely in Hangul in the full old orthography with arae-a in almost every word. The only scan I could find is small, a single 960-pixel page, which makes it a hard test on top of an old one. For once there was something solid to check it against. The Korean Wikisource was manually transcribed, so this is the one page in the whole exercise I could measure against ground truth rather than judge by eye. It should also be noted that this newspaper image is denser and has a more difficult layout then the previous magazine had.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qQK7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8bc14bf-d20b-4878-b554-5937979a0206_960x1307.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qQK7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8bc14bf-d20b-4878-b554-5937979a0206_960x1307.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qQK7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8bc14bf-d20b-4878-b554-5937979a0206_960x1307.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qQK7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8bc14bf-d20b-4878-b554-5937979a0206_960x1307.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qQK7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8bc14bf-d20b-4878-b554-5937979a0206_960x1307.jpeg 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!qQK7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8bc14bf-d20b-4878-b554-5937979a0206_960x1307.jpeg" width="960" height="1307" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8bc14bf-d20b-4878-b554-5937979a0206_960x1307.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1307,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:525341,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://pixelsandpatterns.substack.com/i/203420919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8bc14bf-d20b-4878-b554-5937979a0206_960x1307.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qQK7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8bc14bf-d20b-4878-b554-5937979a0206_960x1307.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qQK7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8bc14bf-d20b-4878-b554-5937979a0206_960x1307.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qQK7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8bc14bf-d20b-4878-b554-5937979a0206_960x1307.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qQK7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8bc14bf-d20b-4878-b554-5937979a0206_960x1307.jpeg 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most models struggled. Claude Opus 4.8 transcribed only about a sixth of the page, even reversing the masthead. Qwen3-VL reached roughly two thirds, but regularized the spelling throughout. Both ended up at around ninety percent character error against the Wikisource transcription.</p><p>Gemini 3.1 Pro was the clear exception. It read essentially the entire page, from the masthead through the advertisements and price table to the end of the editorial, about ninety-six percent of the page by length. Compared against the Wikisource transcription, it reached roughly seventeen percent character error while preserving 176 of the page&#8217;s 182 arae-a. On a 960-pixel scan of an 1896 newspaper, that amounts to a complete transcription of a full old-orthography page.</p><p>GPT-5.5 failed for a different reason. It did not misread the page so much as fail to read it at all. <em>Tongnip Sinmun</em> is one of the most famous newspapers in Korean history, and its first issue has been reproduced countless times. When shown the thirteenth issue, GPT-5.5 instead reproduced the first: its date, issue number, and opening lines, at both image resolutions. Against the actual page, the result is about eighty percent character error. It is a useful reminder that, for well-known historical documents, a model can sometimes retrieve what it already knows instead of reading what is actually in front of it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IRCS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456ef56c-adad-49b9-bf91-c5366ae3718f_2399x2582.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IRCS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456ef56c-adad-49b9-bf91-c5366ae3718f_2399x2582.png 424w, https://substackcdn.com/image/fetch/$s_!IRCS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456ef56c-adad-49b9-bf91-c5366ae3718f_2399x2582.png 848w, https://substackcdn.com/image/fetch/$s_!IRCS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456ef56c-adad-49b9-bf91-c5366ae3718f_2399x2582.png 1272w, https://substackcdn.com/image/fetch/$s_!IRCS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456ef56c-adad-49b9-bf91-c5366ae3718f_2399x2582.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!IRCS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456ef56c-adad-49b9-bf91-c5366ae3718f_2399x2582.png" width="1456" height="1567" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/456ef56c-adad-49b9-bf91-c5366ae3718f_2399x2582.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1567,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1571153,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://pixelsandpatterns.substack.com/i/203420919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456ef56c-adad-49b9-bf91-c5366ae3718f_2399x2582.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IRCS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456ef56c-adad-49b9-bf91-c5366ae3718f_2399x2582.png 424w, https://substackcdn.com/image/fetch/$s_!IRCS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456ef56c-adad-49b9-bf91-c5366ae3718f_2399x2582.png 848w, https://substackcdn.com/image/fetch/$s_!IRCS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456ef56c-adad-49b9-bf91-c5366ae3718f_2399x2582.png 1272w, https://substackcdn.com/image/fetch/$s_!IRCS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F456ef56c-adad-49b9-bf91-c5366ae3718f_2399x2582.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><p></p><h2>Why this matters to someone working with the sources</h2><p>The interesting part is not the benchmark. It is what happens to the historical record.</p><p>When the National Institute of Korean History transcribes historical print, it modernizes the spelling. I checked the roughly six hundred thousand colonial-era records they have published, and almost none preserve the older letters. For anyone searching the archive, the original orthography has effectively disappeared.</p><p>That makes preservation more than a technical curiosity. A model that keeps the old letters is not simply producing another transcription. It is recovering information that was lost during digitization. For anyone working with pre-1933 Korean print, this may be of importance.</p><p>The preservation results only matter if the models can also read the page accurately. On that front, the picture is encouraging. Against four pages of the 1921 magazine <em>Kaeby&#335;k</em>, where a modern transcription exists, the best current models matched roughly ninety-seven percent of the printed characters directly from the low-resolution scans. That measures reading rather than preservation, since the 1921 transcription already modernizes the spelling. Taken together, though, the results point in the same direction. Current models can read these pages, and on sufficiently old material, the best of them also preserve what makes them historically distinctive.</p><h2>A note on scale</h2><p>For a single page, I would use a frontier vision-language model every time.</p><p>My own project is different. It involves millions of character crops. Running a frontier model over that volume would incur substantial API costs.</p><p>Instead, I built a small voting system with more traditional OCR engines. EasyOCR and a lightweight classifier trained on historical Korean type recognize the Old-Korean, PaddleOCR reads the Hanja, and a simple voting rule chooses between them. The entire corpus finished in about a week on hardware we already owned.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1Ve-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca54901-d06c-4486-be1e-318ec21e2b74_1832x1713.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1Ve-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca54901-d06c-4486-be1e-318ec21e2b74_1832x1713.png 424w, https://substackcdn.com/image/fetch/$s_!1Ve-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca54901-d06c-4486-be1e-318ec21e2b74_1832x1713.png 848w, https://substackcdn.com/image/fetch/$s_!1Ve-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca54901-d06c-4486-be1e-318ec21e2b74_1832x1713.png 1272w, https://substackcdn.com/image/fetch/$s_!1Ve-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca54901-d06c-4486-be1e-318ec21e2b74_1832x1713.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!1Ve-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca54901-d06c-4486-be1e-318ec21e2b74_1832x1713.png" width="1456" height="1361" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cca54901-d06c-4486-be1e-318ec21e2b74_1832x1713.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1361,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:323713,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://pixelsandpatterns.substack.com/i/203420919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca54901-d06c-4486-be1e-318ec21e2b74_1832x1713.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1Ve-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca54901-d06c-4486-be1e-318ec21e2b74_1832x1713.png 424w, https://substackcdn.com/image/fetch/$s_!1Ve-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca54901-d06c-4486-be1e-318ec21e2b74_1832x1713.png 848w, https://substackcdn.com/image/fetch/$s_!1Ve-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca54901-d06c-4486-be1e-318ec21e2b74_1832x1713.png 1272w, https://substackcdn.com/image/fetch/$s_!1Ve-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca54901-d06c-4486-be1e-318ec21e2b74_1832x1713.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The ensemble has one advantage over a frontier model besides cost. It is explicit about uncertainty. When its engines disagree, it leaves the character blank instead of guessing. A frontier model often does the opposite. It produces a perfectly plausible modern character, and unless you compare it with the original page you may never realize the historical form has disappeared. A blank is an error you can revisit. Silent modernization is much harder to detect.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wSGI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c98e488-4dc8-4155-891c-a3daa818873f_1514x2404.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wSGI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c98e488-4dc8-4155-891c-a3daa818873f_1514x2404.png 424w, https://substackcdn.com/image/fetch/$s_!wSGI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c98e488-4dc8-4155-891c-a3daa818873f_1514x2404.png 848w, https://substackcdn.com/image/fetch/$s_!wSGI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c98e488-4dc8-4155-891c-a3daa818873f_1514x2404.png 1272w, https://substackcdn.com/image/fetch/$s_!wSGI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c98e488-4dc8-4155-891c-a3daa818873f_1514x2404.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!wSGI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c98e488-4dc8-4155-891c-a3daa818873f_1514x2404.png" width="1456" height="2312" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c98e488-4dc8-4155-891c-a3daa818873f_1514x2404.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2312,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:939561,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://pixelsandpatterns.substack.com/i/203420919?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c98e488-4dc8-4155-891c-a3daa818873f_1514x2404.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wSGI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c98e488-4dc8-4155-891c-a3daa818873f_1514x2404.png 424w, https://substackcdn.com/image/fetch/$s_!wSGI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c98e488-4dc8-4155-891c-a3daa818873f_1514x2404.png 848w, https://substackcdn.com/image/fetch/$s_!wSGI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c98e488-4dc8-4155-891c-a3daa818873f_1514x2404.png 1272w, https://substackcdn.com/image/fetch/$s_!wSGI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c98e488-4dc8-4155-891c-a3daa818873f_1514x2404.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>What this adds up to</h2><p>For anyone working with pre-1933 Korean print, the practical picture has changed. Current vision-language models can do more than transcribe these pages. The strongest of them can preserve historical orthography that is absent from most digital editions. It can also help one quickly digitize small (or large) amount of works. However for very large datasets cost can quickly skyrocket. It might be worth distilling some of this knowledge into a smaller, more specific model to save on API costs. </p><p>That does not mean OCR has been fully solved. The results are model-dependent, page-dependent, and, as far as I can tell, language-dependent. But for this particular corner of the problem, the gap between what was possible a few years ago and what is possible today is surprisingly large.</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Chinese-Korean-Japanese </p><p></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Kim, Michael. &#8220;The Han&#8217;g&#365;l Crisis and Language Standardization: Clashing Orthographic Identities and the Politics of Cultural Construction.&#8221; Journal of Korean Studies 22, no. 1 (March 2017): 5&#8211;31. https://doi.org/10.1215/21581665-4153412.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[A council of models]]></title><description><![CDATA[Exploring how we can use LLMs like a team for empirical research.]]></description><link>https://www.pixelsandpatterns.org/p/a-council-of-models</link><guid isPermaLink="false">https://www.pixelsandpatterns.org/p/a-council-of-models</guid><dc:creator><![CDATA[Steven Denney]]></dc:creator><pubDate>Fri, 26 Jun 2026 13:39:34 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/fb5cf221-5ac9-4a62-9d0c-4b536bbc932e_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IoIu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60c9b982-5166-43a3-8eac-74b5e61d8e2d_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IoIu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60c9b982-5166-43a3-8eac-74b5e61d8e2d_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!IoIu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60c9b982-5166-43a3-8eac-74b5e61d8e2d_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!IoIu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60c9b982-5166-43a3-8eac-74b5e61d8e2d_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!IoIu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60c9b982-5166-43a3-8eac-74b5e61d8e2d_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IoIu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60c9b982-5166-43a3-8eac-74b5e61d8e2d_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/60c9b982-5166-43a3-8eac-74b5e61d8e2d_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2086548,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://pixelsandpatterns.substack.com/i/203542307?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60c9b982-5166-43a3-8eac-74b5e61d8e2d_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IoIu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60c9b982-5166-43a3-8eac-74b5e61d8e2d_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!IoIu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60c9b982-5166-43a3-8eac-74b5e61d8e2d_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!IoIu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60c9b982-5166-43a3-8eac-74b5e61d8e2d_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!IoIu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F60c9b982-5166-43a3-8eac-74b5e61d8e2d_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>This is an extension of part of the <a href="https://scdenney.github.io/assets/slides/from-pixels-to-patterns/#1">presentation</a> on using LLMs in research pipelines I gave for <a href="https://machinecollaborators.org/">Machine Collaborators</a>, series of talks organized by Charles Crabtree (Monash University) where researchers walk through how AI is being used in their work.</em></p><p>A recent product from OpenRouter called <a href="https://openrouter.ai/blog/announcements/fusion-beats-frontier/">Fusion</a> has multiple "cheap" models answer the same question, which they say gets within 1 point of the best "frontier" model at about half the cost. This isn't a novel idea, but the marketing is new. Pitting several models against one another has become a standard way to use LLMs. So what use might it have for empirical research?</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><p>I&#8217;ve used a similar setup in two of my studies. In one, six models read about 4,000 open-ended answers to a survey question and sorted them into pre-defined codes, helping me to understand what people were thinking when they answered a survey experiment. In another, four models read 67 history textbooks published in South Korea and (using a technique that I developed) identified the set of words that best described how the textbooks related to national identity. The research questions and coding schemes are different, but the empirical instrument is the same. In both cases, I used a panel of open-weight language models, treated as independent coders, to vote.</p><p>Some thoughts on how this works, why I run mostly open models, how it relates to the &#8220;councils&#8221; being explored by Fusion and others, and what this does and doesn&#8217;t do for research. It works really well, actually. In terms of coding tasks it is on par with spending human hours on it. Its value, however, is very much about scale rather than certainty.</p><h2>The method: open models as a panel of coders</h2><p>Given a task where one may traditionally hire a trained research assistant (e.g. reading a piece of text and labeling what it is about), provide the same codebook and instructions to multiple models. Each model reads the text, is given the same instructions and codebook, and provides a single response (i.e. the label). The majority label is the classification, and the number of models that agreed on it is recorded as a measure of agreement.</p><p>Two features of this design are worth noting before I move on to describe the steps taken. First, the models are treated as coders. As such, they are tasked with assigning a label in much the same way a trained research assistant might. This stands in contrast to an approach that might be interested in the probability distributions provided by the models or any other measure of confidence (more on that below). Simply put, I ask the models to make a decision and to provide that decision &#8220;labeled&#8221; in a way that I can compare them to one another. Just as human coders can be compared by calculating (chance-corrected) inter-coder reliability (e.g., Cohen&#8217;s and Fleiss&#8217; kappa), so too can the LLMs. Second, the voting is conducted independently. Not only are the models run at &#8220;temperature&#8221; zero (i.e., they are not permitted any &#8220;creativity&#8221;), they are also not permitted to view one another&#8217;s answers or otherwise deliberate. The models are still played off against one another, just at a later stage, when I line up the votes and look at where they part ways.</p><p>I run most panels on open-weight models because proprietary models behind API calls can change over time, and can't give repeatable answers if run elsewhere. Open weights models can be run locally with a fixed temperature and seed, and provide the same answers when run again in the same environment, making them suitable for collecting reproducible measurements. The model panel for the classification study includes one proprietary model, <a href="https://openai.com/index/gpt-4o-mini-advancing-cost-efficient-intelligence/">GPT-4o-mini</a>, because it's a very cheap, fast, and capable reference coder that also has good performance on Korean and Traditional Chinese, which are relevant for those projects. The panel for the term extraction below is fully open weights, however, and GPT-4o-mini is only one voice in a larger open panel.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B_01!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2436f8a-977d-48b9-88e8-763224d4941c_1600x936.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B_01!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2436f8a-977d-48b9-88e8-763224d4941c_1600x936.png 424w, https://substackcdn.com/image/fetch/$s_!B_01!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2436f8a-977d-48b9-88e8-763224d4941c_1600x936.png 848w, https://substackcdn.com/image/fetch/$s_!B_01!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2436f8a-977d-48b9-88e8-763224d4941c_1600x936.png 1272w, https://substackcdn.com/image/fetch/$s_!B_01!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2436f8a-977d-48b9-88e8-763224d4941c_1600x936.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!B_01!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2436f8a-977d-48b9-88e8-763224d4941c_1600x936.png" width="1456" height="852" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2436f8a-977d-48b9-88e8-763224d4941c_1600x936.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:852,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:244040,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://pixelsandpatterns.substack.com/i/203542307?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2436f8a-977d-48b9-88e8-763224d4941c_1600x936.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!B_01!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2436f8a-977d-48b9-88e8-763224d4941c_1600x936.png 424w, https://substackcdn.com/image/fetch/$s_!B_01!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2436f8a-977d-48b9-88e8-763224d4941c_1600x936.png 848w, https://substackcdn.com/image/fetch/$s_!B_01!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2436f8a-977d-48b9-88e8-763224d4941c_1600x936.png 1272w, https://substackcdn.com/image/fetch/$s_!B_01!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2436f8a-977d-48b9-88e8-763224d4941c_1600x936.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>An example of the method. One open-text response from a survey is read by six models that vote independently. The majority becomes the code, and the size of the majority is recorded as a reliability signal.</em></p><h2>Three ways to convene a council</h2><p>There are a few ways to use models in concert, and they aren't all after the same thing.</p><p><a href="https://openrouter.ai/blog/announcements/fusion-beats-frontier/">Fusion</a> is, I think, the production version of this. The way it works is that a set of models answer in parallel, then a judge model reviews the outputs and produces a structured summary of consensus, disagreements, and missed items, then a calling model uses that summary to produce the final answer. It&#8217;s designed to optimize for answer quality at a given cost, but is not intended as a drop-in replacement. It is intended for cases where asking for multiple perspectives is valuable. The models often do come to different conclusions, but these differences are resolved in a way that is not exposed to the user.</p><p>Sakana AI&#8217;s <a href="https://sakana.ai/fugu-release/">Fugu</a> uses a similar approach, with a trained orchestration model that selectively delegates work to its pool of agent models, verifying and synthesizing their results into the final answer. All this multi-model coordination happens under the hood, exposed to you as a single model API.</p><p>There are also two other related projects that I found from the computer and political science angle. First, there is Andrej Karpathy's <a href="https://github.com/karpathy/llm-council">llm-council</a>, where multiple language models answer a question, then rate each other's answers while hiding the identity of the model, and then the "chairman" model answers the question using the ranked answers. And then there is Andrew Hall's <a href="https://github.com/andybhall/llm-council-governance">llm-council-governance</a>, which studies how the "decision rule" affects the outcome. He tries out 7 different governance rules, such as majority voting or deliberate then vote, using problems with known answers. The best performing governance structure was deliberate then vote, with an accuracy of 80.9%, compared to 71.7% for the strongest individual language model. There is also the more "academic" <a href="https://arxiv.org/abs/2406.08598">Language Model Council</a>, where 20 language models write tests, answer them, and grade each other's answers. The authors show that the models can rank each other in a way that is more closely aligned with human rankings than any individual model.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vWqz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b4ed4e-4598-4fe0-bfb2-208473ab0ad6_2160x1200.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vWqz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b4ed4e-4598-4fe0-bfb2-208473ab0ad6_2160x1200.png 424w, https://substackcdn.com/image/fetch/$s_!vWqz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b4ed4e-4598-4fe0-bfb2-208473ab0ad6_2160x1200.png 848w, https://substackcdn.com/image/fetch/$s_!vWqz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b4ed4e-4598-4fe0-bfb2-208473ab0ad6_2160x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!vWqz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b4ed4e-4598-4fe0-bfb2-208473ab0ad6_2160x1200.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!vWqz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b4ed4e-4598-4fe0-bfb2-208473ab0ad6_2160x1200.png" width="1456" height="809" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30b4ed4e-4598-4fe0-bfb2-208473ab0ad6_2160x1200.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:809,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:292561,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://pixelsandpatterns.substack.com/i/203542307?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b4ed4e-4598-4fe0-bfb2-208473ab0ad6_2160x1200.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vWqz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b4ed4e-4598-4fe0-bfb2-208473ab0ad6_2160x1200.png 424w, https://substackcdn.com/image/fetch/$s_!vWqz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b4ed4e-4598-4fe0-bfb2-208473ab0ad6_2160x1200.png 848w, https://substackcdn.com/image/fetch/$s_!vWqz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b4ed4e-4598-4fe0-bfb2-208473ab0ad6_2160x1200.png 1272w, https://substackcdn.com/image/fetch/$s_!vWqz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30b4ed4e-4598-4fe0-bfb2-208473ab0ad6_2160x1200.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Three ways to wire a panel of models. All draw on the same lineage. They differ in what they do with the disagreement.</em></p><p>These are similar enough that the models involved in the respective lineups overlap. Hall asks a council of Qwen, Llama, Gemma, and Mistral, and the panel that classifies below includes Qwen, Llama, and Gemma, along with three other models. But where this differs is that for Fusion and the councils, the ultimate goal is to distill the panel&#8217;s answers down to a single one, and in Hall&#8217;s case the best approach (deliberate then vote) is the one that produces the best single answer. In contrast, here I want to retain the spread of answers, because the spread is what I&#8217;m measuring. I view each model as a coder who is assigning a label to an observation, and I want to know if the coders agree or disagree, and how uncertain each coder might be.</p><h2>Application one: classification</h2><p>I will begin with classification. It is tied to a working paper I am writing titled &#8220;<a href="https://github.com/scdenney/what-were-they-thinking">What Were They Thinking?</a>&#8221; where I seek to find a way to use open-ended text (usually collected only as a manipulation check) to validate the constructs in a conjoint experiment. A conjoint tells you what respondents chose, but rarely whether they reasoned about it the way the design assumes, so I added the open-ended prompt &#8220;Why did you choose this person?&#8221; after the conjoint task. What I have are about 4,000 short answers from conjoint experiments on <a href="https://github.com/scdenney/cues-east-asia">naturalization priorities</a>. I have two corpora, one in Korean (South Korea) and the other in Traditional Chinese (Taiwan). My codebook contains 5 codes, including a &#8220;none of the above&#8221; code, and the codes focus on civic commitment, functional integration, economic focus, and identity concerns.</p><p>I code every answer with 6 LLMs: GPT-4o-mini, and five local <a href="https://ollama.com/">Ollama</a> models (<a href="https://qwenlm.github.io/blog/qwen2.5/">Qwen 2.5</a> 3B, 32B, 72B, <a href="https://ai.meta.com/blog/meta-llama-3-1/">Llama 3.1</a> 8B, <a href="https://ai.google.dev/gemma">Gemma 3</a> 12B). I assign a classification when at least four of the LLMs agree on that classification. It gives a Fleiss' kappa of ~0.74, which in content analysis terms is "substantial" agreement. Moreover, when more of the LLMs agree on a classification, each LLM is more confident in that classification - so when all six LLMs agree on a classification, it's probably safe to trust that classification. I deal separately with cases where the LLMs split 3-3 (either by human coding or some other way).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JaTI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78850d85-a963-4166-82c1-41df79a374c6_1920x1120.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JaTI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78850d85-a963-4166-82c1-41df79a374c6_1920x1120.png 424w, https://substackcdn.com/image/fetch/$s_!JaTI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78850d85-a963-4166-82c1-41df79a374c6_1920x1120.png 848w, https://substackcdn.com/image/fetch/$s_!JaTI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78850d85-a963-4166-82c1-41df79a374c6_1920x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!JaTI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78850d85-a963-4166-82c1-41df79a374c6_1920x1120.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!JaTI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78850d85-a963-4166-82c1-41df79a374c6_1920x1120.png" width="1456" height="849" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78850d85-a963-4166-82c1-41df79a374c6_1920x1120.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:849,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:100849,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://pixelsandpatterns.substack.com/i/203542307?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78850d85-a963-4166-82c1-41df79a374c6_1920x1120.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JaTI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78850d85-a963-4166-82c1-41df79a374c6_1920x1120.png 424w, https://substackcdn.com/image/fetch/$s_!JaTI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78850d85-a963-4166-82c1-41df79a374c6_1920x1120.png 848w, https://substackcdn.com/image/fetch/$s_!JaTI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78850d85-a963-4166-82c1-41df79a374c6_1920x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!JaTI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78850d85-a963-4166-82c1-41df79a374c6_1920x1120.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>As more of the six models agree on a code, each model is also individually more confident in it. Most answers sit at high agreement. The split cases are the ones worth reviewing manually.</em></p><p>Two things make this more than a cost-saving trick. First, scale. Coding 4,000 answers to publishable standards, in multiple languages, with two trained coders and an adjudication protocol, would be a major project, and the next survey would be another one. It took the panel of models an afternoon to code the entire corpus. It could be done again, if set up to be replicable, and if the codebook is revised, with no trouble at all. It scales.</p><p>Second is quality. Rather than thinking of the models as a cheap way to essentially replicate the work of a human coder, think of them as a fast way to have someone reason through a particular answer to a particular question, given a particular context, in this case, a relatively short one. I did look at the ones where there was actual ground truth in the form of human coders and the panel disagreed, and usually I thought the label the model produced was the more appropriate one.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> Others have found similar results: check out the work by <a href="https://osf.io/preprints/socarxiv/zr5vf_v1">Ryan Briggs and others</a> where they use language models to extract a lot of validated data from ~100,000 political science articles.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p><p>I do want to note that not every disagreement is the model's mistake. Some show where the codebook could be clearer, and those are the useful ones to look at. You're ultimately tuning the codebook, and if your goal is accuracy, you should make sure the panel roughly matches whatever ground truth you have (i.e., human codes). When I first ran this, I got fair agreement with the human codes; looking through a batch of those, I saw that the models were following the codebook definitions for two categories, but those definitions didn't match what I had in mind (one too specific, a residual category too general). I updated the codebook definitions and re-ran the panel a couple times, and I was able to get agreement between the panel and the human codes from fair (kappa = 0.40) to substantial (kappa = 0.67), which is a bigger improvement than I got from switching models. Remember, the model is the coder, so you're essentially calibrating your coder with the codebook against however many human codes you have, and that is where most of the accuracy comes from.</p><h2>Application two: finding the words that matter</h2><p>Second, I will discuss a slightly different approach to using multiple LLMs. In <a href="https://scdenney.net/research/">Constructing the Nation</a> (with <a href="https://aronvandepol.com/">Aron van de Pol</a>) we examine how the representations of national identity in South Korean history textbooks have changed over the postwar period. However, in this project, there is no codebook that we apply. This is because the categories that we want to code for are the quantity of interest. Thus, we need to identify the words that represent national identity in the corpus, and then how the use of these words has changed over time.</p><p>If someone wanted to extract terms, or concepts, or even just words from a corpus, the standard method would be to use a topic model. And the standard topic model to use would be <a href="https://www.jmlr.org/papers/v3/blei03a.html">Latent Dirichlet Allocation</a>. LDA, though, treats each document as a bag of words. It works by grouping words that appear together in documents. It&#8217;s very fast, and it doesn&#8217;t need supervised data, but it doesn&#8217;t take context into account at all. That can be a problem if the meaning of a word (especially if it&#8217;s a word like <em>minjok</em>, meaning something like nation or ethnos) depends a lot on the context it appears in, which is very often the case in the long, discursive chapters of the textbooks I&#8217;m working with.</p><p>Another approach using LLMs that I tried consisted of reading long parts of the corpus with 4 diverse LLMs and then asking them to propose terms associated with identity. If at least 3 of them proposed a term, then this term was added to a set of terms, if and only if it passed a frequency and semantic similarity test on the corpus. The 4 LLMs chosen were from 4 different countries in order to maximize their diversity. They were <a href="https://huggingface.co/LGAI-EXAONE">EXAONE</a> (Korea), <a href="https://cohere.com/research/aya">Aya Expanse</a> (Canada), Qwen (China), and Gemma (USA). This method found 9 terms that defined identity.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x1te!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe1c61d0-87a8-4bf9-84a1-68c75505d310_1920x1120.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x1te!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe1c61d0-87a8-4bf9-84a1-68c75505d310_1920x1120.png 424w, https://substackcdn.com/image/fetch/$s_!x1te!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe1c61d0-87a8-4bf9-84a1-68c75505d310_1920x1120.png 848w, https://substackcdn.com/image/fetch/$s_!x1te!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe1c61d0-87a8-4bf9-84a1-68c75505d310_1920x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!x1te!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe1c61d0-87a8-4bf9-84a1-68c75505d310_1920x1120.png 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!x1te!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe1c61d0-87a8-4bf9-84a1-68c75505d310_1920x1120.png" width="1456" height="849" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe1c61d0-87a8-4bf9-84a1-68c75505d310_1920x1120.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:849,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:91605,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://pixelsandpatterns.substack.com/i/203542307?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe1c61d0-87a8-4bf9-84a1-68c75505d310_1920x1120.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x1te!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe1c61d0-87a8-4bf9-84a1-68c75505d310_1920x1120.png 424w, https://substackcdn.com/image/fetch/$s_!x1te!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe1c61d0-87a8-4bf9-84a1-68c75505d310_1920x1120.png 848w, https://substackcdn.com/image/fetch/$s_!x1te!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe1c61d0-87a8-4bf9-84a1-68c75505d310_1920x1120.png 1272w, https://substackcdn.com/image/fetch/$s_!x1te!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe1c61d0-87a8-4bf9-84a1-68c75505d310_1920x1120.png 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Of the nine terms the four-model consensus defines, an embedding-based topic model identifies all nine, while classic LDA identifies five. Context-aware methods find terms that bag-of-words co-occurrence misses.</em></p><p>To check, we ran <a href="https://maartengr.github.io/BERTopic/">BERTopic</a>, a topic modeling technique based on embeddings, and which, unlike a bag of words approach, does read the context of words. BERTopic also found all 9 terms, and with far fewer edge cases. In fairness, BERTopic does not read the whole textbook: the embedding model it uses only reads short passages at a time, because it can only handle a limited number of tokens at once.</p><p>An LLM hits the same limit, just a bigger one. If you were to copy an entire book into the LLM it would either reject the prompt or cut it down because it would be too long. But its window is wider, so it can read more context around a term. It can also read documents in large batches with overlap to cover the entire document.</p><p>As a side note, the &#8216;Classic&#8217; LDA only finds 5 terms. The panel of LLMs does what topic modeling should be doing, finding the &#8216;important&#8217; terms in a corpus. They do this in the context of the passage, whereas classic topic modeling only looks at word occurrence. For a corpus of long documents, this makes a big difference.</p><h2>What LLM voting does and does not measure</h2><p>A few caveats: this is just measuring inter-model agreement, not validity, and this is not a well-calibrated uncertainty estimate. The models are not independent (they are likely trained on a lot of the same data), so the guarantees of the Condorcet jury theorem don&#8217;t apply. If anything, I&#8217;d interpret this as a measure of inter-coder consistency between non-independent coders. (So, I&#8217;d expect 9 models to be less informative than 9 humans, for instance.)<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></p><p>That&#8217;s worth remarking on, but I don&#8217;t think it&#8217;s the main thing here. Relative to the one set of human-adjudicated codes I had (a separate corpus, about entrepreneurs in North Korea, not the above), the models agreed with the humans quite a bit (not as much as the humans agreed with each other, but still a lot; and in the cases where the models and the humans disagreed, I usually sided with the model). The limit does impose a decent bit of discipline, though. If you can, I&#8217;d recommend including some human-coded ground truth, even if just for a few hundred cases, in any given project. If you want within-model confidence, you should probably derive that from the model&#8217;s token probabilities (i.e. its predictive distribution) rather than from the agreement count or the model&#8217;s self-reported confidence.</p><p>This last point is important, because if the language model is used as a substitute for a coder, its uncertainty should be handled like a coder&#8217;s. Even if the codebook is fixed and the temperature is zero, the language model will be more or less certain about its classification choices. This shows up in the <a href="https://cookbook.openai.com/examples/using_logprobs">log probability</a> of the classification that the model chose, based on its predictive distribution for that classification. It is not the same as having the model also answer whether it is &#8220;HIGH&#8221; or &#8220;LOW&#8221; confidence in its classification choice, because that is simply another generated answer.</p><p>I am using log prob simply as a measure of uncertainty. It tells me how much probability the model assigned to the label it chose, according to its predictive distribution. The responses that are labeled, but with a low log prob, are what I am interested in looking at more closely. This is something that the panel does not give me. The log prob is a measure of how certain each of the models is, and the panel agreement is a measure of whether they are all making the same decision.</p><h2>Is it worth it</h2><p>It is, if the claim stays within the evidence. Here, I explored using a panel of open-weight models for research. Across two applications, it looks like this is a very useful tool. First, I show that a panel of open-weight models can classify texts just slightly worse than the agreement of human coders. This means that a panel can plausibly be used as a replacement for large numbers of human coders. Second, I show that a panel can also discover terms in a corpus; it outperforms standard bag-of-words topic models by leveraging contextual information to identify meaningful, defining terms. Taken together, these results illustrate the benefits of using open-weight, diverse panels of LLMs to ensure replicability and the value of analyzing disagreement.</p><p>A panel of LLMs can be better than a single LLM. However, when the LLMs agree, that doesn't mean they are right; it means the particular LLMs in the panel agree. The two only line up if the LLMs are both accurate and diverse. Despite this, I think it is worth building a panel and paying attention to where it disagrees. (Note that this approach still requires lots of human-in-the-loop, both pre and post LLM run, to refine the codebook and adjudicate cases.)</p><h2>Using Claude Code</h2><p>If you want to do something like this, the most relevant of my open-source <a href="https://github.com/scdenney/open-science-skills">Claude Code skills</a> (codifications of steps I follow when using agents, to improve how reliably I can get them to do things) are <em>model-council-voting</em> (for running a panel and seeing how they agree), <em>text-classification</em> (for designing and validating a codebook), and <em>llm-calibration-logprobs</em> (for getting the model&#8217;s confidence in each of its decisions, in terms of log probabilities of the tokens it emitted in making that decision).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.pixelsandpatterns.org/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.pixelsandpatterns.org/subscribe?"><span>Subscribe now</span></a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>The full classification panel is GPT-4o-mini plus five open-weight models run locally via <a href="https://ollama.com/">Ollama</a> at temperature zero with a fixed seed: <a href="https://qwenlm.github.io/blog/qwen2.5/">Qwen 2.5</a> (3B, 32B, 72B), <a href="https://ai.meta.com/blog/meta-llama-3-1/">Llama 3.1</a> (8B), and <a href="https://ai.google.dev/gemma">Gemma 3</a> (12B). The case for running open weights rather than depending on a proprietary API is reproducibility: API models drift between versions and cannot be rerun deterministically (Barrie et al. 2025). GPT-4o-mini earns its place as a reference coder on grounds of cost and strong multilingual performance, not authority, and agreement with it rises monotonically with open-model size (Qwen 2.5: 0.73 at 3B, 0.83 at 32B, 0.86 at 72B), which is a useful sanity check on the smaller models.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>The check comes from a separate corpus coding why North Korean entrepreneurs make the choices they do, where two trained humans coded every response. The two humans agree at kappa 0.88. Each model agrees with the humans at about 0.61 to 0.67, roughly what one would expect of a competent third coder. The models are also overconfident against human codes when their token probabilities are read as calibrated estimates (expected calibration error of 0.15 to 0.26, against 0.01 to 0.10 when scored against the panel&#8217;s own majority), which is the technical form of the point that agreement is not the same as accuracy.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Briggs, Mellon, and Arel-Bundock, <a href="https://osf.io/preprints/socarxiv/zr5vf_v1">&#8220;It must be very hard to publish null results&#8221;</a> (working paper). They code a large corpus of articles for whether results are null, using LLMs validated against human coding, and document a steep gap between the share of published abstracts reporting non-null results and the share reporting nulls.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>A recent study, <a href="https://arxiv.org/abs/2605.29800">&#8220;Nine Judges, Two Effective Votes: Correlated Errors Undermine LLM Evaluation Panels&#8221;</a> (Kohli 2026), estimates that a panel of nine frontier models from seven families carries only about two independent votes&#8217; worth of information, because the models tend to be wrong on the same items. The remedy is real diversity among the voters, which is the reason the term-discovery panel draws its four models from four different national labs.</p></div></div>]]></content:encoded></item></channel></rss>