<?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[Artificially Intelligent Analytics]]></title><description><![CDATA[I offer practical strategies to achieves success when using AI with data, and then I also research and discuss many more of my AI and data-related thoughts & analyses around different industries and trends.]]></description><link>https://kylechalmerslabs.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!Cl4H!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30ce63b3-52b5-48fe-b99f-74dcea703dc0_1024x1024.png</url><title>Artificially Intelligent Analytics</title><link>https://kylechalmerslabs.substack.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 15 Jun 2026 16:49:36 GMT</lastBuildDate><atom:link href="https://kylechalmerslabs.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Kyle Chalmers]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[kylechalmers@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[kylechalmers@substack.com]]></itunes:email><itunes:name><![CDATA[Kyle Chalmers]]></itunes:name></itunes:owner><itunes:author><![CDATA[Kyle Chalmers]]></itunes:author><googleplay:owner><![CDATA[kylechalmers@substack.com]]></googleplay:owner><googleplay:email><![CDATA[kylechalmers@substack.com]]></googleplay:email><googleplay:author><![CDATA[Kyle Chalmers]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Scoping AI Access to a Data Warehouse Without Exposing Raw Sensitive Data]]></title><description><![CDATA[A practical setup, demonstrated on Snowflake but applicable to most data warehouses, where an AI agent runs real analytics but never reads the raw sensitive data]]></description><link>https://kylechalmerslabs.substack.com/p/scoping-ai-access-data-warehouse-pii</link><guid isPermaLink="false">https://kylechalmerslabs.substack.com/p/scoping-ai-access-data-warehouse-pii</guid><dc:creator><![CDATA[Kyle Chalmers]]></dc:creator><pubDate>Sun, 24 May 2026 14:31:09 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9810a5ae-484d-4e7e-ba6e-5d7e2542cd1d_1280x720.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When you connect an AI coding agent to a database, a quiet question sits underneath the setup. The agent can write SQL and read results, which is the point of connecting it. But what is it actually allowed to see, and where does that data go once it has been read?</p><p>A core goal of this piece is to protect the personally identifiable information (PII) and other sensitive company data that an AI agent could otherwise reach by default, and to reduce the risk that comes with that exposure. The question this piece investigates is whether an AI agent can run real analytics on company data without ever surfacing the raw customer PII behind it. While I utilize Snowflake in investigating this piece, this approach can be adapted for most other modern data warehouses.</p><h2>What you'll find here that wasn't in the YouTube video</h2><p>The YouTube video walks through the full build. This companion adds the research that did not fit in the runtime:</p><ul><li><p>Why a plain hash of an email or phone number is trivially reversed by a lookup or rainbow table, and how salting forces an attacker to brute-force each value individually.</p></li><li><p>When tokenization or dynamic data masking is stronger than hashing, and when it isn&#8217;t, given the maintenance overhead of mapping tables, key rotation, and governance that come with it.</p></li><li><p>Which risks a database-layer boundary actually mitigates and which it doesn&#8217;t, framed by a recent standards-body white paper on agent security.</p></li></ul><div id="youtube2-NJolk9KBn7c" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;NJolk9KBn7c&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/NJolk9KBn7c?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>What the default setup actually exposes</h2><p>Picture this: you connect Claude Code to your data warehouse using your personal user. It works. The agent can answer questions, write SQL, and pull back results. That is exactly the situation worth defining before building against it, because what it actually exposes can be broader than most may realize at the beginning. An AI agent connected through an MCP server (Model Context Protocol, the standard that lets a tool like Claude Code talk to a database) does not receive its own permissions. The same is true if you connect through a command-line tool like Claude Code itself, which is what most of my videos use. It authenticates as whatever role the connection uses. If that role is your personal analyst role, the agent inherits everything that role can see, and anything it reads enters the model&#8217;s context window, which is sent to the AI provider.</p><p>I will be honest that this is a mistake I made at first. When I connected Claude Code to Snowflake, the role I used had access to sensitive data, and in some ways that is exactly what makes the setup powerful. It can read everything and take action. The setup worked, which is exactly why it can take a while to notice the new risk exposure.</p><p>There is a useful frame for the underlying risk. Simon Willison, who helped coin the term prompt injection, describes what he calls the <a href="https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/">lethal trifecta</a>, a combination of an agent with access to private data, the ability to communicate externally, and exposure to untrusted content. A default database connection supplies the first leg of that on its own. The <a href="https://newsroom.ibm.com/2025-07-30-ibm-report-13-of-organizations-reported-breaches-of-ai-models-or-applications,-97-of-which-reported-lacking-proper-ai-access-controls">IBM Cost of a Data Breach Report 2025</a> found that, among the organizations it surveyed, 13% reported a breach of an AI model or application, and 97% of those lacked proper AI access controls. I walked through both of these in my last video, <a href="https://www.youtube.com/watch?v=BO0bktREPwQ">What Happens to Your Data When You Use AI</a>, if you want the longer threat-model context. Closing that access-control gap is what this setup is for.</p><h2>Three principles behind a scoped setup</h2><p>The build rests on three principles, and the rest of the work follows from them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZYPF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3b8837f-89ec-4ff2-a4a2-6cfa9dde1c46_5000x3648.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZYPF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3b8837f-89ec-4ff2-a4a2-6cfa9dde1c46_5000x3648.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZYPF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3b8837f-89ec-4ff2-a4a2-6cfa9dde1c46_5000x3648.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZYPF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3b8837f-89ec-4ff2-a4a2-6cfa9dde1c46_5000x3648.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZYPF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3b8837f-89ec-4ff2-a4a2-6cfa9dde1c46_5000x3648.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZYPF!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3b8837f-89ec-4ff2-a4a2-6cfa9dde1c46_5000x3648.jpeg" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a3b8837f-89ec-4ff2-a4a2-6cfa9dde1c46_5000x3648.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram of Snowflake layered security for AI agents, from PROD.RAW through the masking transform to PROD.CURATED&quot;,&quot;title&quot;:&quot;Visual 1: raw PII stays in PROD.RAW, the masking transform hashes and drops columns, and only the curated schema reaches the AI agent&quot;,&quot;type&quot;:&quot;captionedImage&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="Diagram of Snowflake layered security for AI agents, from PROD.RAW through the masking transform to PROD.CURATED" title="Visual 1: raw PII stays in PROD.RAW, the masking transform hashes and drops columns, and only the curated schema reaches the AI agent" srcset="https://substackcdn.com/image/fetch/$s_!ZYPF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3b8837f-89ec-4ff2-a4a2-6cfa9dde1c46_5000x3648.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZYPF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3b8837f-89ec-4ff2-a4a2-6cfa9dde1c46_5000x3648.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZYPF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3b8837f-89ec-4ff2-a4a2-6cfa9dde1c46_5000x3648.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZYPF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3b8837f-89ec-4ff2-a4a2-6cfa9dde1c46_5000x3648.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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">Visual 1: raw PII stays in PROD.RAW, the masking transform hashes and drops columns, and only the curated schema reaches the AI agent</figcaption></figure></div><ol><li><p>The first is schema segregation. Sensitive data lives in its own schema, and the AI&#8217;s role is never granted USAGE on it, so it cannot reference those tables at all. The agent only sees a curated schema of views. This follows the same least-privilege pattern that Snowflake&#8217;s <a href="https://www.snowflake.com/en/developers/guides/getting-started-with-pii/">PII handling guidance</a> is built around, with the curated schema acting as the security boundary.</p></li><li><p>The second is what the video calls hashing as irreversibility (meaning you cannot run the hash backwards to recover the email), though in practice it is closer to pseudonymization. Sometimes the agent still needs a PII column in order to join, group, or deduplicate. Running it through a hashing function like SHA-256 replaces the value with a fixed string, which is strong protection but, as the next section shows, not absolute. The useful property, shown in the diagram above, is that the agent can still join customers on a hashed email without ever resolving the real one.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FUJS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa57127f3-4f91-4608-b426-1341e2b93b0d_6480x4248.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FUJS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa57127f3-4f91-4608-b426-1341e2b93b0d_6480x4248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FUJS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa57127f3-4f91-4608-b426-1341e2b93b0d_6480x4248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FUJS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa57127f3-4f91-4608-b426-1341e2b93b0d_6480x4248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FUJS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa57127f3-4f91-4608-b426-1341e2b93b0d_6480x4248.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FUJS!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa57127f3-4f91-4608-b426-1341e2b93b0d_6480x4248.jpeg" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a57127f3-4f91-4608-b426-1341e2b93b0d_6480x4248.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram of three Snowflake AI identity patterns: personal user, per-human AI user, shared service user&quot;,&quot;title&quot;:&quot;Visual 2: three Snowflake identity patterns, where what the AI authenticates as sets the ceiling on what it can reach&quot;,&quot;type&quot;:&quot;captionedImage&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="Diagram of three Snowflake AI identity patterns: personal user, per-human AI user, shared service user" title="Visual 2: three Snowflake identity patterns, where what the AI authenticates as sets the ceiling on what it can reach" srcset="https://substackcdn.com/image/fetch/$s_!FUJS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa57127f3-4f91-4608-b426-1341e2b93b0d_6480x4248.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FUJS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa57127f3-4f91-4608-b426-1341e2b93b0d_6480x4248.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FUJS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa57127f3-4f91-4608-b426-1341e2b93b0d_6480x4248.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FUJS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa57127f3-4f91-4608-b426-1341e2b93b0d_6480x4248.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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">Visual 2: three Snowflake identity patterns, where what the AI authenticates as sets the ceiling on what it can reach</figcaption></figure></div></li><li><p>The third principle is identity selection, and it is the one easiest to underweight. Since a 2024 change, a Snowflake user whose secondary roles were left unset has every granted role active in every session, so setting a restrictive default role does not actually restrict anything for that user. The real boundary is the user&#8217;s full grant list. The cleaner approach, shown above as the middle pattern, is a dedicated AI user that has only the scoped agent role granted to it. If there is nothing else on the user, there is nothing else to inherit.</p></li></ol><h2>Why hashing alone is not enough</h2><p>That second principle, making PII unreadable to the agent, needs more than a plain hash function, which is what this section is about. A plain hash of a predictable value is reversible in practice. Email addresses follow common patterns, so someone can hash a dictionary of likely addresses and match the results against a hashed column. The fix shown in the video is per-row salting, where each value is combined with a random string from a separate keys table before hashing, which makes that dictionary attack fail.</p><p>Here is the part the video does not get into. Salting improves the engineering, but it does not change the legal classification. Hashing is <a href="https://louder.com.au/2023/10/12/hashed-pii-is-pii/">pseudonymization rather than anonymization</a>. Under frameworks like GDPR, pseudonymized data is still personal data, because a link back to a person still exists somewhere.</p><p>Salting also interacts with joins, and the tradeoff is worth being precise about. An unsalted hash is deterministic, so the same email hashes to the same value everywhere and joins work globally. A salt defeats the dictionary attack, but a join then only works where the same salt reaches the same value. The video&#8217;s per-customer salt keys table keeps each customer&#8217;s hash stable, which covers customer-keyed analytics. The salt-plus-SHA-256 approach used in the build is enough for that case. A stronger production option for joining a value across tables is HMAC (Hash-based Message Authentication Code), a keyed hash that combines a secret key with the value being hashed. Without the key, the hash cannot be reproduced, which defeats the dictionary attack while still preserving the join. For a column the agent never joins on, dropping it is simpler, and where the value still has to exist somewhere, <a href="https://www.skyflow.com/product/pii-data-privacy-vault">tokenization through a separate data privacy vault</a> is the stronger pattern, since the sensitive value is isolated entirely and downstream systems hold only a token.</p><h2>Where this build stops</h2><p>The queries the video runs after the protective layer is in place are deliberately stopped from working. Either the underlying tables are not reachable from the AI user at all, or the request returns data that is properly hidden.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sgxK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875deacf-a48f-4edb-9454-3555df34a688_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sgxK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875deacf-a48f-4edb-9454-3555df34a688_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sgxK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875deacf-a48f-4edb-9454-3555df34a688_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sgxK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875deacf-a48f-4edb-9454-3555df34a688_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sgxK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875deacf-a48f-4edb-9454-3555df34a688_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sgxK!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875deacf-a48f-4edb-9454-3555df34a688_1920x1080.jpeg" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/875deacf-a48f-4edb-9454-3555df34a688_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Claude Code terminal output reporting that raw-PII queries were blocked while masked views still returned rows&quot;,&quot;title&quot;:&quot;Visual 3: the agent's own report after the boundary test, raw-PII queries blocked while the masked views still return rows&quot;,&quot;type&quot;:&quot;captionedImage&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="Claude Code terminal output reporting that raw-PII queries were blocked while masked views still returned rows" title="Visual 3: the agent's own report after the boundary test, raw-PII queries blocked while the masked views still return rows" srcset="https://substackcdn.com/image/fetch/$s_!sgxK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875deacf-a48f-4edb-9454-3555df34a688_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sgxK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875deacf-a48f-4edb-9454-3555df34a688_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sgxK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875deacf-a48f-4edb-9454-3555df34a688_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sgxK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F875deacf-a48f-4edb-9454-3555df34a688_1920x1080.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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">Visual 3: from my video, the agent&#8217;s own report after the boundary test, raw-PII queries blocked while the masked views still return rows</figcaption></figure></div><p>It is worth being precise about what this does and does not do. This is a data-access boundary. It keeps raw values away from the agent and the provider. It does not address prompt injection, where an attacker tricks the agent into running a query it is technically allowed to run but should not.</p><p>A recent <a href="https://www.coalitionforsecureai.org/securing-the-ai-agent-revolution-a-practical-guide-to-mcp-security/">white paper from the Coalition for Secure AI</a> makes this point at the architectural level. Tool implementations, it argues, should not rely on the model to perform security-critical operations or enforce constraints. Enforcement has to live in the database, which is what schema segregation and a scoped role provide. Anthropic's own deputy chief information security officer, Jason Clinton, has <a href="https://fortune.com/article/anthropic-jason-clinton-ai-employees-a-year-away/">framed agent security in similar terms</a>, thinking in specific scopes and blast radius rather than a single decision to deploy or not.</p><p>There is also the question of what happens to data the agent legitimately reads. That is the focus of my previous video, <a href="https://www.youtube.com/watch?v=BO0bktREPwQ">What Happens to Your Data When You Use AI</a>, so please check it out there. The point that matters for this build is simpler. The scoped setup keeps sensitive data off that path regardless of a provider&#8217;s training or retention terms, because the agent never reads the raw values in the first place.</p><h2>Conclusion</h2><p>The real question this piece is asking is whether you can scope an AI agent&#8217;s access tightly enough that the agent does useful analytical work without becoming a new risk vector for raw customer PII. The argument here is that you can, provided the AI&#8217;s user is well segregated from any human user. So, can an AI agent run real analytics on company data without exposing raw customer PII? For a database-access boundary, the answer is yes, and the Snowflake build I show in the video gives it a concrete shape. The agent can still answer a question like churn rate by city against the masked views, while the raw values stay in a schema it cannot reach.</p><p>A few considerations if you are weighing your own setup:</p><ul><li><p>Identity is the single highest-impact change. Authenticate the agent as a user that holds only the scoped role; doing that first closes the secondary-role gap that a default role alone leaves open.</p></li><li><p>Treat hashing as a join-preserving tool, not as a privacy guarantee. Join-preserving means the same email always hashes to the same value, so the agent can still join <code>purchases</code> to <code>customers</code> on a masked email column without ever resolving the underlying value.</p></li><li><p>Prefer dropping or tokenizing columns the agent never needs to join on.</p></li><li><p>With a per-row salt added, the hash for any individual value is not literally impossible to reverse, but it is so much harder that, for any realistic attacker, the practical privacy is effectively guaranteed.</p></li></ul><p>This is one layer, and it is a good foundation. There is more to securing your data beyond this (key management, audit logging, row-level access), and those are topics for another article.</p><p>Thanks for reading. If you have wired an AI tool into your own data warehouse, I would love to hear how you are handling this. Leave a comment below.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://kylechalmerslabs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading this newsletter!
            Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><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><em>If you want to get in touch, feel free to reach out through my company site: </em><a href="https://kclabs.ai/contact">KC Labs</a>.</p><p><em>Disclosure: Some of this article was drafted and edited with the help of AI as a writing partner. I review and edit every piece personally before it goes out.</em></p></div></div>]]></content:encoded></item><item><title><![CDATA[What AI Tools Actually Do With Your Data]]></title><description><![CDATA[A walk through what seven AI tools do with your data at each plan tier, and what you should do to understand how your data is being used and how you can discern what data to send to which platforms.]]></description><link>https://kylechalmerslabs.substack.com/p/ai-tool-privacy-tiers-what-happens-to-your-data</link><guid isPermaLink="false">https://kylechalmerslabs.substack.com/p/ai-tool-privacy-tiers-what-happens-to-your-data</guid><dc:creator><![CDATA[Kyle Chalmers]]></dc:creator><pubDate>Wed, 13 May 2026 14:01:49 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/6600d29b-8fb0-4124-9599-da99c5dfb143_1280x720.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hello everyone! This is the first iteration for these companion pieces that I plan to write for my YouTube channel, which aim to be a written material that enrich each video's topic with additional research from the production process that did not make the final cut. These pieces are collaborations between myself and AI, as I write significant portions of the article, but I do utilize AI to help me enrich the drafting process utilizing the video transcript and research conducted prior to the video&#8217;s filming. I do personally review and edit every piece before it is published. While this piece is connected to a video, I may also occasionally publish independent pieces on this Substack that are not tied to a video.</em></p><div><hr></div><p>The privacy policies that govern what AI tools do with your data have changed substantially over the past year. The most-used consumer tiers now train on user inputs by default. Retention windows have expanded. The opt-out mechanisms vary by tool, by tier, and by setting. Examining the policies for seven commonly used AI tools left me with a more nuanced view of what "private" means in this context, and a different criteria for what I send to which tool. The question this piece investigates: when AI privacy rules have shifted, what is the current state of each tool relative to data it is fed, and how do you decide what is safe to share?</p><h2>What you'll find here that wasn't in the YouTube video</h2><ul><li><p>A closer look at how AI-assisted code commits affect secret leakage, drawing on GitGuardian's 2026 State of Secrets Sprawl report.</p></li><li><p>There is now industry signal that this sensitive information disclosure risk is now near the top of the priority list. The Open Worldwide Application Security Project (OWASP) Top 10 for LLM Applications 2025 elevated Sensitive Information Disclosure to the #2 position in its security vulnerabilities list. </p></li><li><p>I discuss IBM's Cost of a Data Breach data on Shadow AI, which has hard numbers around the cost when employees use AI tools without policy oversight.</p></li><li><p>A personal example of an early credential mistake I made and what it taught me about cycling secrets.</p></li></ul><div id="youtube2-BO0bktREPwQ" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;BO0bktREPwQ&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/BO0bktREPwQ?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><h2>Why these policies matter</h2><p>Many of the major AI providers have changed their data handling defaults in the eight months leading up to the writing of this article. The changes worth knowing:</p><ul><li><p><strong>April 24, 2026.</strong> <a href="https://github.blog/news-insights/company-news/updates-to-github-copilot-interaction-data-usage-policy/">GitHub Copilot began training on Free, Pro, and Pro+ users' code by default</a>. The community thread on the announcement is sitting at 291 downvotes, and GitHub has not responded post-rollout (<a href="https://github.com/orgs/community/discussions/188488">GitHub Community Discussion #188488</a>).</p></li><li><p><strong>September 2025.</strong> Anthropic changed Claude's consumer terms so that <a href="https://www.anthropic.com/news/updates-to-our-consumer-terms">training is enabled by default unless you opt out</a>, with retention extending from 30 days to up to five years for accounts that allow training.</p></li><li><p><strong>August 2025.</strong> Google began <a href="https://support.google.com/gemini/answer/13594961">using Gemini uploads for training by default</a>, forcing users to opt out.</p></li></ul><p>The behavioral context is also worth noting:</p><ul><li><p>39.7% of all AI interactions involve sensitive data (<a href="https://www.cyberhaven.com/blog/sensitive-data-flowing-into-ai-tools">Cyberhaven 2026</a>)</p></li><li><p>77% of employees have pasted company information into AI tools (<a href="https://go.layerxsecurity.com/the-layerx-enterprise-ai-saas-data-security-report-2025">LayerX 2025</a>)</p></li><li><p>64% of people worry about sharing sensitive info with AI, and roughly half admit to doing it anyway (<a href="https://newsroom.cisco.com/c/r/newsroom/en/us/a/y2025/m04/cisco-2025-data-privacy-benchmark-study-privacy-landscape-grows-increasingly-complex-in-the-age-of-ai.html">Cisco 2025 Data Privacy Benchmark</a>)</p></li><li><p>The Stanford 2026 AI Index documented 362 AI incidents in 2025, up from 233 the year before (<a href="https://aiindex.stanford.edu/report/">Stanford HAI 2026</a>)</p></li></ul><h2>Your prompt is the tip of the iceberg</h2><p>When you send a fifty-word prompt to a coding agent, the model rarely sees only those fifty words. It receives the full context window, which includes the prompt itself, plus file contents read from disk, environment variables, tool outputs, conversation history, and project structure.</p><p>A typical Claude Code session that begins with "fix this bug" in a project of moderate size, with a few dozen source files, a config or two, and a session that has run for ten minutes, transmits something like the following when you press enter:</p><pre><code>[ system prompt        ] ~2,000 tokens   tool definitions, model instructions
[ project tree         ] ~500 tokens     directory structure visible to the agent
[ open files           ] ~1,500 tokens   currently open editor buffers
[ relevant source      ] ~3,000 tokens   files Claude reads via the Read tool
[ environment context  ] variable        .env contents, package.json, lock files
[ tool outputs         ] variable        terminal output from any command run
[ conversation history ] ~2,000 tokens   prior turns in the session
[ your actual prompt   ] ~50 tokens      what you typed
&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;
total                    ~9,000+ tokens  what is transmitted to the provider</code></pre><p>The token counts are illustrative rather than exact, and will vary with project size, conversation length, and how aggressive the agent is about reading files. The point is that your prompt is one part of what gets sent, and it is usually not the largest part.</p><p>AI agents read files directly from your filesystem, and Knostic documented multiple cases of coding agents reading <code>.env</code> files <a href="https://www.knostic.ai/blog/claude-loads-secrets-without-permission">without explicit permission</a>. If the file exists in the working directory and the agent has read access, the agent can include it in the context window. Even when users have <code>.gitignore</code> configured, which tells git what files not to commit, AI tools will still read those files since they are on your computer.</p><p>Here is a small personal example. As I was still learning how to utilize AI and set up external tool access, I inserted my username and password for a few tools directly into the interface. While not exactly equivalent to sharing those credentials elsewhere, the situation is akin to handing them to a coworker. It is more likely that nothing bad happens, but it is exposure to an otherwise unnecessary risk. That person, or service, now has your information, and the best insurance against being the root cause of a security issue is to cycle those credentials. I have changed credentials for a few different tools since beginning my AI journey.</p><p>This is more than anecdotal. GitGuardian's <a href="https://blog.gitguardian.com/the-state-of-secrets-sprawl-2026-pr/">State of Secrets Sprawl 2026</a> reports that 28.6 million secrets were leaked on public GitHub in 2025, an increase of 34% year over year, and that AI-service credential leaks specifically rose 81% in the same period. AI-assisted commits leak secrets at roughly 3.2% versus a 1.5% baseline. The pattern of inadvertent exposure is empirically measurable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yW7m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7add3bc4-a9cf-4b6b-8bf8-fba714d72a69_2752x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yW7m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7add3bc4-a9cf-4b6b-8bf8-fba714d72a69_2752x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yW7m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7add3bc4-a9cf-4b6b-8bf8-fba714d72a69_2752x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yW7m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7add3bc4-a9cf-4b6b-8bf8-fba714d72a69_2752x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yW7m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7add3bc4-a9cf-4b6b-8bf8-fba714d72a69_2752x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yW7m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7add3bc4-a9cf-4b6b-8bf8-fba714d72a69_2752x1536.jpeg" width="728" height="409.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7add3bc4-a9cf-4b6b-8bf8-fba714d72a69_2752x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Infographic showing a 50-word prompt next to a much larger 5,000+ word context window containing source files, env vars, tool outputs, and conversation history.&quot;,&quot;title&quot;:&quot;Visual 1: Hidden Payload, your prompt versus the full context window.&quot;,&quot;type&quot;:&quot;captionedImage&quot;,&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="Infographic showing a 50-word prompt next to a much larger 5,000+ word context window containing source files, env vars, tool outputs, and conversation history." title="Visual 1: Hidden Payload, your prompt versus the full context window." srcset="https://substackcdn.com/image/fetch/$s_!yW7m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7add3bc4-a9cf-4b6b-8bf8-fba714d72a69_2752x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yW7m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7add3bc4-a9cf-4b6b-8bf8-fba714d72a69_2752x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yW7m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7add3bc4-a9cf-4b6b-8bf8-fba714d72a69_2752x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yW7m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7add3bc4-a9cf-4b6b-8bf8-fba714d72a69_2752x1536.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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">Visual 1: Hidden Payload, your prompt versus the full context window</figcaption></figure></div><h2>What each tool actually does</h2><p>The same prompt takes a different journey depending on which tool you use and which tier you are on. Below is the full comparison, current as of late April 2026.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sRy1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aac23fc-5993-44fe-9218-e00fe28bc534_2752x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sRy1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aac23fc-5993-44fe-9218-e00fe28bc534_2752x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sRy1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aac23fc-5993-44fe-9218-e00fe28bc534_2752x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sRy1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aac23fc-5993-44fe-9218-e00fe28bc534_2752x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sRy1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aac23fc-5993-44fe-9218-e00fe28bc534_2752x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sRy1!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aac23fc-5993-44fe-9218-e00fe28bc534_2752x1536.jpeg" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3aac23fc-5993-44fe-9218-e00fe28bc534_2752x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Side-by-side comparison matrix showing how Claude, ChatGPT, Gemini, Microsoft Copilot, GitHub Copilot, and Cursor handle user data across plan tiers, with color-coded indicators for training, retention, and opt-out.&quot;,&quot;title&quot;:&quot;Visual 2: AI Tool Privacy Comparison Matrix.&quot;,&quot;type&quot;:&quot;captionedImage&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="Side-by-side comparison matrix showing how Claude, ChatGPT, Gemini, Microsoft Copilot, GitHub Copilot, and Cursor handle user data across plan tiers, with color-coded indicators for training, retention, and opt-out." title="Visual 2: AI Tool Privacy Comparison Matrix." srcset="https://substackcdn.com/image/fetch/$s_!sRy1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aac23fc-5993-44fe-9218-e00fe28bc534_2752x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!sRy1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aac23fc-5993-44fe-9218-e00fe28bc534_2752x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!sRy1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aac23fc-5993-44fe-9218-e00fe28bc534_2752x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!sRy1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aac23fc-5993-44fe-9218-e00fe28bc534_2752x1536.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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">Visual 2: AI Tool Privacy Comparison Matrix</figcaption></figure></div><p>A few details from the table that deserve calling out:</p><ul><li><p><strong>ChatGPT Team was renamed to ChatGPT Business on August 29, 2025.</strong> Same exclusion behavior under a new name (<a href="https://help.openai.com/en/articles/12111915">OpenAI rename FAQ</a>). If you remember the Team plan, this is it.</p></li><li><p><strong>Claude consumer accounts that allow training retain data up to five years</strong>, not the 30-day window many people assume. When Anthropic changed the consumer terms in September 2025, training became opt-out by default and the retention window expanded with it. The 30-day window applies if you opt out, or if you are on the API, Team, or Enterprise tier.</p></li><li><p><strong>Codex CLI's data behavior follows the authentication method, not the binary.</strong> <a href="https://developers.openai.com/codex/security">Codex CLI</a> is OpenAI's sandboxed command-line coding agent that talks to OpenAI's API. Authenticate it with an API key or a Business/Enterprise ChatGPT login, and your sessions are excluded from training. Authenticate with a personal Free/Plus/Pro account, and that account's policy applies.</p></li><li><p><strong>A note on free tools and discounts.</strong> With many free or discounted AI services, there can be a tradeoff in the data you exchange for the price. <a href="https://openrouter.ai/docs/guides/privacy/data-collection">OpenRouter</a> is a model-routing gateway: it sits between your application and the actual provider's API. By default, OpenRouter does not log prompts or completions. But its optional Data Discount Logging grants OpenRouter a worldwide, perpetual, irrevocable, royalty-free commercial license to your inputs and outputs in exchange for a 1% discount on model usage. Separately, <a href="https://opencode.ai/legal/privacy-policy">OpenCode</a> is an open-source coding agent that uses your own provider API key directly. The policies of whichever provider you point it at govern the data, so the agent itself is closer to a passthrough.</p></li></ul><h2>Two main levels of protection</h2><p>I went into this with the assumption that "I opted out of training" was the same as "my data is safe." Examining the policies clarified what "opting out" actually provides.</p><p>There are two main levels of data protection on the market today:</p><ul><li><p><strong>Level 1: No training, with short-term retention.</strong> Your data is not used to improve the model, but it is stored briefly for abuse monitoring.</p><ul><li><p>OpenAI API retains data for 30 days</p></li><li><p>Anthropic API retains data for 30 days</p></li><li><p>Google Workspace retains data for 72 hours operationally</p></li><li><p>This is what most paid Business and Enterprise tiers offer by default, and what opting out of training on consumer tiers provides</p></li></ul></li><li><p><strong>Level 2: Zero Data Retention (ZDR).</strong> Your data is not recorded at all beyond the in-memory processing window.</p><ul><li><p>Available through enterprise contracts with <a href="https://privacy.claude.com/en/articles/8956058-i-have-a-zero-data-retention-agreement-with-anthropic-what-products-does-it-apply-to">Anthropic</a>, <a href="https://openai.com/enterprise-privacy/">OpenAI</a>, and Google Vertex AI</p></li><li><p>Built into specific products including GitHub Copilot Business for IDE completions and <a href="https://cursor.com/data-use">Cursor Privacy Mode</a></p></li></ul></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RH_R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e3555c2-92ec-4431-8e34-8431bc763ef0_1536x2752.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RH_R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e3555c2-92ec-4431-8e34-8431bc763ef0_1536x2752.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RH_R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e3555c2-92ec-4431-8e34-8431bc763ef0_1536x2752.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RH_R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e3555c2-92ec-4431-8e34-8431bc763ef0_1536x2752.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RH_R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e3555c2-92ec-4431-8e34-8431bc763ef0_1536x2752.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RH_R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e3555c2-92ec-4431-8e34-8431bc763ef0_1536x2752.jpeg" width="728" height="409.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e3555c2-92ec-4431-8e34-8431bc763ef0_1536x2752.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Infographic distinguishing Level 1 protection (no training, short-term retention) from Level 2 Zero Data Retention.&quot;,&quot;title&quot;:&quot;Visual 3: The Two Levels of AI Data Protection.&quot;,&quot;type&quot;:&quot;captionedImage&quot;,&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="Infographic distinguishing Level 1 protection (no training, short-term retention) from Level 2 Zero Data Retention." title="Visual 3: The Two Levels of AI Data Protection." srcset="https://substackcdn.com/image/fetch/$s_!RH_R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e3555c2-92ec-4431-8e34-8431bc763ef0_1536x2752.jpeg 424w, https://substackcdn.com/image/fetch/$s_!RH_R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e3555c2-92ec-4431-8e34-8431bc763ef0_1536x2752.jpeg 848w, https://substackcdn.com/image/fetch/$s_!RH_R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e3555c2-92ec-4431-8e34-8431bc763ef0_1536x2752.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!RH_R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e3555c2-92ec-4431-8e34-8431bc763ef0_1536x2752.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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">Visual 3: The Two Levels of AI Data Protection</figcaption></figure></div><h2>The personal-account question</h2><p>A finding from the <a href="https://go.layerxsecurity.com/the-layerx-enterprise-ai-saas-data-security-report-2025">LayerX 2025 Enterprise AI Security Report</a> is worth sitting with. 82% of employees who paste company data into AI tools do so through personal accounts. That is the gap between the policies a company has paid for and the policies that actually govern most of the AI traffic at that company. Your company's Enterprise agreement does not apply to your personal Claude or ChatGPT account, which is why understanding what you are sending and where is relevant in practice.</p><p>This often signifies a real tradeoff. Employees use outside AI tools because the company-provided tooling is constrained. Claude will outperform Microsoft Copilot on many tasks. The question becomes: "Am I putting my company at risk with this data?" or "What information do I need to make sure stays inside the protected environment and could put me and my company at risk if it escaped?" It is a conversation about tradeoffs: the risk-to-reward ratio of each interaction. And when the risk outweighs the reward, that information is best kept away from non-company AI.</p><h2>The counterargument</h2><p>The most common pushback on all of this is "the models are too big to memorize individual inputs, so even if they train on your data, it cannot be extracted." There is research that suggests otherwise.</p><p>A July 2025 paper from researchers at UC Berkeley and Google DeepMind, <a href="https://arxiv.org/html/2507.05578v1">*The Landscape of Memorization in LLMs*</a>, tested extraction rates on aligned models. Extraction success rates reached up to 18.8% on models specifically trained to refuse risky requests. When attackers used multi-step adversarial prompting instead of single queries, PII extraction success improved by roughly 5x. And counterintuitively, larger models memorize more, not less.</p><p>The legal precedent is also non-theoretical. The May 2025 court preservation order on OpenAI required OpenAI to preserve consumer ChatGPT logs that would otherwise have been deleted, as part of the <em>NYT v. OpenAI</em> copyright litigation. The forward-looking preservation requirement was relaxed in late September 2025, but the data captured under the original order remains under legal hold. Pasted content can be subpoenaed, preserved, and reviewed years after the fact, regardless of any product-level deletion controls.</p><p>The industry is recognizing the risk. The <a href="https://owasp.org/www-project-top-10-for-large-language-model-applications/">OWASP Top 10 for Large Language Model Applications 2025</a> elevated Sensitive Information Disclosure from #6 in the prior edition to #2, just below Prompt Injection, as the highest-priority risk categories for LLM applications. The cost data points in a similar direction. <a href="https://www.ibm.com/reports/data-breach">IBM's 2025 Cost of a Data Breach Report</a> found that breaches involving Shadow AI, defined as employee use of AI tools outside IT oversight, cost on average $4.63 million per incident, a $670,000 premium over the baseline. The exposure is being measured.</p><p>The point is that "the models can't remember your data" is not a defense the empirical research supports.</p><p>I want to be clear about my own position here. I remain a power user of AI on data work. The research and policy reading has not pushed me toward less AI usage. It has changed which tools I use for which kinds of data, and how I handle credentials and sensitive fields when AI is in the loop. I will continue to share that practical evolution in this Substack.</p><h2>A classification framework</h2><p>After reading the policies, I wanted a quick decision rule for what to share where. Rather than inventing one, I adapted a framework most security organizations already use, <a href="https://hightable.io/iso-27001-annex-a-5-12-classification-of-information/">ISO 27001 Annex A 5.12</a>, which is the international standard most security teams build their data handling policies around. The adaptation maps each classification level to a specific protection tier from the comparison above.</p><ul><li><p><strong>Public.</strong> Open-source code, public documentation, general questions:</p><ul><li><p>No sensitive data, so no risk regardless of tool or tier</p></li><li><p>Any tool, any plan</p></li></ul></li><li><p><strong>Internal.</strong> Internal code patterns, non-sensitive schemas, development workflows:</p><ul><li><p>Safe on paid plans where the training opt-out is confirmed (Level 1 protection or better)</p></li><li><p>Verify the toggle is actually on before treating a tool as Internal-safe</p></li></ul></li><li><p><strong>Confidential.</strong> Production database schemas, internal business logic, proprietary algorithms:</p><ul><li><p>Team, Business, or Enterprise plans with documented no-training agreements and short retention (Level 1 with contractual guarantees)</p></li><li><p>Personal Plus or Pro accounts do not qualify here</p></li></ul></li><li><p><strong>Restricted.</strong> PII, credentials, API keys, patient data, financial records:</p><ul><li><p>ZDR only (Level 2), or do not share directly</p></li><li><p>The "mask it or do not send it" category</p></li></ul></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x1Gz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b27895-0e8d-4a24-9734-5ae254f20893_2752x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x1Gz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b27895-0e8d-4a24-9734-5ae254f20893_2752x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x1Gz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b27895-0e8d-4a24-9734-5ae254f20893_2752x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x1Gz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b27895-0e8d-4a24-9734-5ae254f20893_2752x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x1Gz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b27895-0e8d-4a24-9734-5ae254f20893_2752x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x1Gz!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b27895-0e8d-4a24-9734-5ae254f20893_2752x1536.jpeg" width="1200" height="675" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6b27895-0e8d-4a24-9734-5ae254f20893_2752x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Four-tier data classification framework adapted from ISO 27001 Annex A 5.12, mapping Public, Internal, Confidential, and Restricted data categories to AI tool tiers and protection levels.&quot;,&quot;title&quot;:&quot;Visual 4: ISO 27001 Adapted for AI Tool Use.&quot;,&quot;type&quot;:&quot;captionedImage&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="Four-tier data classification framework adapted from ISO 27001 Annex A 5.12, mapping Public, Internal, Confidential, and Restricted data categories to AI tool tiers and protection levels." title="Visual 4: ISO 27001 Adapted for AI Tool Use." srcset="https://substackcdn.com/image/fetch/$s_!x1Gz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b27895-0e8d-4a24-9734-5ae254f20893_2752x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!x1Gz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b27895-0e8d-4a24-9734-5ae254f20893_2752x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!x1Gz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b27895-0e8d-4a24-9734-5ae254f20893_2752x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!x1Gz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6b27895-0e8d-4a24-9734-5ae254f20893_2752x1536.jpeg 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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">Visual 4: ISO 27001 Adapted for AI Tool Use</figcaption></figure></div><p>The framework is mine, not the standard. ISO 27001 itself is not AI-specific. But the labels travel well, and mapping them to specific tool and tier combinations gives a fast answer to "can I paste this here?" without re-reading three privacy policies every time the question comes up.</p><h2>Conclusion</h2><p>The question this piece set out to investigate was what actually happens to your data when you send it to an AI tool, and how to decide what is safe to share. The short answer from the policies is that it depends on the tool, the tier, and the setting, and the specifics matter more than most of us assumed. Paying does not equal private. Opting out of training is not the same as zero retention. A personal account does not inherit a company's plan. And the risk of memorization and retrieval is empirically measurable, not theoretical.</p><p>A few suggestions for what to take from here:</p><ol><li><p>Check which account you are signed in with for each tool you use. The data-handling rules follow the account, not the device or the workspace.</p></li><li><p>Verify your tier and where the training opt-out lives for each tool. The matrix above is the starting point.</p></li><li><p>Consider applying a classification rule to the data you share with AI. The four-level framework above is one option, and any consistent rule beats the absence of one.</p></li></ol><p>If a different framing of any of this would be useful, or if there is a tool or tier you would like covered in more depth, the comment section is open. I will be following the next two pieces in this series: one on safely connecting AI to company data, and one on keeping secrets out of AI tools entirely. I would welcome the conversation as they go up.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://kylechalmerslabs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading this newsletter!
            Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Why the Anthropic and Pentagon Standoff Concerns Me Professionally and Personally]]></title><description><![CDATA[President Trump instructed all federal agencies to stop utilizing Claude following its contract standoff with the Pentagon.]]></description><link>https://kylechalmerslabs.substack.com/p/why-the-anthropic-and-pentagon-standoff</link><guid isPermaLink="false">https://kylechalmerslabs.substack.com/p/why-the-anthropic-and-pentagon-standoff</guid><dc:creator><![CDATA[Kyle Chalmers]]></dc:creator><pubDate>Mon, 02 Mar 2026 17:02:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!XlsH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e79ed41-d4e6-485a-afb3-b47c31ce7a5f_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hello readers! I released this article on LinkedIn, hence the opening in the first paragraph, but I wanted to share this here as well given it is relevant to my content. <a href="https://www.linkedin.com/pulse/why-anthropic-pentagon-standoff-concerns-me-kyle-chalmers-x7sac/?trackingId=ULhT0IlRTDShjV3IFHbzqg%3D%3D">Here</a> is the LinkedIn post.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XlsH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e79ed41-d4e6-485a-afb3-b47c31ce7a5f_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XlsH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e79ed41-d4e6-485a-afb3-b47c31ce7a5f_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!XlsH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e79ed41-d4e6-485a-afb3-b47c31ce7a5f_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!XlsH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e79ed41-d4e6-485a-afb3-b47c31ce7a5f_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!XlsH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e79ed41-d4e6-485a-afb3-b47c31ce7a5f_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XlsH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e79ed41-d4e6-485a-afb3-b47c31ce7a5f_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0e79ed41-d4e6-485a-afb3-b47c31ce7a5f_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1047159,&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://kylechalmerslabs.substack.com/i/189611529?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e79ed41-d4e6-485a-afb3-b47c31ce7a5f_1280x720.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_!XlsH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e79ed41-d4e6-485a-afb3-b47c31ce7a5f_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!XlsH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e79ed41-d4e6-485a-afb3-b47c31ce7a5f_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!XlsH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e79ed41-d4e6-485a-afb3-b47c31ce7a5f_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!XlsH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e79ed41-d4e6-485a-afb3-b47c31ce7a5f_1280x720.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"><svg role="img" 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"><g><title></title><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"><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"><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><h3><strong>Why I&#8217;m Posting About This</strong></h3><p>While I&#8217;ve posted things that might be perceived as political in the past, generally speaking, I don&#8217;t really like utilizing LinkedIn as a platform for discussing specific political subjects. However, what is happening between <strong><a href="https://www.linkedin.com/company/anthropic/">Anthropic</a></strong> and the Pentagon is directly affecting something deeply integrated into my professional life. This feels like it goes beyond specific ideology, and is worthwhile to discuss here, especially when it appears that it is going to have a profoundly negative impact.</p><p>I&#8217;ve been working with Claude daily for 8+ months now and when I&#8217;ve compared it to other AI tools after trying them, it is clearly the best for what I do. It is now my primary tool to write SQL, analyze data, automate workflows, and serves as the basis for much of <strong><a href="https://www.youtube.com/channel/UCkRi29nXFxNBuPhjseoB6AQ">the content I produce on YouTube</a></strong>. It&#8217;s fundamentally central to how I work, and in my opinion, is the best AI tool on the market for businesses.</p><p>On February 27th, <strong><a href="https://www.cbsnews.com/news/trump-anthropic-ai-order-federal-agencies/">President Trump ordered all federal agencies to stop using Claude</a></strong> and on February 28th, Defense Secretary Pete Hegseth <strong><a href="https://www.cbsnews.com/news/hegseth-declares-anthropic-supply-chain-risk/">posted on X that he was designating Anthropic a &#8220;supply chain risk to national security.&#8221;</a></strong> That designation has <strong><a href="https://fortune.com/2026/02/28/openai-pentagon-deal-anthropic-designated-supply-chain-risk-unprecedented-action-damage-its-growth/">never been applied to an American company before</a></strong> and has been historically reserved for foreign adversaries. From what I know at this point, no formal Pentagon notice has been released outside of the posts on X, and I truly hope this ends up being an empty threat.</p><p>So why is this being done to one of the best US AI companies in what has appeared to be an extremely pro-AI acceleration administration?</p><h3><strong>The Reasons Behind This Story</strong></h3><p>The short version of the story is that Anthropic had a $200M contract with the Department of Defense and the Pentagon wanted unrestricted access to Claude &#8220;for all lawful purposes.&#8221; <strong><a href="https://www.washingtonpost.com/technology/2026/02/26/anthropic-pentagon-rejects-demand-claude/">Anthropic refused to remove two specific guardrails</a></strong>: no mass domestic surveillance of Americans, and no fully autonomous weapons without human involvement. When Anthropic held firm on both points past the <strong><a href="https://www.cnbc.com/2026/02/27/trump-anthropic-ai-pentagon.html">deadline the Pentagon gave them</a></strong>, Hegseth accused the company of <strong><a href="https://breakingdefense.com/2026/02/trump-orders-government-dod-to-immediately-cease-use-of-anthropics-tech-amid-ai-fight/">&#8220;corporate virtue-signaling that places Silicon Valley ideology above American lives&#8221;</a></strong> and President Trump ordered all military contractors to cut commercial ties.</p><p>The part I keep coming back to is that the same day this happened, <strong><a href="https://www.npr.org/2026/02/27/nx-s1-5729118/trump-anthropic-pentagon-openai-ai-weapons-ban">OpenAI signed a Pentagon deal</a></strong> with supposedly the same two safety conditions Anthropic got blacklisted for. Why does the same contract criteria land one AI company a massive contract and another AI company a supply chain risk designation? There does not seem to be a logical explanation other than an arbitrarily political one.</p><p>Anthropic has called the designation <strong><a href="https://thehill.com/policy/technology/5759929-pentagon-anthropic-supply-chain-risk/">&#8220;legally unsound&#8221;</a></strong> and will be <strong><a href="https://www.bloomberg.com/news/articles/2026-02-28/anthropic-to-challenge-any-supply-chain-risk-designation">challenging it in court</a></strong>. Whatever you think about the company specifically, this sets a dangerous precedent for how the government can essentially attempt to bend a company to its will and try to destroy its business if it does not comply, even one that is strategically aligned to its stated policy objectives. If this designation holds, every single contractor that works with the US government will be forced to no longer utilize Claude, severely damaging Anthropic.</p><h3><strong>How This May Affect Professionals</strong></h3><p>Beyond my personal alarm, this is very worrisome to me as a professional who builds real workflows around AI tools. I&#8217;ve spent almost every day integrating Claude into nearly everything I do professionally. If this designation holds and Anthropic takes a serious financial hit from losing government and contractor business, and has to survive under extreme government scrutiny, that affects the product I depend on, the company building it, the supposedly free market in which we exist, and the competitive pressure that pushes all AI tools to get better.</p><p>It will create unnecessary chaos for so many companies that utilize Claude, hurting economic progress and output for a seemingly reasonable moral and legal contractual objection, while rewarding other AI platforms with more capitulant behavior and fewer moral principles. For this reason, I sincerely hope Anthropic holds strong in its position, and that its non-capitulation to the administration inspires other companies to do the same, as it&#8217;s the better outcome for us as professionals and citizens.</p><div><hr></div><p>If you&#8217;re interested in learning more about this story, I&#8217;d encourage you to listen to my favorite tech podcast Hard Fork and <strong><a href="https://www.youtube.com/watch?v=Zj35mEtwUvY">their latest emergency episode</a></strong> about this. They do a great job breaking down what we know and don&#8217;t know, and the potential implications of this decision.</p>]]></content:encoded></item><item><title><![CDATA[From "The Analytics Campaign" to "Artificially Intelligent Analytics"]]></title><description><![CDATA[I'm shifting my focus to AI for data professionals and investing more in YouTube as my primary content medium.]]></description><link>https://kylechalmerslabs.substack.com/p/from-the-analytics-campaign-to-artificially</link><guid isPermaLink="false">https://kylechalmerslabs.substack.com/p/from-the-analytics-campaign-to-artificially</guid><dc:creator><![CDATA[Kyle Chalmers]]></dc:creator><pubDate>Mon, 09 Feb 2026 16:01:05 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/186827072/1a0f86087af8982ce378917f6c6a9b43.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Firstly, thank you to everyone for your support of this Substack. I&#8217;m very grateful for you all.</p><p>The main reason I&#8217;m posting this ~10 minute video update is to announce a change in the focus of my content. You might have noticed that I&#8217;ve changed the name of this Substack from &#8220;The Analytics Campaign&#8221; to &#8220;Artificially Intelligent Analytics.&#8221; That name change reflects a bigger shift: I&#8217;m now focused on how AI is reshaping the data profession.</p><p>To that end, I&#8217;ve started a <a href="https://www.youtube.com/channel/UCkRi29nXFxNBuPhjseoB6AQ">YouTube channel</a> where I&#8217;m regularly creating practical tutorials, tool deep dives, and research around how AI is changing the broader data industry. Even if you&#8217;re not a data professional but are just curious about data and AI, the channel might be useful and interesting for you. I explain the thesis in <a href="https://www.youtube.com/watch?v=NDR0tiJWWEA">the first video</a> I posted on the channel. Additionally, I&#8217;ve started <a href="https://kclabs.ai/">KC AI Labs</a> to help facilitate AI adoption and integration within other companies.</p><p>How did this change come about? A little over 9 months ago, I started experimenting more with AI in my day job and discovered how much it unlocked for me when I integrated it with my tools and day-to-day processes. Specifically, I was able to connect Claude Code to my Snowflake database and have it query and analyze data just like I would. That might sound mundane, but it was actually a profound moment for me. It made me realize how fundamentally AI was going to change the data world.</p><p>As I went looking for more content around leveraging AI, I noticed that the majority of what I was finding came from creators whose target audiences were in adjacent fields like software engineering. I didn&#8217;t find much content directly addressing data analytics, business intelligence, or data engineering, so I decided to hop in and fill that gap.</p><p>This post does not mean I&#8217;m done with Substack. Given the name change, my intention is to still write here with pieces around analytics and AI. However, my immediate focus will be on developing longer form video content, as I&#8217;ve found that medium to be the most effective for teaching and talking about data and AI.</p><p>I hope to see you back here on Substack soon, and even sooner on <a href="https://www.youtube.com/channel/UCkRi29nXFxNBuPhjseoB6AQ">my YouTube channel</a>.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Why Maricopa County’s Cast Vote Record Matters for Democracy ]]></title><description><![CDATA[Why Maricopa County&#8217;s shift away from making anonymized election data available to the public threatens election verification and democratic trust]]></description><link>https://kylechalmerslabs.substack.com/p/why-maricopa-countys-cast-vote-record</link><guid isPermaLink="false">https://kylechalmerslabs.substack.com/p/why-maricopa-countys-cast-vote-record</guid><dc:creator><![CDATA[Kyle Chalmers]]></dc:creator><pubDate>Mon, 05 Jan 2026 12:15:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wru0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>The Importance of the Cast Vote Record (CVR)</h2><p>In an era of intense political polarization and skepticism about our elections, the ability for citizens to independently verify results is not a luxury, but rather a core component of democratic trust. We must be able to see for ourselves how the votes add up, while still respecting <a href="https://en.wikipedia.org/wiki/Secret_ballot">the right to a secret ballot</a>. The <strong><a href="https://en.wikipedia.org/wiki/Cast_vote_record">Cast Vote Record (CVR)</a> </strong>is a powerful, yet often misunderstood, tool for achieving this essential public oversight, trust, and auditability.</p><p>In my last Substack article titled <a href="https://open.substack.com/pub/kylechalmersefishent/p/the-yuma-county-cross-party-voters?r=e5kg6&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">The Yuma County Cross-Party Voters: Trump for President, Gallego for Senate</a>, I uncovered the granular, precinct-by-precinct behavior of ticket-splitters in Yuma County using that county&#8217;s 2024 CVR. To define it, a <a href="https://doi.org/10.6028/NIST.SP.1500-103">Cast Vote Record</a> is an anonymized digital log of a voter&#8217;s choices on a ballot. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wru0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wru0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 424w, https://substackcdn.com/image/fetch/$s_!wru0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 848w, https://substackcdn.com/image/fetch/$s_!wru0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 1272w, https://substackcdn.com/image/fetch/$s_!wru0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wru0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png" width="1388" height="1238" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1238,&quot;width&quot;:1388,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wru0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 424w, https://substackcdn.com/image/fetch/$s_!wru0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 848w, https://substackcdn.com/image/fetch/$s_!wru0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 1272w, https://substackcdn.com/image/fetch/$s_!wru0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 1: </strong>Example of a Yuma County ballot showing votes for both Trump and Gallego. Republican votes are highlighted in light red, Democratic votes in light blue.</figcaption></figure></div><p>To reuse the example from <a href="https://kylechalmersefishent.substack.com/p/the-yuma-county-cross-party-voters">my previous article</a>, <strong>Visual 1</strong> shows an example of the rows of data that is returned from one ballot (ballot 8351) in a CVR. As you can see, there is no identifiable individual information; only that this was an early ballot cast in precinct 11.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><p>This level of granular insight revealed a complex cross-party voting pattern that aggregate totals could never show. Most importantly, this analysis was possible while completely preserving voter privacy, demonstrating precisely how CVRs empower citizens to verify election results from the ground up. Modern tabulation systems are designed to create these records while rigorously protecting privacy; the process <a href="https://archive.legmt.gov/content/Committees/Interim/2023-2024/State-Administration-and-Veterans-Affairs/Meetings/July-31-2024/Tab6-Election.Security/EXHIBIT.33.pdf">effectively decouples any association of the ballot to the voting order to guarantee voter privacy</a>.</p><p>I felt compelled to write this piece because analysis like <a href="https://kylechalmersefishent.substack.com/p/the-yuma-county-cross-party-voters">that of my previous article</a> is only possible when the underlying data is accessible, and that access is not guaranteed. Cast Vote Records are not rows and columns on a spreadsheet; they are what allow citizens, journalists, and researchers to independently verify election outcomes. Right now, the availability of CVRs is under real pressure. If we lose access to them, we lose a critical mechanism for transparency, accountability, and public trust. Telling this story is essential to preserving confidence in our elections and raise awareness around the importance of CVRs.</p><h2>A Recent History of Transparency with CVRs in Arizona and Maricopa County</h2><p>In Arizona&#8217;s history, there has never been unified consensus around whether or not the Cast Vote Record is public record, as some counties provided access to these records while others did not. However, Maricopa County, the state&#8217;s largest and most impactful county in elections, has a clear and recent history of providing this data.</p><p>In 2022, after that year&#8217;s contentious midterm election, I, along with other researchers and journalists, were able to obtain access to that data to conduct analyses. With that data, I was able to create <a href="https://public.tableau.com/app/profile/kyle.chalmers7732/viz/Dynamic2022MaricopaCountyElectionAnalysis/MaricopaCountyDownBallotElectionResultsAnalysis">these data visualizations</a>, and other organizations like the Audit Guys were able to create detailed analyses like <a href="https://docs.real-audits.org/s/aYHAJdKfyzqpQ7s">this one</a> that were able to explain and dispel election misinformation with facts. These citizen-led research efforts help effectively combat misinformation, including unsubstantiated claims made by Kari Lake <a href="https://www.nbcnews.com/politics/2024-election/arizona-voters-arent-buying-kari-lakes-stolen-election-claims-even-bel-rcna177772">that she lost because the election was fraudulent</a>.</p><p>Interestingly enough, in February 2023, a <a href="https://www.azleg.gov/legtext/56leg/1R/summary/S.2560-1324ELEC_ASVETOED.DOCX.htm">bipartisan-sponsored bill</a> to make ballot images a public record <a href="https://azmirror.com/2023/02/09/bipartisan-support-for-bill-to-make-all-arizona-ballots-a-public-record/">received vocal support from Democratic Secretary of State Adrian Fontes</a>. This was actually <a href="https://www.azleg.gov/govlettr/56leg/1r/hb2560.pdf">vetoed by Democratic Governor Katie Hobbs</a> because she worried <a href="https://www.phoenixnewtimes.com/news/every-bill-arizona-governor-katie-hobbs-vetoed-so-far-and-why-15984959/">it threatened voter anonymity, created the possibility for more disinformation, and placed a burden on election officials</a>. While ultimately the bill was denied, this signaled a period of positive, bipartisan momentum where the discussion was how to <em>move forward to provide more transparency</em>, rather than going backward and providing less transparency.</p><div><hr></div><h2>A Shift to Less Transparency in Maricopa County</h2><p>Now enter 2024, and Republican <a href="https://en.wikipedia.org/wiki/Justin_Heap">Justin Heap</a> was elected as the new Maricopa County Recorder campaigning on a platform of <a href="https://www.votebeat.org/arizona/2024/12/03/new-republican-leaders-maricopa-county-elections-justin-heap-mark-stewart-debbie-lesko-kate-brophy-mcgee/">&#8220;overhauling operations&#8221; and restoring &#8220;election integrity.&#8221;</a> However, Heap has <a href="https://boltsmag.org/maricopa-county-election-administration-2024-results/">a history of election denialism</a> that goes counter to restoring election integrity, as <a href="https://azmirror.com/2024/10/07/election-integrity-is-central-in-the-marico-recorder-race-but-with-divergent-views-on-what-it-means/">he was backed by prominent figures in the election denial movement like Donald Trump and Kari Lake</a>.</p><p>Upon taking office, <a href="https://recorder.maricopa.gov/news/Recorder-Heap-Files-Lawsuit-Against-Board-of-Supervisors.html">Recorder Heap initiated a legal battle with the Maricopa County Board of Supervisors</a> to gain direct control over the county&#8217;s election IT staff and systems. At the heart of this dispute is the &#8220;Shared Services Agreement&#8221; (SSA), which divides election duties. The Recorder&#8217;s Office traditionally manages voter registration and mail-in voting, while the Board oversees election technology and tabulation. <a href="https://www.votebeat.org/arizona/2025/06/13/justin-heap-maricopa-county-supervisors-america-first-legal-elections-lawsuit/">Heap&#8217;s lawsuit seeks to consolidate control</a> over the very infrastructure that produces, stores, and disseminates election data.</p><p>This fight for institutional control is inseparable from the fight for control over information. By controlling the systems that house CVRs, an official can control the official narrative of an election, limiting the ability of journalists, researchers, and citizens to perform independent checks. This move toward secrecy is particularly alarming given recent election results with Heap&#8217;s new signature verification process. </p><p>Under Heap&#8217;s new signature verification process, <strong><a href="https://www.kjzz.org/elections/2025-11-20/ballot-rejections-nearly-triple-under-maricopa-county-recorders-new-signature-verification-system">the rate of mail-in ballot rejections nearly tripled</a></strong> in the November 2025 local elections. Such a significant statistical deviation in a core election process demands <em>more</em> public data for oversight, not the restriction of it. For example in this instance, we could have used the 2025 CVR data to identify the specific areas and voting patterns of these rejected ballots, to ensure we are holding his office accountable to its obligation to conduct unbiased reviews of ballots.</p><p>So as you might expect with this backdrop, when I submitted a public records request for the 2024 Cast Vote Record, data identical to what the county had provided just two years earlier, it was denied.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4Ded!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe1f8087-3abd-4209-85b1-24ec0836ff1f_2154x1184.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Ded!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe1f8087-3abd-4209-85b1-24ec0836ff1f_2154x1184.png 424w, https://substackcdn.com/image/fetch/$s_!4Ded!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe1f8087-3abd-4209-85b1-24ec0836ff1f_2154x1184.png 848w, https://substackcdn.com/image/fetch/$s_!4Ded!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe1f8087-3abd-4209-85b1-24ec0836ff1f_2154x1184.png 1272w, https://substackcdn.com/image/fetch/$s_!4Ded!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe1f8087-3abd-4209-85b1-24ec0836ff1f_2154x1184.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Ded!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe1f8087-3abd-4209-85b1-24ec0836ff1f_2154x1184.png" width="1456" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be1f8087-3abd-4209-85b1-24ec0836ff1f_2154x1184.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:397408,&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://kylechalmersefishent.substack.com/i/170478185?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe1f8087-3abd-4209-85b1-24ec0836ff1f_2154x1184.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_!4Ded!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe1f8087-3abd-4209-85b1-24ec0836ff1f_2154x1184.png 424w, https://substackcdn.com/image/fetch/$s_!4Ded!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe1f8087-3abd-4209-85b1-24ec0836ff1f_2154x1184.png 848w, https://substackcdn.com/image/fetch/$s_!4Ded!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe1f8087-3abd-4209-85b1-24ec0836ff1f_2154x1184.png 1272w, https://substackcdn.com/image/fetch/$s_!4Ded!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe1f8087-3abd-4209-85b1-24ec0836ff1f_2154x1184.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 2: </strong>Screenshotted email from my request in December 2024 for the Cast Vote Record, with my request outlined in green and the denial of the request from Maricopa County outlined in pink.</figcaption></figure></div><p>The official justifications provided for this denial were twofold:</p><ol><li><p>Concerns that releasing the data could compromise the &#8220;secret ballot.&#8221;</p></li><li><p>A vague assertion that withholding the record was in the &#8220;best interest of the state.&#8221;</p></li></ol><p>These justifications, however, crumble under scrutiny when compared with both the technical reality of CVRs and the foundational principles of a transparent democracy.</p><div><hr></div><h2>Deconstructing the Reasoning Behind the CVR Denial</h2><p>The official reasons cited by the county for withholding the CVR are not novel; they are familiar talking points that warrant careful deconstruction. By examining the technical design of Cast Vote Records and the consensus of election integrity experts, we can evaluate the county&#8217;s claims and see that these concerns are not valid based upon the construction of our modern voting systems.</p><h4>The Myth of the CVR Threatening the &#8220;Secret Ballot&#8221;</h4><p>The claim that CVRs threaten voter privacy fundamentally misunderstands how the technology is designed and the infinitesimally small risk of re-identification.</p><ul><li><p><strong>Actual Risk of Revelation:</strong> <a href="https://www.law.upenn.edu/live/news/17588-election-transparency-and-voter-privacy">A peer-reviewed study on privacy violations in election results</a>, using Maricopa County&#8217;s own 2020 general election as a case study, quantified the actual risk. In a worst-case scenario where individual ballot records are released, the study found that a vote choice could be revealed for approximately <strong><a href="https://www.researchgate.net/publication/372989672_The_Still_Secret_Ballot_The_Limited_Privacy_Cost_of_Transparent_Election_Results">0.17% of voters</a></strong>. The researchers concluded that from a privacy perspective, &#8220;releasing individual ballot records is equivalent to releasing aggregate election results by precinct, style, and method.&#8221; The threat is statistically negligible and no greater than the threat posed by releasing the precinct-level results the county already publishes.</p><ul><li><p>Furthermore, examining <strong>Visual 1</strong> and the 2 samples of CVRs<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>, no truly personal information is present. The information available is the actual votes, precinct voted in, and type of ballot submitted. That is not sufficient information to discern who cast the ballot.</p></li></ul></li><li><p><strong>Technical Reality:</strong> Modern voting systems are explicitly designed to sever the link between a voter and their ballot. As stated above, the tabulator decouples the ballot from the voter to maximize secrecy, and voting systems assign random identifiers, digitally sign and encrypt ballots to prevent alterations, and <a href="https://www.essvote.com/products/expressvote-xl/">timestamps are removed from ballots</a> to prevent matching vote times with when individuals voted. The entire architecture is built on the principle of anonymity.</p><ul><li><p>For a model of radical transparency that works, Ada County, Idaho created <a href="https://electionline.org/electionline-weekly/2025/04-17/">a public &#8220;Ballot Verifier&#8221; database</a> where anyone can view every single ballot image and its CVR . They prove that with basic technical safeguards, you can have both transparency and privacy.</p></li></ul></li><li><p><strong>Historical Precedent:</strong> The historical purpose of the secret ballot was never to shield the vote count from public audit, but to shield the voter from intimidation. As the South Carolina Attorney General&#8217;s office noted in <a href="https://www.scag.gov/media/zcudyv4a/03095037.pdf">a 2022 opinion</a>, the secret ballot emerged in an era of widespread voter coercion, fraud, and violence, when &#8220;Polling places on Election Day... often were &#8216;scenes of battle, murder, and sudden death.&#8217;&#8221; The secret ballot protects citizens from being forced to vote a certain way; it was not designed to prevent those same citizens from verifying an anonymized tally.</p></li></ul><h4>The &#8220;Best Interest of the State&#8221; IS Transparency</h4><p>The assertion that withholding public data is in the &#8220;best interest of the state&#8221; is a direct contradiction of a core democratic principle: the state&#8217;s best interest is served by maximum transparency, which in turn builds public trust.</p><ul><li><p><strong>A Democratic Good:</strong> Election integrity organizations universally advocate for more, not less, public data. <a href="https://eos.cartercenter.org/summaries/183">The Carter Center</a> &#8220;Urges States parties&#8230; to continue to take measures to enhance transparency in public administration,&#8221; while <a href="https://eos.cartercenter.org/summaries/183">the Union of Concerned Scientists</a> states that &#8220;Election data transparency is crucial to affirming the fairness and accuracy of our election processes.&#8221; Secrecy breeds suspicion, while openness fosters confidence.</p></li><li><p><strong>Expert Consensus:</strong> The National Academies of Sciences, Engineering, and Medicine, in <a href="https://www.nationalacademies.org/projects/PGA-STL-16-02">its landmark report </a><em><a href="https://www.nationalacademies.org/projects/PGA-STL-16-02">Securing the Vote</a></em>, concludes that election audits are &#8220;critical to ensuring the integrity of election outcomes and for raising voter confidence.&#8221; The report emphasizes that this is only possible with an &#8220;evidence trail,&#8221; of which CVRs are a key component. By withholding CVRs, officials are not acting in the state&#8217;s best interest; they are actively undermining the very tools that generate voter confidence.</p></li></ul><h4>Addressing the Other Main, Non-Stated Reason For Denial</h4><p>Another argument is that producing these records is some kind of undue administrative burden. To debunk this, Arizona utilizes sophisticated optical scanners to process paper ballots, and for the software that processes this, <a href="https://docs.voting.works/arlo/jurisdiction-manager/pre-audit-file-uploads/cast-vote-records-cvrs">generating CVRs is typically standardly built into this process</a>. The CVR is not an extra report that staff have to spend weeks generating; it is a fundamental, automated output of the tabulation system.</p><p>So if the official reasons for withholding this data are so weak, it forces us to ask a more pressing question: what is the political context for this move toward secrecy?</p><div><hr></div><h2>The Political Context: Who Benefits from Less Transparency?</h2><p>To understand the &#8220;why&#8221; behind Maricopa County&#8217;s policy shift, one must examine the record and motivations of the official now in charge of the Recorder&#8217;s Office. Heap has publicly aligned himself with the election denial movement and, during his campaign, refused to say whether he believed past elections were fair, stating only, <a href="https://www.newsfromthestates.com/article/justin-heap-wont-say-if-arizonas-elections-were-fair-hes-voted-election-denier">&#8220;I will only make statements that I feel I can prove.&#8221;</a></p><p>Heap ran on a platform to &#8220;restore honesty, transparency &amp; integrity in our elections.&#8221; Yet, the central irony of his early tenure is that &#8216;transparency&#8217; has been redefined to mean withholding public records that were previously available, and &#8216;integrity&#8217; has been pursued through actions that actively obscure the electoral process from the citizens it serves. This action stands in stark contrast to the assessment of his Republican predecessor, Stephen Richer, who noted that under his leadership, Maricopa County had become a &#8220;<a href="https://azmirror.com/2024/04/01/justin-heap-wont-say-if-arizonas-elections-were-fair-but-hes-voted-like-an-election-denier/">national model for opening up its elections spaces.</a>&#8221; and it had been recognized as such by the <a href="https://elections.maricopa.gov/news-and-information/elections-news/06062024-excellence-admin-award.html">U.S. Election Assistance Commission (EAC), which awarded the county multiple &#8216;Clearie&#8217; awards for election excellence and transparency</a>.</p><p>Now following the 1st election under Heap&#8217;s leadership in 2025, the rate of ballot rejections due to signature mismatch nearly tripled, and he is escalating his lawsuit with the Maricopa County Board of Supervisors to control county&#8217;s <a href="https://www.kjzz.org/politics/2025-11-04/maricopa-county-supervisors-recorder-go-to-court-over-election-systems-audit">Voter Registration Automation System (VRAS)</a>, a critical database that manages voter registration, early voting, signature verification, and other core election functions.</p><p>The consolidation of power goes counter to our fundamental democratic principle of &#8220;checks and balances&#8221;. If his lawsuit succeeds, then Heap will have further ability to restrict oversight and auditability into the election process. By restricting the public&#8217;s ability to conduct an independent audit and oversight from other parts of our government, the Recorder&#8217;s Office positions itself as the sole arbiter of the facts, transforming a verifiable public process into a matter of trusting a single official.</p><h2>Why This Matters for Democracy</h2><p>Withholding Cast Vote Records is a significant step backward for democratic accountability, and if Heap&#8217;s lawsuit against the Maricopa County Board of Supervisors succeeds, it will not be the only step backwards. Withholding this election data from the public replaces evidence-based verification with a demand for blind trust, creating a data vacuum that bad actors can and will inevitably fill with disinformation. </p><p>This erosion of public auditability is not just a problem for data analysts like myself; it is a problem for every citizen who believes in a transparent and trustworthy government.</p><p>This data is not the property of the Recorder&#8217;s Office or the Board of Supervisors; it is a public asset that must be available to all citizens, regardless of who is in power or who is asking for it. Here in Maricopa County, we should be creating more transparency to combat corrosive distrust with an evidence-based election system that demonstrably shows what the truth is through data. </p><p>In an era of rampant disinformation, the public&#8217;s right to verify the count is not a preference; it is the fundamental mechanism of democratic consent, and it must be defended.</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>If you&#8217;d like to see more a larger sample of the CVR data to get a further sense of it, <a href="https://drive.google.com/file/d/14ExpM1WvIgz5VBvUzZpVFuDZ6H-sPyHg/view?usp=sharing">here</a> are 10,000 records from the same 2024 Yuma County file, and <a href="https://drive.google.com/file/d/1uUBJfxbroIh03rF5LkWwJuN6Xg1ulw0d/view?usp=sharing">here</a> are another 10,000 records from the 2022 Maricopa County election CVR.</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>See footnote 1.</p></div></div>]]></content:encoded></item><item><title><![CDATA[The Yuma County Cross-Party Voters: Trump for President, Gallego for Senate]]></title><description><![CDATA[TLDR: Yuma County&#8217;s Cast Vote Record reveals thousands of Trump&#8211;Gallego voters and only a handful of Lake&#8211;Harris voters, and show how Trump and Gallego successfully attracted broader voter coalitions.]]></description><link>https://kylechalmerslabs.substack.com/p/the-yuma-county-cross-party-voters</link><guid isPermaLink="false">https://kylechalmerslabs.substack.com/p/the-yuma-county-cross-party-voters</guid><dc:creator><![CDATA[Kyle Chalmers]]></dc:creator><pubDate>Tue, 30 Sep 2025 15:03:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CwEC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf2d99a-a51c-43b8-8498-0c898f72fc2d_1600x900.jpeg" 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_!CwEC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf2d99a-a51c-43b8-8498-0c898f72fc2d_1600x900.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CwEC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf2d99a-a51c-43b8-8498-0c898f72fc2d_1600x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CwEC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf2d99a-a51c-43b8-8498-0c898f72fc2d_1600x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CwEC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf2d99a-a51c-43b8-8498-0c898f72fc2d_1600x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CwEC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf2d99a-a51c-43b8-8498-0c898f72fc2d_1600x900.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CwEC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf2d99a-a51c-43b8-8498-0c898f72fc2d_1600x900.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acf2d99a-a51c-43b8-8498-0c898f72fc2d_1600x900.jpeg&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;:null,&quot;alt&quot;:&quot;Arizona Senate race key: Trump voters who back Gallego&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Arizona Senate race key: Trump voters who back Gallego" title="Arizona Senate race key: Trump voters who back Gallego" srcset="https://substackcdn.com/image/fetch/$s_!CwEC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf2d99a-a51c-43b8-8498-0c898f72fc2d_1600x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CwEC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf2d99a-a51c-43b8-8498-0c898f72fc2d_1600x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CwEC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf2d99a-a51c-43b8-8498-0c898f72fc2d_1600x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CwEC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facf2d99a-a51c-43b8-8498-0c898f72fc2d_1600x900.jpeg 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"><svg role="img" 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"><g><title></title><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"><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"><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">Democrat Ruben Gallego (left) won his statewide Senate race in Arizona, defeating Republican Kari Lake (far right), who styled herself as the female version of Donald Trump (right). &#169;&#8239;Associated&#8239;Press, via <a href="https://ktar.com/arizona-news/arizona-senate-race-gallego-trump-voters/5609936/">KTAR News</a></figcaption></figure></div><h2>The Background: Trump (Rep) and Gallego (Dem) Won AZ</h2><p>In the November 2024 presidential election, <a href="https://www.nbcnews.com/politics/2024-elections/arizona-president-results">Republican Donald Trump defeated Democrat Kamala Harris in Arizona</a> by <strong>187,382</strong> votes (a <strong>5.5</strong> point margin). In the same election, however, <a href="https://www.nbcnews.com/politics/2024-elections/arizona-senate-results">Democrat Ruben Gallego defeated Republican Kari Lake</a> in the U.S. Senate race by <strong>80,574</strong> votes (<strong>2.41</strong> points). That represents a swing of <strong>7.91</strong> points  between two statewide candidates from opposite parties&#8212;<a href="https://www.noblepredictiveinsights.com/post/a-deep-look-at-trump-gallego-voters">the largest gap of any state with a split presidential/Senate outcome in 2024</a>.</p><p>It is a curious phenomenon: how can two candidates who are so diametrically opposed attract such a large number of the same voters? <a href="https://www.12news.com/article/news/politics/elections/decision-2024/ruben-gallego-did-better-most-democrats-he-says-his-party-needs-to-stoke-working-class-roots/75-4f51de1d-a3ba-475b-9d1c-86821e8a14b9">Almost one in ten Arizonans voted for both Trump and Gallego</a>. Kari Lake attempted to position herself as <a href="https://www.telegraph.co.uk/world-news/2022/11/05/kari-lake-republicans-rising-star-who-thinks-donald-trump-won/">&#8220;Trump in a dress&#8221;</a>, so why did so many Trump voters decline to support his self-proclaimed female counterpart?</p><p>Since this election occurred, a variety of journalistic, opinion, and analytical pieces have tried to answer that question:</p><ul><li><p><a href="https://www.azcentral.com/story/opinion/op-ed/laurieroberts/2024/11/11/kari-lake-loses-trump-gallego-senate/76131417007/">Laurie Roberts (AZCentral)</a> emphasized that Lake polled as unlikeable throughout the campaign and never pivoted toward the center in the general election.</p></li><li><p><a href="https://www.statepress.com/article/2024/12/arizona-split-ticket-voting">Sam Luba (The State Press)</a> argued that Gallego successfully highlighted his &#8220;blue-collar upbringing, his working-class roots, [and] his military service&#8221; while Lake failed to replicate Trump&#8217;s appeal because &#8220;she differed from him in a key way: her gender.&#8221;</p></li><li><p><a href="https://www.noblepredictiveinsights.com/post/a-deep-look-at-trump-gallego-voters">Bradley Wascher (Noble Predictive Insights)</a> found that Gallego won key communities Harris did not, particularly working-class and Hispanic suburbs, as well as among educated white voters in the Valley and beyond.</p></li></ul><p>All of this raises the central question of this piece: <em><strong>How did Gallego win in a state that Trump also won?</strong></em> This post will attempt to answer a small part of this question as it relates to <strong>Yuma County</strong>. <a href="https://www.noblepredictiveinsights.com/post/a-deep-look-at-trump-gallego-voters">Wascher&#8217;s analysis</a> found that 160 precincts across Arizona split their tickets, focusing largely on Phoenix and Tucson. However,<strong>Yuma County</strong>, home to Arizona&#8217;s <a href="https://en.wikipedia.org/wiki/Arizona_statistical_areas">5th largest metropolitan area</a> that borders both California and Mexico, has a few of these key precincts.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v0zh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05889233-f69c-49bb-97d6-8bd162ced543_1600x954.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v0zh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05889233-f69c-49bb-97d6-8bd162ced543_1600x954.png 424w, https://substackcdn.com/image/fetch/$s_!v0zh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05889233-f69c-49bb-97d6-8bd162ced543_1600x954.png 848w, https://substackcdn.com/image/fetch/$s_!v0zh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05889233-f69c-49bb-97d6-8bd162ced543_1600x954.png 1272w, https://substackcdn.com/image/fetch/$s_!v0zh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05889233-f69c-49bb-97d6-8bd162ced543_1600x954.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v0zh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05889233-f69c-49bb-97d6-8bd162ced543_1600x954.png" width="1456" height="868" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05889233-f69c-49bb-97d6-8bd162ced543_1600x954.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:868,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!v0zh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05889233-f69c-49bb-97d6-8bd162ced543_1600x954.png 424w, https://substackcdn.com/image/fetch/$s_!v0zh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05889233-f69c-49bb-97d6-8bd162ced543_1600x954.png 848w, https://substackcdn.com/image/fetch/$s_!v0zh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05889233-f69c-49bb-97d6-8bd162ced543_1600x954.png 1272w, https://substackcdn.com/image/fetch/$s_!v0zh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05889233-f69c-49bb-97d6-8bd162ced543_1600x954.png 1456w" sizes="100vw"></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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 1</strong><em>: </em>Democratic margins in the 2024 presidential and Senate races, statewide vs. Yuma County. The chart shows how Gallego cut the GOP margin in Yuma nearly in half.</figcaption></figure></div><p>Why analyze Yuma County? Two reasons make it both intriguing and uniquely feasible:</p><ol><li><p>As <strong>Visual 1</strong> shows, Trump carried Yuma with 40,745 votes (59.7%) to Harris&#8217;s 26,823 votes (39.3%), a margin of 20.4 points. In the Senate race, Lake managed 36,212 votes (54.0%) to Gallego&#8217;s 29,199 votes (43.5%), a margin of 10.5 points. Put differently, <strong>Gallego cut the GOP margin in Yuma almost in half</strong> compared to Trump&#8217;s advantage &#8212; a nearly 10-point swing, stronger than what we saw statewide.</p></li><li><p>Secondly, and more importantly, we obtained anonymized ballot data from Yuma County known as the <strong><a href="https://www.votebeat.org/arizona/2022/9/7/23341640/cast-vote-record-data-ballot-tabulator-images/">Cast Vote Record</a></strong>. his dataset made it possible to build <a href="https://public.tableau.com/app/profile/kyle.chalmers7732/viz/2024YumaCountyElectionAnalysis/YumaCounty2024CrossoverVoterOverviewAnalysis?publish=yes">the dashboards</a> that power this analysis. Every other county in Arizona either denied our request for CVRs or failed to respond.</p><div><hr></div></li></ol><h2><strong>Understanding the Cast Vote Record (CVR) Data and the <a href="https://public.tableau.com/app/profile/kyle.chalmers7732/viz/2024YumaCountyElectionAnalysis/YumaCounty2024CrossoverVoterOverviewAnalysis?publish=yes">Dashboards</a></strong></h2><h3>The CVR Data</h3><p>Before diving into the analysis, the importance of the CVR data and the dashboards warrant explanation, as they are the foundation for this article.</p><p>The CVR is an anonymized dataset that records every decision on every ballot in a county. It includes not only the candidate choices but also details such as the vote type (early, polling place, provisional) and the precinct. Crucially, CVRs let us identify ballots with split-ticket voting and the general geography of where it occurred, revealing patterns across the county.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wru0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wru0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 424w, https://substackcdn.com/image/fetch/$s_!wru0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 848w, https://substackcdn.com/image/fetch/$s_!wru0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 1272w, https://substackcdn.com/image/fetch/$s_!wru0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wru0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png" width="1388" height="1238" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1238,&quot;width&quot;:1388,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!wru0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 424w, https://substackcdn.com/image/fetch/$s_!wru0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 848w, https://substackcdn.com/image/fetch/$s_!wru0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 1272w, https://substackcdn.com/image/fetch/$s_!wru0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c5c5f06-6868-4ea0-8ad2-bd1a822414bc_1388x1238.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 2</strong><em>: </em>Example of a Yuma County ballot showing votes for both Trump and Gallego. Republican votes are highlighted in light red, Democratic votes in light blue.</figcaption></figure></div><p>In <strong>Visual 2</strong>, ballot 8351 shows a voter who chose both Trump and Gallego, along with a mix of other Republicans and Democrats. The record also shows that this was an early ballot and identifies the precinct where it was cast. Every ballot in Yuma County&#8217;s CVR file contains this same level of detail.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p><h3>The Dashboards</h3><p><a href="https://public.tableau.com/app/profile/kyle.chalmers7732/viz/2024YumaCountyElectionAnalysis/YumaCounty2024DownBallotElectionResultsAnalysis#1">These dashboards</a> take this data a step further, translating it into visuals that make voting patterns easier to interpret. Each one includes a short description and instructions at the top so you can understand its purpose and interact with the data.</p><p>The primary two dashboards used for this analysis are the <a href="https://public.tableau.com/views/2024YumaCountyElectionAnalysis/YumaCounty2024MutuallyExclusiveCandidates?:language=en-US&amp;:sid=&amp;:redirect=auth&amp;:display_count=n&amp;:origin=viz_share_link">Yuma County 2024 Mutually Exclusive Candidates</a> (<strong>Visuals 4 </strong>and<strong> 5</strong>) and <a href="https://public.tableau.com/views/2024YumaCountyElectionAnalysis/YumaCounty2024CrossoverVoterOverviewAnalysis?:language=en-US&amp;:sid=&amp;:redirect=auth&amp;:display_count=n&amp;:origin=viz_share_link">Yuma County 2024 Crossover Voter Overview Analysis</a> (<strong>Visuals 6 </strong>and<strong> 7</strong>) . The <a href="https://public.tableau.com/views/2024YumaCountyElectionAnalysis/YumaCounty2024MutuallyExclusiveCandidates?:language=en-US&amp;:sid=&amp;:redirect=auth&amp;:display_count=n&amp;:origin=viz_share_link">Mutually Exclusive dashboard</a> lets you select any combination of candidates, by default it is Trump and Gallego, and then shows the voters who supported that combo. It highlights where those voters cast their ballots and how they voted down-ballot, making it possible to isolate groups who backed a specific group of candidates. The <a href="https://public.tableau.com/views/2024YumaCountyElectionAnalysis/YumaCounty2024CrossoverVoterOverviewAnalysis?:language=en-US&amp;:sid=&amp;:redirect=auth&amp;:display_count=n&amp;:origin=viz_share_link">Crossover Voter</a> dashboard shows how each candidate performed with different voter populations, such as majority-Democratic ballots or majority-Republican ballots, amongst other voter types. Together, these tools reveal not just raw vote totals but the underlying crossover and coalition patterns that shaped Yuma County&#8217;s results.</p><div><hr></div><h2><strong>The Numbers and Visuals That Tell the Story</strong></h2><h3>Mutually Exclusive Presidential&#8211;Senate Combos</h3><p>The dashboards show that Lake&#8217;s 4,533-vote drop-off from Trump is only the starting point.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yKVU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515663e6-c08c-4eb4-83a5-38432efc23c6_1276x732.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yKVU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515663e6-c08c-4eb4-83a5-38432efc23c6_1276x732.png 424w, https://substackcdn.com/image/fetch/$s_!yKVU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515663e6-c08c-4eb4-83a5-38432efc23c6_1276x732.png 848w, https://substackcdn.com/image/fetch/$s_!yKVU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515663e6-c08c-4eb4-83a5-38432efc23c6_1276x732.png 1272w, https://substackcdn.com/image/fetch/$s_!yKVU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515663e6-c08c-4eb4-83a5-38432efc23c6_1276x732.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yKVU!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515663e6-c08c-4eb4-83a5-38432efc23c6_1276x732.png" width="1200" height="688.4012539184953" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/515663e6-c08c-4eb4-83a5-38432efc23c6_1276x732.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:732,&quot;width&quot;:1276,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:245581,&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://kylechalmersefishent.substack.com/i/174311165?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515663e6-c08c-4eb4-83a5-38432efc23c6_1276x732.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yKVU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515663e6-c08c-4eb4-83a5-38432efc23c6_1276x732.png 424w, https://substackcdn.com/image/fetch/$s_!yKVU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515663e6-c08c-4eb4-83a5-38432efc23c6_1276x732.png 848w, https://substackcdn.com/image/fetch/$s_!yKVU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515663e6-c08c-4eb4-83a5-38432efc23c6_1276x732.png 1272w, https://substackcdn.com/image/fetch/$s_!yKVU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F515663e6-c08c-4eb4-83a5-38432efc23c6_1276x732.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 4</strong>: <a href="https://public.tableau.com/views/2024YumaCountyElectionAnalysis/YumaCounty2024MutuallyExclusiveCandidates?:language=en-US&amp;publish=yes&amp;:sid=&amp;:redirect=auth&amp;:display_count=n&amp;:origin=viz_share_link">Mutually Exclusive Candidates</a> dashboard filtered to Trump + Gallego. It shows the total number of ballots with both candidates, plus the top precincts where these voters were concentrated.</figcaption></figure></div><p>Per <strong>Visual 4</strong>, 68,682 ballots included both the presidential and Senate contests in Yuma County. Of those, 3,369 ballots (4.91%) across 43 precincts contained votes for both Trump and Gallego which is about 78 per precinct on average. The top 20 precincts all exceeded that average, and the top 12 clustered around metropolitan Yuma. These crossover ballots made up 11.54% of Gallego&#8217;s support in the county and 8.27% of Trump&#8217;s.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vZ-9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a8728d-24c5-4443-9530-a13fe3d14a56_1276x731.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vZ-9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a8728d-24c5-4443-9530-a13fe3d14a56_1276x731.png 424w, https://substackcdn.com/image/fetch/$s_!vZ-9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a8728d-24c5-4443-9530-a13fe3d14a56_1276x731.png 848w, https://substackcdn.com/image/fetch/$s_!vZ-9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a8728d-24c5-4443-9530-a13fe3d14a56_1276x731.png 1272w, https://substackcdn.com/image/fetch/$s_!vZ-9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a8728d-24c5-4443-9530-a13fe3d14a56_1276x731.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vZ-9!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a8728d-24c5-4443-9530-a13fe3d14a56_1276x731.png" width="1200" height="687.4608150470219" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f4a8728d-24c5-4443-9530-a13fe3d14a56_1276x731.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:731,&quot;width&quot;:1276,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:239772,&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://kylechalmersefishent.substack.com/i/174311165?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a8728d-24c5-4443-9530-a13fe3d14a56_1276x731.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vZ-9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a8728d-24c5-4443-9530-a13fe3d14a56_1276x731.png 424w, https://substackcdn.com/image/fetch/$s_!vZ-9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a8728d-24c5-4443-9530-a13fe3d14a56_1276x731.png 848w, https://substackcdn.com/image/fetch/$s_!vZ-9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a8728d-24c5-4443-9530-a13fe3d14a56_1276x731.png 1272w, https://substackcdn.com/image/fetch/$s_!vZ-9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff4a8728d-24c5-4443-9530-a13fe3d14a56_1276x731.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 5</strong>: The same dashboard filtered to Harris + Lake voters.</figcaption></figure></div><p>By contrast, <strong>Visual 5 </strong>shows there were only 414 ballots that had votes for both Harris and Lake, <strong>a decrease of 2,955 (87.72%)</strong>, from the Trump-Gallego voters. Their average votes per precinct is only 10, 72 fewer than the Trump&#8211;Gallego figure. To put this in perspective, the top precinct for Harris&#8211;Lake voters was Precinct 039 with <strong>20</strong> ballots. By comparison, that would have ranked <strong>41st</strong> among Trump&#8211;Gallego precincts. The same precinct recorded 160 Trump&#8211;Gallego ballots, and the top precinct overall (Precinct 035) had 177. In fact, the top 3 Trump&#8211;Gallego precincts alone accounted for more ballots than all 43 Harris&#8211;Lake precincts combined.</p><p>This 2,955-ballot gap between the two combinations suggests a couple takeaways:</p><ol><li><p>Harris&#8211;Lake voters were only a fraction of the electorate compared to Trump&#8211;Gallego voters.</p></li><li><p>Trump and Gallego each drew support from voters outside their base, while Harris and Lake failed to do so.</p><ul><li><p>The crossover pattern likely reflects some Democrats choosing Trump over Harris and some Republicans choosing Gallego over Lake.</p></li></ul></li></ol><p>This stark contrast sets the stage for the next step: examining how each candidate performed relative to others in their party across different voter groups.</p><h3>The Appeal of the Candidates Across Different Voter Groups</h3><h4>How to Interpret the Visuals</h4><p>The <a href="https://public.tableau.com/views/2024YumaCountyElectionAnalysis/YumaCounty2024CrossoverVoterOverviewAnalysis?:language=en-US&amp;:sid=&amp;:redirect=auth&amp;:display_count=n&amp;:origin=viz_share_link">Crossover Voter Overview Analysis</a> is slightly more complex than the <a href="https://public.tableau.com/views/2024YumaCountyElectionAnalysis/YumaCounty2024MutuallyExclusiveCandidates?:language=en-US&amp;:sid=&amp;:redirect=auth&amp;:display_count=n&amp;:origin=viz_share_link">Mutually Exclusive Candidates</a> dashboard. In <strong>Visual 6 </strong>below, two bar charts appear side by side: Democratic candidates on the left and Republican candidates on the right (pun intended).  By default, the dashboard shows how many votes each candidate received from ballots where the majority of selections went to the opposite party. For example, Gallego won 2,498 votes (8.56%) of his countywide total from voters who cast at least half of their ballot for Republicans. Bars are color-coded by contest type in the legend highlighted by the teal rectangle:</p><ul><li><p>Pink = Contested Race</p><ul><li><p>There were an equal number of Republican and Democratic candidates running in the same contest.</p><ul><li><p>Example: Kari Lake (Rep) and Ruben Gallego (Dem) both ran for 1 US Senate seat.</p></li></ul></li></ul></li><li><p>Green = Not Contested Race</p><ul><li><p>There was no candidate from the opposing party running for the position.</p><ul><li><p>Example:, Karolyn Kaczorowski (Dem) ran unopposed for County Attorney.</p></li></ul></li></ul></li><li><p>Yellow = Partially Contested Race</p><ul><li><p>There were an unequal number of Republican and Democratic candidates running in the same contest.</p><ul><li><p>Example: Two Democrats, Matias Rosales and Mariana Sandoval, and one Republican, Michele Pe&#241;a, ran for 2 seats in the State House District 23.</p></li></ul></li></ul></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QqgV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed1bb569-b09e-4dbc-bfb9-4071c61fe786_1600x754.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QqgV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed1bb569-b09e-4dbc-bfb9-4071c61fe786_1600x754.png 424w, https://substackcdn.com/image/fetch/$s_!QqgV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed1bb569-b09e-4dbc-bfb9-4071c61fe786_1600x754.png 848w, https://substackcdn.com/image/fetch/$s_!QqgV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed1bb569-b09e-4dbc-bfb9-4071c61fe786_1600x754.png 1272w, https://substackcdn.com/image/fetch/$s_!QqgV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed1bb569-b09e-4dbc-bfb9-4071c61fe786_1600x754.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QqgV!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed1bb569-b09e-4dbc-bfb9-4071c61fe786_1600x754.png" width="1200" height="565.3846153846154" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed1bb569-b09e-4dbc-bfb9-4071c61fe786_1600x754.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:686,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QqgV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed1bb569-b09e-4dbc-bfb9-4071c61fe786_1600x754.png 424w, https://substackcdn.com/image/fetch/$s_!QqgV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed1bb569-b09e-4dbc-bfb9-4071c61fe786_1600x754.png 848w, https://substackcdn.com/image/fetch/$s_!QqgV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed1bb569-b09e-4dbc-bfb9-4071c61fe786_1600x754.png 1272w, https://substackcdn.com/image/fetch/$s_!QqgV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed1bb569-b09e-4dbc-bfb9-4071c61fe786_1600x754.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 6: </strong>Democratic candidates appear on the left, Republicans on the right. Contests are color-coded, showing how many votes each candidate drew from majority-opposite ballots. The Democratic candidates in focus are outlined in dark blue, the Republican candidates in red, and the legend for the contests is in teal.</figcaption></figure></div><h4>Voter Group Appeal Analysis</h4><p>In <strong>Visual 6</strong>, Gallego ranked as the <strong>2nd-best performing Democrat</strong> in contested races among ballots where at least half the votes went to Republicans. Trump&#8217;s performance with majority-Democratic ballots was more middle-of-the-pack, placing <strong>6th out of 12</strong> Republican candidates in contested races. For Trump, though, this mattered less given <a href="https://www.politico.com/news/2025/06/26/2024-election-turnout-trum-00426544">the strong turnout from Republican-leaning voters who already favored him.</a> Harris and Lake stood out for the opposite reason: they finished last in this category, with Harris drawing support from just <strong>3.03%</strong> of majority-Republican voters and Lake from only <strong>1.55%</strong> of majority-Democratic voters. By comparison, both <strong>Gallego and Trump won more than three times as many votes</strong> from these cross-party ballots as Harris and Lake.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EJ1f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69929bf4-7c41-4bd6-9c19-007a8479143f_1600x756.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EJ1f!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69929bf4-7c41-4bd6-9c19-007a8479143f_1600x756.png 424w, https://substackcdn.com/image/fetch/$s_!EJ1f!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69929bf4-7c41-4bd6-9c19-007a8479143f_1600x756.png 848w, https://substackcdn.com/image/fetch/$s_!EJ1f!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69929bf4-7c41-4bd6-9c19-007a8479143f_1600x756.png 1272w, https://substackcdn.com/image/fetch/$s_!EJ1f!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69929bf4-7c41-4bd6-9c19-007a8479143f_1600x756.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EJ1f!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69929bf4-7c41-4bd6-9c19-007a8479143f_1600x756.png" width="1200" height="567.032967032967" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/69929bf4-7c41-4bd6-9c19-007a8479143f_1600x756.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:688,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&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;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!EJ1f!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69929bf4-7c41-4bd6-9c19-007a8479143f_1600x756.png 424w, https://substackcdn.com/image/fetch/$s_!EJ1f!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69929bf4-7c41-4bd6-9c19-007a8479143f_1600x756.png 848w, https://substackcdn.com/image/fetch/$s_!EJ1f!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69929bf4-7c41-4bd6-9c19-007a8479143f_1600x756.png 1272w, https://substackcdn.com/image/fetch/$s_!EJ1f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69929bf4-7c41-4bd6-9c19-007a8479143f_1600x756.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 7: </strong>Democratic and Republican candidates by vote share and total votes from ballots in Yuma County that supported their party&#8217;s candidates at least 50% of the time.</figcaption></figure></div><p><strong>Visual 7</strong> shows the reverse pattern. Among ballots where at least half the votes went to their own party, <strong>92.85% of Harris&#8217;s support</strong> and <strong>95.80% of Lake&#8217;s support</strong> came from core partisan voters. By comparison, <strong>88.28% of Gallego&#8217;s votes</strong> and <strong>90.86% of Trump&#8217;s</strong> came from majority in-party voters, meaning Gallego and Trump were less reliant on their partisan bases and drew a broader share of their support from outside voters.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EyTX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e6cef8-2086-4811-98e3-8204f3cab010_2576x1226.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EyTX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e6cef8-2086-4811-98e3-8204f3cab010_2576x1226.png 424w, https://substackcdn.com/image/fetch/$s_!EyTX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e6cef8-2086-4811-98e3-8204f3cab010_2576x1226.png 848w, https://substackcdn.com/image/fetch/$s_!EyTX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e6cef8-2086-4811-98e3-8204f3cab010_2576x1226.png 1272w, https://substackcdn.com/image/fetch/$s_!EyTX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e6cef8-2086-4811-98e3-8204f3cab010_2576x1226.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EyTX!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e6cef8-2086-4811-98e3-8204f3cab010_2576x1226.png" width="1200" height="571.1538461538462" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0e6cef8-2086-4811-98e3-8204f3cab010_2576x1226.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:693,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:349634,&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://kylechalmersefishent.substack.com/i/174311165?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e6cef8-2086-4811-98e3-8204f3cab010_2576x1226.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EyTX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e6cef8-2086-4811-98e3-8204f3cab010_2576x1226.png 424w, https://substackcdn.com/image/fetch/$s_!EyTX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e6cef8-2086-4811-98e3-8204f3cab010_2576x1226.png 848w, https://substackcdn.com/image/fetch/$s_!EyTX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e6cef8-2086-4811-98e3-8204f3cab010_2576x1226.png 1272w, https://substackcdn.com/image/fetch/$s_!EyTX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0e6cef8-2086-4811-98e3-8204f3cab010_2576x1226.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 8: </strong>Democratic and Republican candidates by vote share and total votes from &#8220;single-shot&#8221; ballots &#8212; ballots where only one candidate from that party received a vote.</figcaption></figure></div><p><strong>Visual 8 </strong>highlights what may be the most interesting group: single-shot voters &#8212; ballots that backed only one candidate from the opposite party. Trump received <strong>637 votes</strong> from this population, making him the only Republican selected on those ballots. In contested and partially contested races, Trump was the strongest Republican in this category, with <strong>1.56% of his countywide support</strong> coming from single-shot voters. Lake was the weakest, winning only <strong>27 such votes</strong>. </p><p>Gallego and Harris performed similarly here: <strong>299 single-shot votes (1.02%)</strong> for Gallego and <strong>276 (1.03%)</strong> for Harris. The difference emerges when comparing these figures to their broader crossover totals. For Harris, <strong>276 of her 812 votes (33.99%)</strong> from majority-Republican ballots came from single-shot ballots. For Gallego, his 299 single-shot votes represented only <strong>11.97%</strong> of the 2,498 ballots he won from majority-Republican voters.</p><p>These results suggest three key takeaways:</p><ol><li><p>Harris attracted some single-shot voters who otherwise backed all Republicans, but she struggled to convert that into broader support among majority-Republican ballots.</p></li><li><p>Neither Lake nor Harris appealed meaningfully to voters outside their base. Both drew fewer crossover votes and relied more heavily on in-party support, thus garnering fewer votes overall.</p></li><li><p>Both Gallego and Trump converted significantly more voters from the opposite party, helping secure their victories in Arizona.</p></li></ol><div><hr></div><h2><strong>Conclusion and Takeaways</strong></h2><p>For close followers of Arizona politics, none of this may be surprising. Leading up to the election, Kari Lake was notorious for trying to position herself like Trump but lacked <a href="https://www.azcentral.com/story/opinion/op-ed/laurieroberts/2024/10/22/kari-lake-poll-ruben-gallego-win-senate/75799720007/">his cross-partisan appeal and polling strength</a>. Gallego, by contrast, was a strong enough candidate to capitalize on Lake&#8217;s unpopularity and win over far more crossover voters than Harris managed against Trump. The striking part is seeing just how stark that difference looks numerically within Yuma County. Harris and Lake finished <strong>last</strong> in drawing votes from majority-opposite ballots, while Gallego and Trump ranked in the upper half of all candidates.</p><p>Returning to the question posed in the introduction &#8212; &#8220;<strong>How did this happen?</strong>&#8221; &#8212; it is not possible to understand each voter&#8217;s reasoning, but the Yuma County CVR data supports the reporting cited above and shows how both Gallego and Trump drew broader geographic and cross-party appeal than their opponents. The result was a distinct and measurable phenomenon: the Trump&#8211;Gallego voter.</p><p>Thanks for reading as always, and please subscribe, share, or leave a comment!<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><p>P.S. <a href="https://public.tableau.com/views/2024YumaCountyElectionAnalysis/YumaCounty2024DownBallotElectionResultsAnalysis?:language=en-US&amp;:sid=&amp;:redirect=auth&amp;:display_count=n&amp;:origin=viz_share_link">The dashboards</a> contain many more races and candidates to explore. If you spot other interesting patterns or insights, let me know as there&#8217;s plenty more data and storylines worth digging into.</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>Write-in votes were not excluded from this analysis after cleaning the CVR data.</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>Interested in working together? Check out my website: https://www.kclabs.ai/contact</p></div></div>]]></content:encoded></item><item><title><![CDATA[Building Dashboards That Drive Action: What I've Learned Working with Data Teams]]></title><description><![CDATA[TLDR: Your dashboard might not be broken, it may just be the wrong tool for the job.]]></description><link>https://kylechalmerslabs.substack.com/p/building-dashboards-that-drive-action</link><guid isPermaLink="false">https://kylechalmerslabs.substack.com/p/building-dashboards-that-drive-action</guid><dc:creator><![CDATA[Rana Mohamed]]></dc:creator><pubDate>Tue, 26 Aug 2025 16:35:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!qJfG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e33c3-1809-41cf-ba57-a7b41fc5a59d_2210x798.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Hello readers!</em></p><p><em>This week I&#8217;m excited to introduce Rana Mohamed as she is a guest writer for this week. Rana brings 6+ years of experience leading operations at tech startups, where she relied on data and dashboards every day to drive profitability and growth. In this piece, she explores how different types of dashboards serve distinct needs, and why building purposeful dashboards is critical to the success of any organization, business, or campaign. Please enjoy her insights!</em></p><p><em>&#8211; Kyle</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://kylechalmerslabs.substack.com/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://kylechalmerslabs.substack.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p>Over the past few years, I've worked with dozens of data teams on reporting projects, and I've made my share of mistakes along the way. Early on, I'd walk into meetings with lengthy requirements documents, asking for comprehensive dashboards that could "show me everything." The results were often impressive-looking but rarely useful for day-to-day decisions. Through trial and error&#8212;and some patient data analysts&#8212;I've learned that the key isn't avoiding comprehensive dashboards entirely, but understanding when and how to use different types of reporting.</p><h2><strong>The Pattern I Keep Seeing</strong></h2><p>Here's what I've noticed happens in organizations everywhere, including my own: A team spends days or weeks building a dashboard that looks comprehensive&#8212;colorful charts, dozens of metrics, filters for every scenario. It gets approving nods in meetings, but when people need to make quick decisions, they rarely use it.</p><p>I've been that stakeholder who requested "one centralized source of truth with all our important metrics." The logic seemed sound at the time. But when I actually needed to make a Tuesday morning decision about which person on my team needed coaching, I found myself clicking through several charts before giving up and asking someone directly instead.</p><p>The sales director I worked with last year had the same experience. When they needed to quickly figure out why their team was missing targets, our comprehensive dashboard left them scrolling and filtering instead of acting. And it didn&#8217;t stop there. The marketing manager also couldn't rapidly determine which social media campaign was working best despite having access to all our marketing data.</p><h2><strong>Understanding Different Dashboard Purposes</strong></h2><p>Through conversations with data professionals, I've learned that my frustration wasn't with comprehensive dashboards themselves&#8212;it was with using the wrong tool for the job. Research conducted by ScienceDirect (2011) confirms this: <a href="https://www.zionandzion.com/fail-to-recognize-cognitive-strategies-in-reporting-data-and-risk-analysis-paralysis/">dashboards are most effective when they're designed to amplify cognition and capitalize on human perceptual capabilities for specific decision-making contexts</a>.</p><p>Comprehensive dashboards excel at storytelling and exploration. When I need to present quarterly results to leadership teams, or when I'm doing deep analysis of historical trends, having all the context in one place is valuable. The 20+ visualization dashboard I built with my data analyst works beautifully for the executive team who needed to understand the full picture and then dive into specifics during their monthly planning sessions.</p><p>But when someone needs to make a decision quickly&#8212;like "which volunteer neighborhoods do we prioritize this weekend?"&#8212;they need something entirely different. They need simple, action-oriented dashboards that eliminate cognitive load rather than add to it. Design research shows that <a href="https://uxmag.com/articles/four-cognitive-design-guidelines-for-effective-information-dashboards">information dashboards should augment human cognitive abilities specifically for decision-making tasks</a>, which means removing anything that doesn't directly support the immediate decision.</p><h2><strong>The Decision Dashboard Breakthrough</strong></h2><p>The breakthrough in my collaboration with data professionals came when I learned to distinguish between exploration tools and decision tools. Instead of starting with "Here's all the data we have, can you make it visual?" I began asking: "What type of dashboard do we need for this use case?"</p><p>For quick decisions, I learned to frame requests like this: "Every Monday morning, our sales manager sits down to figure out which rep needs help and what kind of help they need. Can we create something that makes that decision obvious in under a minute?"</p><p>This led to a focused dashboard with three elements: individual rep performance against quota, conversion rates by stage, and average deal size. Now when the sales manager looks at it Monday morning, they immediately know if someone is struggling with qualifying leads and can schedule coaching that afternoon.</p><p>But when that same sales manager needs to prepare for quarterly planning, they use our comprehensive sales dashboard that includes historical trends, competitive analysis, and market context. Different tools, different purposes.</p><h2><strong>The Right Tool for the Right Job</strong></h2><p>I&#8217;ve learned to think about dashboards like I think about other business tools. I wouldn't use a screwdriver to hammer a nail, and I shouldn't use an exploration dashboard to make quick decisions.</p><p>Here's how I've learned to categorize dashboard needs:</p><p><strong>Decision Dashboards</strong> excel when users need to make fast, frequent decisions. For example, say you need to see three critical metrics for the previous week. Imagine that at the top of the dashboard below, the three critical metrics are costs, revenue, and returns. Within seconds, you would be able to instantly understand what went up or down, informing where you need to invest your time and effort.<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_!qJfG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e33c3-1809-41cf-ba57-a7b41fc5a59d_2210x798.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qJfG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e33c3-1809-41cf-ba57-a7b41fc5a59d_2210x798.png 424w, https://substackcdn.com/image/fetch/$s_!qJfG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e33c3-1809-41cf-ba57-a7b41fc5a59d_2210x798.png 848w, https://substackcdn.com/image/fetch/$s_!qJfG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e33c3-1809-41cf-ba57-a7b41fc5a59d_2210x798.png 1272w, https://substackcdn.com/image/fetch/$s_!qJfG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e33c3-1809-41cf-ba57-a7b41fc5a59d_2210x798.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qJfG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e33c3-1809-41cf-ba57-a7b41fc5a59d_2210x798.png" width="1456" height="526" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/632e33c3-1809-41cf-ba57-a7b41fc5a59d_2210x798.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:526,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&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="" srcset="https://substackcdn.com/image/fetch/$s_!qJfG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e33c3-1809-41cf-ba57-a7b41fc5a59d_2210x798.png 424w, https://substackcdn.com/image/fetch/$s_!qJfG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e33c3-1809-41cf-ba57-a7b41fc5a59d_2210x798.png 848w, https://substackcdn.com/image/fetch/$s_!qJfG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e33c3-1809-41cf-ba57-a7b41fc5a59d_2210x798.png 1272w, https://substackcdn.com/image/fetch/$s_!qJfG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F632e33c3-1809-41cf-ba57-a7b41fc5a59d_2210x798.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 1</strong>: An example dashboard that displays three major KPIs across the top for three critical metrics, and whether they were up or down for the previous week. Green metrics should go up, and red metrics should go down.</figcaption></figure></div><p><strong>Exploration Dashboards</strong> work best for understanding context, trends, and complex relationships. For example, when we're analyzing electoral performance, we need to understand precinct-level voting patterns, turnout comparisons across election cycles, registration trends, and demographic shifts over multiple years. This comprehensive view helps us identify which precincts are becoming more competitive, where voter engagement is changing, and how to allocate resources for maximum impact in future campaigns.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</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_!TUBi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc44a30ae-eb2f-4009-a0f9-ab943eff5ef4_1902x810.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TUBi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc44a30ae-eb2f-4009-a0f9-ab943eff5ef4_1902x810.png 424w, https://substackcdn.com/image/fetch/$s_!TUBi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc44a30ae-eb2f-4009-a0f9-ab943eff5ef4_1902x810.png 848w, https://substackcdn.com/image/fetch/$s_!TUBi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc44a30ae-eb2f-4009-a0f9-ab943eff5ef4_1902x810.png 1272w, https://substackcdn.com/image/fetch/$s_!TUBi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc44a30ae-eb2f-4009-a0f9-ab943eff5ef4_1902x810.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TUBi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc44a30ae-eb2f-4009-a0f9-ab943eff5ef4_1902x810.png" width="1456" height="620" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c44a30ae-eb2f-4009-a0f9-ab943eff5ef4_1902x810.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:620,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:844561,&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://kylechalmersefishent.substack.com/i/171491002?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc44a30ae-eb2f-4009-a0f9-ab943eff5ef4_1902x810.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_!TUBi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc44a30ae-eb2f-4009-a0f9-ab943eff5ef4_1902x810.png 424w, https://substackcdn.com/image/fetch/$s_!TUBi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc44a30ae-eb2f-4009-a0f9-ab943eff5ef4_1902x810.png 848w, https://substackcdn.com/image/fetch/$s_!TUBi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc44a30ae-eb2f-4009-a0f9-ab943eff5ef4_1902x810.png 1272w, https://substackcdn.com/image/fetch/$s_!TUBi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc44a30ae-eb2f-4009-a0f9-ab943eff5ef4_1902x810.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 2</strong>: This table shows Democratic voting performance across 18 precincts in CD7, comparing 2022 and 2024 election data with color-coding to highlight trends and competitive dynamics, allowing the user to dig into very specific numbers.</figcaption></figure></div><p><strong>Storytelling Dashboards</strong> work best for external communication. Board presentations, client reports, and stakeholder updates need interactive maps and clear outcome summaries that walk people through results and patterns rather than drive immediate tactical decisions. For example, when analyzing who won an election, you can look at the map below and understand that the Democratic candidate won all of the western precincts while the Republican candidate won the eastern precincts, and then layer on a story as to why this happened.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</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_!SEGD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227ee7d9-a0f8-4168-8568-eb687cd6cc3b_1700x666.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SEGD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227ee7d9-a0f8-4168-8568-eb687cd6cc3b_1700x666.png 424w, https://substackcdn.com/image/fetch/$s_!SEGD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227ee7d9-a0f8-4168-8568-eb687cd6cc3b_1700x666.png 848w, https://substackcdn.com/image/fetch/$s_!SEGD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227ee7d9-a0f8-4168-8568-eb687cd6cc3b_1700x666.png 1272w, https://substackcdn.com/image/fetch/$s_!SEGD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227ee7d9-a0f8-4168-8568-eb687cd6cc3b_1700x666.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SEGD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227ee7d9-a0f8-4168-8568-eb687cd6cc3b_1700x666.png" width="1456" height="570" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/227ee7d9-a0f8-4168-8568-eb687cd6cc3b_1700x666.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:570,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1019467,&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://kylechalmersefishent.substack.com/i/171491002?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227ee7d9-a0f8-4168-8568-eb687cd6cc3b_1700x666.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_!SEGD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227ee7d9-a0f8-4168-8568-eb687cd6cc3b_1700x666.png 424w, https://substackcdn.com/image/fetch/$s_!SEGD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227ee7d9-a0f8-4168-8568-eb687cd6cc3b_1700x666.png 848w, https://substackcdn.com/image/fetch/$s_!SEGD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227ee7d9-a0f8-4168-8568-eb687cd6cc3b_1700x666.png 1272w, https://substackcdn.com/image/fetch/$s_!SEGD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F227ee7d9-a0f8-4168-8568-eb687cd6cc3b_1700x666.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 3</strong>: The 2022 election results of Maricopa County's CD4 precincts, color-coded by party performance, and telling the story of who won the race and where.</figcaption></figure></div><h2><strong>What I've Learned About the Collaborative Process</strong></h2><p>The best data professionals I work with always start by asking about purpose and audience. They've taught me that building useful dashboards isn't a one-time project&#8212;it's an ongoing conversation about matching tools to needs.</p><p>Here are the two questions they ask during dashboard review sessions:</p><ol><li><p>"Is this dashboard for making decisions, exploring data, or telling a story?"</p></li><li><p>"Walk me through what you would do right now based on what you see."</p></li></ol><p>The first question determines the dashboard's purpose and shapes everything about the design approach. The second has become their standard request to test usability and workflow during reviews.</p><p>These sessions reveal not just gaps in the data, but mismatches between dashboard type and use case. Sometimes we realize we built an exploration tool when we needed a decision tool, or created a decision dashboard when stakeholders actually needed to understand historical context first.</p><h2><strong>Context Drives Design</strong></h2><p>The best dashboards aren&#8217;t just visually appealing&#8212;they&#8217;re strategically designed to match their purpose and audience. This aligns with <a href="https://figr.design/blog/dashboard-design-best-practices">established design principles that emphasize starting with a clear purpose and a deep understanding of intended users</a> [Figr Design], whether that&#8217;s executives needing strategic context or front-line managers making rapid operational decisions.</p><p>The marketing team I work with follows a similar pattern. Daily budget allocation decisions happen with a three-chart dashboard. Monthly strategy planning uses comprehensive views with historical performance, competitive analysis, and market trends.</p><h2><strong>My Current Approach</strong></h2><p>Given all my experience iterating with teams to create valuable visuals, here's how I approach dashboard projects now:</p><p><strong>Start with purpose and frequency.</strong> I ask whether this is for regular decisions, periodic exploration, or storytelling. Daily decisions need simple, focused tools. Monthly planning can handle more complexity. Quarterly presentations need narrative structure.</p><p><strong>Match complexity to cognitive capacity.</strong> When someone is making rapid decisions under pressure, I collaborate with analysts to eliminate everything non-essential. When someone has time to analyze and reflect, comprehensive views become valuable.</p><p><strong>Test with real scenarios and time constraints.</strong> I show decision dashboards to users making actual decisions under real time pressure. For exploration dashboards, I watch people work through actual analysis tasks. Different purposes require different testing approaches.</p><p><strong>Expect different iteration cycles.</strong> Decision dashboards need rapid feedback and quick changes because usage patterns become obvious fast. Exploration dashboards evolve more slowly as people discover what analysis patterns matter most.</p><h2><strong>What Success Looks Like</strong></h2><p>The most successful dashboard projects I've been part of create tools that match their intended use. Our quick decision dashboards help people take action in under 60 seconds. Our exploration dashboards help teams uncover insights they wouldn&#8217;t have found otherwise. Our storytelling dashboards help stakeholders understand and remember key messages.</p><p>The goal isn't to create one perfect dashboard. The goal is to create the right dashboard for each specific need. Sometimes that's a simple three-chart decision tool. Sometimes it's a comprehensive exploration environment. Often, it's both.</p><h2><strong>Your Next Step</strong></h2><p>This week, look at the dashboards your team actually uses and ask: "What is this dashboard supposed to accomplish?" If it's meant to drive quick decisions but takes more than 60 seconds to use, consider collaborating with your data team on a more focused version. If it's meant for exploration or storytelling but feels too simple, maybe it needs a more comprehensive context.</p><p>The question isn't whether you have the right amount of data&#8212;it's whether you have the right type of dashboard for each specific purpose. Working with data professionals has taught me that the best reporting strategies use multiple dashboards, each optimized for its intended use case.</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>To see the visual click here: <a href="https://public.tableau.com/app/profile/kyle.chalmers7732/viz/CriticalKPIsDemoDashboards/KPIsDashboard">Critical KPIs Demo Dashboards</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>To see the visual click here: <a href="https://public.tableau.com/app/profile/kyle.chalmers7732/viz/PimaCountyOfficeAnalysis/DetailTables">Pima County and Tucson Historical Voting Trends Analysis</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>To see the visual click here: <a href="https://public.tableau.com/app/profile/kyle.chalmers7732/viz/Dynamic2022MaricopaCountyElectionAnalysis/MaricopaCountyDownBallotElectionResultsAnalysis">2022 Maricopa County Down Ballot Election Analysis</a></p></div></div>]]></content:encoded></item><item><title><![CDATA[AZ CD7 Results vs. My Predictions: What I Got Right (and Wrong)]]></title><description><![CDATA[A comparison of my pre-election projections to the actual AZ CD7 results and what I learned.]]></description><link>https://kylechalmerslabs.substack.com/p/az-cd7-results-vs-my-predictions</link><guid isPermaLink="false">https://kylechalmerslabs.substack.com/p/az-cd7-results-vs-my-predictions</guid><dc:creator><![CDATA[Kyle Chalmers]]></dc:creator><pubDate>Fri, 08 Aug 2025 20:03:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!idxw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc990de-1d53-40e1-abaf-4ba3249cf1b8_1440x982.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>If you have not read the below linked post, I recommend doing so before reading this article.</em></p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;8338bbd3-3d6e-49ed-b1c4-bb2994b9aafc&quot;,&quot;caption&quot;:&quot;To see the data visualizations shown below and utilized for the analysis, click here.&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;sm&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;A Data-Driven Analysis of How to Win the 2025 AZ Congressional District 7 Democratic Special Primary Election&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:23774406,&quot;name&quot;:&quot;Kyle Chalmers&quot;,&quot;bio&quot;:&quot;The Analytics Campaign: Writing About Interesting Data Analysis and Visualizations (Mainly Politics) | Founder of Efishent&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4516e1e6-c42b-4be7-85fc-2077de497418_1685x1685.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2025-07-08T16:02:49.232Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!yJeO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192db29-6a5a-4caf-a92f-ac1f173c842e_499x516.jpeg&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://kylechalmersefishent.substack.com/p/data-driven-analysis-of-how-to-win-the-2025-az-cd7-democratic-special-primary-election&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:165169398,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:null,&quot;publication_name&quot;:&quot;The Analytics Campaign&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:false,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!idxw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc990de-1d53-40e1-abaf-4ba3249cf1b8_1440x982.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!idxw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc990de-1d53-40e1-abaf-4ba3249cf1b8_1440x982.jpeg 424w, https://substackcdn.com/image/fetch/$s_!idxw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc990de-1d53-40e1-abaf-4ba3249cf1b8_1440x982.jpeg 848w, https://substackcdn.com/image/fetch/$s_!idxw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc990de-1d53-40e1-abaf-4ba3249cf1b8_1440x982.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!idxw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc990de-1d53-40e1-abaf-4ba3249cf1b8_1440x982.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!idxw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc990de-1d53-40e1-abaf-4ba3249cf1b8_1440x982.jpeg" width="728" height="496.4555555555556" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0cc990de-1d53-40e1-abaf-4ba3249cf1b8_1440x982.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:982,&quot;width&quot;:1440,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Adelita Grijalva wins Democratic primary for Arizona US House seat held by  her late father - The Boston Globe&quot;,&quot;title&quot;:&quot;Adelita Grijalva wins Democratic primary for Arizona US House seat held by  her late father - The Boston Globe&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="Adelita Grijalva wins Democratic primary for Arizona US House seat held by  her late father - The Boston Globe" title="Adelita Grijalva wins Democratic primary for Arizona US House seat held by  her late father - The Boston Globe" srcset="https://substackcdn.com/image/fetch/$s_!idxw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc990de-1d53-40e1-abaf-4ba3249cf1b8_1440x982.jpeg 424w, https://substackcdn.com/image/fetch/$s_!idxw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc990de-1d53-40e1-abaf-4ba3249cf1b8_1440x982.jpeg 848w, https://substackcdn.com/image/fetch/$s_!idxw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc990de-1d53-40e1-abaf-4ba3249cf1b8_1440x982.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!idxw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cc990de-1d53-40e1-abaf-4ba3249cf1b8_1440x982.jpeg 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"><svg role="img" 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"><g><title></title><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"><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"><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">Grijalva after she won the Democratic Primary. &#169;&#8239;Associated&#8239;Press, via The Boston Globe.</figcaption></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://kylechalmerslabs.substack.com/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://kylechalmerslabs.substack.com/subscribe?"><span>Subscribe now</span></a></p><h3>Adelita Grijalva Won Decisively</h3><p><a href="https://results.arizona.vote/#/featured/71/0">With 100% of precincts reporting</a>, 63,219 ballots were cast in the AZ CD7 Special Democratic Primary, and 62,909 votes were counted. Adelita Grijalva won decisively with 61.48% of the vote (38,679 votes). Deja Foxx followed with 22.38% (14,078 votes) and Daniel Hernandez with 13.58% (8,541 votes), while the remaining 2.56% (1,612 votes) went to two other candidates. Even if Foxx, Hernandez, and the others had combined forces, Grijalva still would have won by more than 14,000 votes.</p><p>With the ballots now counted, it&#8217;s time to see how <a href="https://kylechalmersefishent.substack.com/p/data-driven-analysis-of-how-to-win-the-2025-az-cd7-democratic-special-primary-election">my pre&#8209;election data analysis</a> stacked up against the real results, and what those comparisons reveal. </p><div><hr></div><h3>My Analysis vs. Reality</h3><h4>Comparison #1: Threshold for Victory</h4><ul><li><p><em><strong>Analysis Calculation:</strong></em><strong> </strong>A candidate would need<strong> 29,876 votes</strong>, <strong>or 148 votes per precinct </strong>on average, to guarantee victory<strong>.</strong></p></li><li><p><em><strong>Results:</strong></em><strong> </strong>In reality, a candidate needed<strong> 31,455 votes</strong>, <strong>or 156 votes per precinct </strong>on average, to guarantee victory<strong>.</strong></p></li></ul><p>My estimate came in <strong>1,579 votes lower</strong> than the actual threshold, a difference of about 5% both in total votes and votes per precinct. That&#8217;s a reasonably close prediction, but from a campaign planning standpoint, it&#8217;s always safer to <em>overestimate</em> than to risk falling short.</p><p>The shortfall stems from the way I calculated the threshold. I started with the number of eligible individuals who voted in the last two Democratic primaries&#8212;58,851 in 2024 and 60,653 in 2022. I added those totals together, divided by two to get the average, then took half of that average to represent the 50% vote share needed to win.</p><p>This figure lined up with the average 50% threshold from the last two primary elections: <a href="https://www.cnn.com/election/2022/results/arizona/democratic-primaries/us-house-district-7">62,457 total votes in 2022</a> and <a href="https://www.cnn.com/election/2024/primaries-and-caucuses/results/arizona/democratic-party/us-house-district-7">55,133 total votes in 2024</a>. Using the same calculation, my projected threshold was actually 478 votes higher than what those past results would have suggested.</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\begin{equation}\n\\begin{gathered}\n\\textbf{Average of 2025 Eligible Voters from the Last 2 Primaries} \\\\\n\\\\[-0.3em]\n\\dfrac{(58{,}851 + 60{,}653)}{(2 + 2)} = 29{,}876 \\\\\n\\\\[0.5em]\n\\textbf{Average of the Last 2 Primaries} \\\\\n\\\\[-0.3em]\n\\dfrac{(62{,}457 + 55{,}133)}{(2 + 2)} = 29{,}398 \\\\\n\\\\[.5em]\n\\textbf{Difference: } 29{,}876 - 29{,}398 = 478\n\\end{gathered}\n\\end{equation}&quot;,&quot;id&quot;:&quot;CSLPVEAEJO&quot;}" data-component-name="LatexBlockToDOM"></div><p>This seemed (and still seems) like a sound estimate because it reflected the balance of factors I believed would either boost (&#8593;) or suppress (&#8595;) turnout compared to those prior races:</p><ol><li><p>The past two primary elections were on-cycle (&#8593;), while the 2025 race was <a href="https://www.ncsl.org/state-legislatures-news/details/when-it-comes-to-turnout-in-local-elections-timing-matters#:~:text=He%20cited%20the%20case%20of,turnout%20of%20more%20than%20244%2C000">off-cycle</a> (&#8595;).</p></li><li><p>The past two primaries were uncontested (&#8595;), while 2025 was <a href="https://www.pewresearch.org/short-reads/2018/10/03/turnout-in-this-years-u-s-house-primaries-rose-sharply-especially-on-the-democratic-side/#:~:text=Unlike%20in%202014%2C%20when%202,tend%20to%20attract%20more%20voters">contested</a> (&#8593;).</p></li><li><p>The 2022 primary occurred about two years after the start of COVID, when <a href="https://www.pewresearch.org/short-reads/2023/03/10/turnout-in-2022-house-midterms-declined-from-2018-high-final-official-returns-show/#:~:text=Nationwide%2C%20nearly%20107,elections%20in%20the%202014%20midterms">voter participation was higher</a> (&#8593;).</p></li><li><p>The 2024 primary was in a <a href="https://www.pewresearch.org/short-reads/2018/10/03/turnout-in-this-years-u-s-house-primaries-rose-sharply-especially-on-the-democratic-side/#:~:text=Voter%20turnout%20typically%20sags%20across,in%20more%20than%20two%20decades">presidential election year</a> (&#8593;).</p></li><li><p>With no other major races on the ballot and the special circumstance of Rep. Ra&#250;l Grijalva&#8217;s passing, the <a href="https://abcnews.go.com/Politics/house-special-election-primary-arizona-latest-flashpoint-democrats/story?id=123773889#:~:text=Lavenia%2FGetty%20Images">2025 special election</a> was drawing more <a href="https://azmirror.com/2025/07/15/adelita-grijalva-wins-az-district-7-democratic-primary-special-electio/#:~:text=Gen%20Z%20activist%20and%20first,of%20votes">media attention</a> (&#8593;).</p></li></ol><p>With these assumptions, each primary election had three boosting (&#8593;) and two suppressing (&#8595;) effects for voter participation. However, <strong>Figure 1<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></strong> makes it clear that 2024 was a low&#8209;turnout year, with more than 3,000 fewer votes needed to reach the 50% threshold compared to either 2022 or 2025.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C6f9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F657a3031-3725-4fca-842c-48ce9d7f945c_1779x1180.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C6f9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F657a3031-3725-4fca-842c-48ce9d7f945c_1779x1180.png 424w, https://substackcdn.com/image/fetch/$s_!C6f9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F657a3031-3725-4fca-842c-48ce9d7f945c_1779x1180.png 848w, https://substackcdn.com/image/fetch/$s_!C6f9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F657a3031-3725-4fca-842c-48ce9d7f945c_1779x1180.png 1272w, https://substackcdn.com/image/fetch/$s_!C6f9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F657a3031-3725-4fca-842c-48ce9d7f945c_1779x1180.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C6f9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F657a3031-3725-4fca-842c-48ce9d7f945c_1779x1180.png" width="1456" height="966" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/657a3031-3725-4fca-842c-48ce9d7f945c_1779x1180.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:966,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:81270,&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://kylechalmersefishent.substack.com/i/168320276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F657a3031-3725-4fca-842c-48ce9d7f945c_1779x1180.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_!C6f9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F657a3031-3725-4fca-842c-48ce9d7f945c_1779x1180.png 424w, https://substackcdn.com/image/fetch/$s_!C6f9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F657a3031-3725-4fca-842c-48ce9d7f945c_1779x1180.png 848w, https://substackcdn.com/image/fetch/$s_!C6f9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F657a3031-3725-4fca-842c-48ce9d7f945c_1779x1180.png 1272w, https://substackcdn.com/image/fetch/$s_!C6f9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F657a3031-3725-4fca-842c-48ce9d7f945c_1779x1180.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 1</strong>: Visualized on a relative scale, the actual 50% vote thresholds for Democratic primaries are in dark blue, while the calculated 2025 threshold and 2022-2024 average threshold are in light blue.</figcaption></figure></div><p>So why did my analysis underestimate the 50% threshold? I see three main reasons:<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a></p><ol><li><p><strong>Low 2024 turnout:</strong> <a href="https://www.pewresearch.org/politics/2025/06/26/voter-turnout-2020-2024/?utm_source=chatgpt.com">Including 2024&#8217;s depressed Democratic turnout pulled the average down.</a> 2025 more closely resembled 2022&#8217;s participation levels, with only 227 votes separating their 50% thresholds. However, 2024 was the most recent election cycle, so it seemed unwise to exclude it.</p></li><li><p><strong>Limited turnout projection method:</strong><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a><strong> </strong>My estimate relied on averaging the number of 2025-eligible voters who participated in the last two Democratic primaries. While effective directionally, it didn&#8217;t account for <a href="https://redistrictingdatahub.org/wp-content/uploads/2021/08/Arizona-District-Population-Change-Report.pdf">population</a> and <a href="https://azmirror.com/2025/07/15/adelita-grijalva-wins-az-district-7-democratic-primary-special-electio/#:~:text=%E2%80%9CThere%20are%20438%2C930%20Arizonans%20who,here%20in%20Arizona%2C%E2%80%9D%20he%20said">voter growth</a> across Arizona. I could have supplemented my projection by applying historical participation rates to the 208,751 active, 2025-eligible voters to generate an additional turnout estimate and 50% threshold. That projection would follow a formula like:</p></li></ol><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\begin{equation}\n\\begin{aligned}\n&amp;\\dfrac{208,751 \\times \\text{Projected Voter Participation %} }{2} \n= \\text{Projected 50% Threshold}\n\\end{aligned}\n\\end{equation}&quot;,&quot;id&quot;:&quot;OMYQEEKLHJ&quot;}" data-component-name="LatexBlockToDOM"></div><ol start="3"><li><p><strong>Higher visibility in 2025: </strong>This race saw <a href="https://azmirror.com/2025/07/15/adelita-grijalva-wins-az-district-7-democratic-primary-special-electio/#:~:text=Gen%20Z%20activist%20and%20first,of%20votes">more media coverage and campaign spending</a> than past cycles when Ra&#250;l Grijalva ran unopposed, likely giving turnout an extra boost.</p></li></ol><p>Even with these gaps, my estimate was only 1,579 votes (~5%) below the actual threshold. And regardless of the exact number, the campaign&#8217;s fundamental goal would remain the same: secure as many votes as possible. The more critical challenge is understanding <strong>how</strong> people vote (Comparison #2) and <strong>where</strong> the largest voter concentrations are (Comparisons #3 and #4) to prioritize outreach accordingly.</p><p><strong>TLDR Conclusion: </strong>The 29,876 vote estimate was close, but 5% lower than the actual threshold mainly due to 2024&#8217;s weak turnout, lack of alternative projection methods, and increased attention on the 2025 race.</p><div><hr></div><h4>Comparison #2: Early Votes</h4><ul><li><p><em><strong>Analysis Calculation:</strong></em><strong> </strong>Of all voters, <strong>92.67% will vote early.</strong></p></li><li><p><em><strong>Results:</strong></em><strong> </strong>Of all voters,<strong> 92.91% voted early.</strong></p></li></ul><p>My estimate came in just 0.24 percentage points below the actual early vote rate! I reached 92.67% by averaging the number of voters who cast early ballots in 2022 (56,539) and 2024 (54,199), then dividing that average by the 29,876 vote threshold.</p><div class="latex-rendered" data-attrs="{&quot;persistentExpression&quot;:&quot;\\begin{equation}\n\\dfrac{(56{,}539 + 54{,}199)}{(2 + 2)} = 27{,}685 \\quad \\Rightarrow \\quad \\dfrac{27{,}685}{29{,}876} = 92.67\\%\n\\end{equation}\n&quot;,&quot;id&quot;:&quot;IVKSQSCCHV&quot;}" data-component-name="LatexBlockToDOM"></div><p>Ironically, simply averaging the actual early vote percentages from 2022 (93.67%) and 2024 (92.10%) would have landed even closer at 92.86%, just 0.05 percentage points off the actual result.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!inx0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b2562d-7b8b-4697-ae39-49ab8c220690_1779x979.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!inx0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b2562d-7b8b-4697-ae39-49ab8c220690_1779x979.png 424w, https://substackcdn.com/image/fetch/$s_!inx0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b2562d-7b8b-4697-ae39-49ab8c220690_1779x979.png 848w, https://substackcdn.com/image/fetch/$s_!inx0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b2562d-7b8b-4697-ae39-49ab8c220690_1779x979.png 1272w, https://substackcdn.com/image/fetch/$s_!inx0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b2562d-7b8b-4697-ae39-49ab8c220690_1779x979.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!inx0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b2562d-7b8b-4697-ae39-49ab8c220690_1779x979.png" width="1456" height="801" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/11b2562d-7b8b-4697-ae39-49ab8c220690_1779x979.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:801,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:94886,&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://kylechalmersefishent.substack.com/i/168320276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b2562d-7b8b-4697-ae39-49ab8c220690_1779x979.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_!inx0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b2562d-7b8b-4697-ae39-49ab8c220690_1779x979.png 424w, https://substackcdn.com/image/fetch/$s_!inx0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b2562d-7b8b-4697-ae39-49ab8c220690_1779x979.png 848w, https://substackcdn.com/image/fetch/$s_!inx0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b2562d-7b8b-4697-ae39-49ab8c220690_1779x979.png 1272w, https://substackcdn.com/image/fetch/$s_!inx0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11b2562d-7b8b-4697-ae39-49ab8c220690_1779x979.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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">Visual 2: Early voting percentage and number by candidate with a reference line for the analysis calculation, visualized on a relative scale.</figcaption></figure></div><p>All candidates received above 90% of their votes early, except Foxx, who with 89.93% of her votes cast early, was about 3 points below the overall average of 92.91%. This may suggest she appealed slightly more to in-person voters, but the broader trend holds: <a href="https://azmirror.com/2024/03/01/more-than-75-of-voters-use-early-ballots-every-az-house-republican-voted-to-take-that-away/?utm_source=chatgpt.com">Arizonans overwhelmingly vote by mail</a>.</p><p><strong>TLDR Conclusion: </strong>The early vote estimate was spot on within a quarter of a percentage point of the actual result.</p><div><hr></div><h4>Comparison #3: Precinct Targeting Accuracy</h4><ul><li><p><em><strong>Analysis Calculation:</strong></em><strong> </strong>The top 12 most important precincts by <strong>highly probable voters</strong> were all in Pima County and ranked as follows:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cxkp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d00e09d-a9fd-46c0-9809-ffe4531b504b_1745x775.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cxkp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d00e09d-a9fd-46c0-9809-ffe4531b504b_1745x775.png 424w, https://substackcdn.com/image/fetch/$s_!cxkp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d00e09d-a9fd-46c0-9809-ffe4531b504b_1745x775.png 848w, https://substackcdn.com/image/fetch/$s_!cxkp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d00e09d-a9fd-46c0-9809-ffe4531b504b_1745x775.png 1272w, https://substackcdn.com/image/fetch/$s_!cxkp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d00e09d-a9fd-46c0-9809-ffe4531b504b_1745x775.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cxkp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d00e09d-a9fd-46c0-9809-ffe4531b504b_1745x775.png" width="1456" height="647" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d00e09d-a9fd-46c0-9809-ffe4531b504b_1745x775.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:647,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66637,&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://kylechalmersefishent.substack.com/i/168320276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d00e09d-a9fd-46c0-9809-ffe4531b504b_1745x775.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_!cxkp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d00e09d-a9fd-46c0-9809-ffe4531b504b_1745x775.png 424w, https://substackcdn.com/image/fetch/$s_!cxkp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d00e09d-a9fd-46c0-9809-ffe4531b504b_1745x775.png 848w, https://substackcdn.com/image/fetch/$s_!cxkp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d00e09d-a9fd-46c0-9809-ffe4531b504b_1745x775.png 1272w, https://substackcdn.com/image/fetch/$s_!cxkp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d00e09d-a9fd-46c0-9809-ffe4531b504b_1745x775.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 3: </strong>Top 12 precincts by highly probable voters, with Precinct 23 highlighted as it does not appear in the actual top 12 by votes.</figcaption></figure></div><ul><li><p><em><strong>Results:</strong></em><strong> </strong>The top 12 precincts by <strong>total votes cast</strong> were all in Pima County and ranked as follows:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qYEY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b16377-36e6-47ee-af3e-a04dab6bd53f_1745x775.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qYEY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b16377-36e6-47ee-af3e-a04dab6bd53f_1745x775.png 424w, https://substackcdn.com/image/fetch/$s_!qYEY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b16377-36e6-47ee-af3e-a04dab6bd53f_1745x775.png 848w, https://substackcdn.com/image/fetch/$s_!qYEY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b16377-36e6-47ee-af3e-a04dab6bd53f_1745x775.png 1272w, https://substackcdn.com/image/fetch/$s_!qYEY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b16377-36e6-47ee-af3e-a04dab6bd53f_1745x775.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qYEY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b16377-36e6-47ee-af3e-a04dab6bd53f_1745x775.png" width="1456" height="647" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24b16377-36e6-47ee-af3e-a04dab6bd53f_1745x775.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:647,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:59077,&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://kylechalmersefishent.substack.com/i/168320276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b16377-36e6-47ee-af3e-a04dab6bd53f_1745x775.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_!qYEY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b16377-36e6-47ee-af3e-a04dab6bd53f_1745x775.png 424w, https://substackcdn.com/image/fetch/$s_!qYEY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b16377-36e6-47ee-af3e-a04dab6bd53f_1745x775.png 848w, https://substackcdn.com/image/fetch/$s_!qYEY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b16377-36e6-47ee-af3e-a04dab6bd53f_1745x775.png 1272w, https://substackcdn.com/image/fetch/$s_!qYEY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24b16377-36e6-47ee-af3e-a04dab6bd53f_1745x775.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 4: </strong>Top 12 precincts by actual votes, with Precinct 235 highlighted as it does not appear in the original top 12 by highly probable voters.</figcaption></figure></div><p>11 of the 12 precincts appear on both lists, with only one swap between Precinct 23 (in the projection) and Precinct 235 (in the actuals). Even then, the margins were slim:</p><ul><li><p>Precinct 235 was ranked 14th in my original analysis.</p></li><li><p>Precinct 23 ended up 13th in total votes.</p></li></ul><p>In terms of rank accuracy, three precincts matched their exact positions<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a>  and all other shared precincts landed within two spots of their projected rank.</p><p>Beyond the top 12, ranking accuracy shifted more especially as the populations became smaller.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> Among the top 20 precincts, 15 were within three spots of their projected rank, but across the full list, only 38.3% of precincts landed within three places of their predicted position.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tW8E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238d9da9-f726-432c-9efe-c5054b3d79e8_1580x980.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tW8E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238d9da9-f726-432c-9efe-c5054b3d79e8_1580x980.png 424w, https://substackcdn.com/image/fetch/$s_!tW8E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238d9da9-f726-432c-9efe-c5054b3d79e8_1580x980.png 848w, https://substackcdn.com/image/fetch/$s_!tW8E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238d9da9-f726-432c-9efe-c5054b3d79e8_1580x980.png 1272w, https://substackcdn.com/image/fetch/$s_!tW8E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238d9da9-f726-432c-9efe-c5054b3d79e8_1580x980.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tW8E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238d9da9-f726-432c-9efe-c5054b3d79e8_1580x980.png" width="1456" height="903" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/238d9da9-f726-432c-9efe-c5054b3d79e8_1580x980.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:903,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:68419,&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://kylechalmersefishent.substack.com/i/168320276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238d9da9-f726-432c-9efe-c5054b3d79e8_1580x980.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_!tW8E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238d9da9-f726-432c-9efe-c5054b3d79e8_1580x980.png 424w, https://substackcdn.com/image/fetch/$s_!tW8E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238d9da9-f726-432c-9efe-c5054b3d79e8_1580x980.png 848w, https://substackcdn.com/image/fetch/$s_!tW8E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238d9da9-f726-432c-9efe-c5054b3d79e8_1580x980.png 1272w, https://substackcdn.com/image/fetch/$s_!tW8E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F238d9da9-f726-432c-9efe-c5054b3d79e8_1580x980.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 5:</strong> The first four bars compare projected vs. actual rank proximity; the last two show how many precincts fell inside the top 83 and 112 in both rankings.</figcaption></figure></div><p>Despite the movement in rankings, the broader analysis was directionally strong. In <a href="https://kylechalmersefishent.substack.com/p/data-driven-analysis-of-how-to-win-the-2025-az-cd7-democratic-special-primary-election">my previous article</a>, I focused on the top 83 precincts because they collectively surpassed the estimated vote threshold of 29,876, and also the top 112 precincts because each had at least 148 highly probable voters. Within those two groups:</p><ul><li><p><strong>92.8%</strong> (77 of 83) of my selected precincts were also in the top 83 by votes cast.</p></li><li><p><strong>96.4%</strong> (108 of 112) were in the top 112 by votes cast.</p></li></ul><p>Even with the rank shuffling, the precinct group targeting approach proved highly accurate.</p><p><strong>TLDR Conclusion: </strong>11 of the top 12 projected precincts matched the actual top 12, and 93&#8211;96% of all targeted precincts landed in the top-performing groups&#8212;confirming the analysis was directionally strong.</p><div><hr></div><h4>Comparison #4: Winning the Tucson Area is Key</h4><ul><li><p><em><strong>Analysis Calculation:</strong></em><strong> </strong>The candidate that wins the most votes in the Pima County precincts around the central, south, and west metro areas of Tucson will win.</p></li><li><p><em><strong>Results:</strong></em><strong> </strong>Adelita Grijalva dominated Pima County, winning 61.42% of the vote there and finishing more than 17,000 votes ahead of any other candidate.<strong> </strong>She earned over 9,500 votes from the top 19 Tucson-area precincts alone.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NZaU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faadcf717-af80-46e1-9967-0762bed0dc7d_2370x1471.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NZaU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faadcf717-af80-46e1-9967-0762bed0dc7d_2370x1471.png 424w, https://substackcdn.com/image/fetch/$s_!NZaU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faadcf717-af80-46e1-9967-0762bed0dc7d_2370x1471.png 848w, https://substackcdn.com/image/fetch/$s_!NZaU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faadcf717-af80-46e1-9967-0762bed0dc7d_2370x1471.png 1272w, https://substackcdn.com/image/fetch/$s_!NZaU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faadcf717-af80-46e1-9967-0762bed0dc7d_2370x1471.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NZaU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faadcf717-af80-46e1-9967-0762bed0dc7d_2370x1471.png" width="1456" height="904" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aadcf717-af80-46e1-9967-0762bed0dc7d_2370x1471.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:904,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:110536,&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://kylechalmersefishent.substack.com/i/168320276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faadcf717-af80-46e1-9967-0762bed0dc7d_2370x1471.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_!NZaU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faadcf717-af80-46e1-9967-0762bed0dc7d_2370x1471.png 424w, https://substackcdn.com/image/fetch/$s_!NZaU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faadcf717-af80-46e1-9967-0762bed0dc7d_2370x1471.png 848w, https://substackcdn.com/image/fetch/$s_!NZaU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faadcf717-af80-46e1-9967-0762bed0dc7d_2370x1471.png 1272w, https://substackcdn.com/image/fetch/$s_!NZaU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faadcf717-af80-46e1-9967-0762bed0dc7d_2370x1471.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 6:</strong> Vote share and total by candidate in Pima County</figcaption></figure></div><p>Grijalva&#8217;s strength in Pima and Tucson was decisive:</p><ul><li><p>She won <strong>112 out of 114 precincts</strong>, only losing two tiny precincts (250 and 267) with a combined total of just <strong>8 votes</strong>.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a></p></li><li><p>She won <strong>61 precincts with more than 61.42%</strong> of the vote.</p></li><li><p>Of the top 20 vote-producing precincts, 19 were in Pima County, all clustered in the Tucson metro area.</p></li></ul><p>In those 19 Tucson-area precincts, she received <strong>9,704 votes</strong>, or <strong>61.04%</strong> of the vote share. That is an average of <strong>511 votes per precinct</strong>, more than <strong>3&#215; higher</strong> than the <strong>156 votes per precinct</strong> needed to guarantee victory.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Eg_m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c838e55-8d02-496f-9cf7-006d2097c1a0_779x564.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Eg_m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c838e55-8d02-496f-9cf7-006d2097c1a0_779x564.png 424w, https://substackcdn.com/image/fetch/$s_!Eg_m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c838e55-8d02-496f-9cf7-006d2097c1a0_779x564.png 848w, https://substackcdn.com/image/fetch/$s_!Eg_m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c838e55-8d02-496f-9cf7-006d2097c1a0_779x564.png 1272w, https://substackcdn.com/image/fetch/$s_!Eg_m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c838e55-8d02-496f-9cf7-006d2097c1a0_779x564.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Eg_m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c838e55-8d02-496f-9cf7-006d2097c1a0_779x564.png" width="598" height="432.9550706033376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c838e55-8d02-496f-9cf7-006d2097c1a0_779x564.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:564,&quot;width&quot;:779,&quot;resizeWidth&quot;:598,&quot;bytes&quot;:322791,&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://kylechalmersefishent.substack.com/i/168320276?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c838e55-8d02-496f-9cf7-006d2097c1a0_779x564.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_!Eg_m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c838e55-8d02-496f-9cf7-006d2097c1a0_779x564.png 424w, https://substackcdn.com/image/fetch/$s_!Eg_m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c838e55-8d02-496f-9cf7-006d2097c1a0_779x564.png 848w, https://substackcdn.com/image/fetch/$s_!Eg_m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c838e55-8d02-496f-9cf7-006d2097c1a0_779x564.png 1272w, https://substackcdn.com/image/fetch/$s_!Eg_m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c838e55-8d02-496f-9cf7-006d2097c1a0_779x564.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 7</strong>: Pima County&#8217;s top 19 precincts that were won by Grijalva, shaded by highly probable voter estimates from the original analysis.</figcaption></figure></div><p>While she didn&#8217;t hit the 50% win threshold with Pima County alone, she came close&#8212;just 3,532 votes short of the 31,455 needed. She made up the difference with 10,756 additional votes from the other five counties. Even if every single one of those non-Pima votes had gone to her closest competitor, Deja Foxx, Grijalva still would have won: 27,923 (Grijalva in Pima) vs. 24,834 (Foxx&#8217;s total + Grijalva&#8217;s non-Pima votes).</p><p>In other words, Pima County alone secured her victory.</p><p><strong>TLDR Conclusion: </strong>Grijalva won 27,923 votes in Pima County, just 3,532 shy of the 50% win threshold, showing Tucson&#8217;s central role in her victory.</p><div><hr></div><h4>Final Assessment: Pretty Damn Close</h4><p>Across the board, the analysis held up very well:</p><ul><li><p>The vote threshold was ~5% below and offered a reminder that turnout projections benefit from multiple approaches.</p></li><li><p>The early vote estimate was almost exact, missing by 0.24 percentage points.</p></li><li><p>11 of the top 12 precincts matched, and 96% of all targeted precincts landed in the top 112.</p></li><li><p>Pima County alone could have delivered Grijalva the win, and the Tucson area makes up the largest portion of its votes.</p></li></ul><p>This shows that a simple, turnout-based model grounded in past voter behavior can be a powerful campaign strategy tool for guiding where, when, and how to prioritize outreach. It can provide accurate indications of what will be important going into an election and a basis for how to make smart data-driven decisions.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a></p><p>Thanks for reading! If you found this helpful or interesting, please subscribe, share, or drop a comment&#8212;I&#8217;d love to hear what you&#8217;d add, challenge, or explore next.</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>All visuals were produced using Python using pandas, numpy, and matplotlib for this analysis.</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>One additional nuance: with more than two legitimate candidates in the race, winning doesn&#8217;t require 50% of the vote&#8212;just a plurality. I noted this in my original analysis, mentioning that the 29,876 threshold seemed &#8220;reasonable with three candidates splitting the vote.&#8221; </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>Please note I did mark this as a shortcoming in<a href="https://kylechalmersefishent.substack.com/p/data-driven-analysis-of-how-to-win-the-2025-az-cd7-democratic-special-primary-election"> my previous article</a>. For readers interested in forecasting turnout, here are some academic articles discussing more sophisticated methods:</p><ul><li><p><a href="https://www.cambridge.org/core/journals/ps-political-science-and-politics/article/forecasting-us-voter-turnout/F342742751A9BF7239B2E98F289B57CD?utm_source=chatgpt.com">Forecasting US Voter Turnout &#8211; Michael&#8239;Bednarczuk (Political Science &amp; Politics, 2024)</a></p></li><li><p><a href="https://hdsr.mitpress.mit.edu/pub/0c5ylgo1?utm_source=chatgpt.com">Forecasting Turnout &#8211; Ansolabehere et al. (Harvard Data Science Review, 2024)</a></p></li><li><p><a href="https://en.wikipedia.org/wiki/Multilevel_regression_with_poststratification?utm_source=chatgpt.com">Multilevel Regression and Poststratification (MRP) &#8211; Gelman et al., Downes et al.</a></p></li><li><p><a href="https://arxiv.org/abs/2102.01535?utm_source=chatgpt.com">Predicting Propensity to Vote with Machine Learning &#8211; Pollard et al. (2021, arXiv)</a></p></li><li><p><a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3905222&amp;utm_source=chatgpt.com">How To Predict Turnout in Elections &#8211; Daniel J. Lane (SSRN Working Paper, 2021)</a></p></li></ul></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>The 3 precincts are 16 at #4, 96 at #8, and 80 at #12.</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>To see the full list of ranking comparisons, view <a href="https://drive.google.com/file/d/1KVKsDuQUlIU7hVCln1FpxLnnVxpFlH1h/view?usp=sharing">this CSV file</a>. Note: rankings were based on ballots cast (i.e., votes attempted), which may differ slightly from the actual vote totals shown in <strong>Visual 4</strong>. </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>For the Pima County vote totals and percentages by precinct, see <a href="https://drive.google.com/open?id=15MymNbW42RzLyfM-7FXsPRvll_Vu0H6j&amp;usp=drive_fs">this CSV file</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>Interested in working together? Check out my website: https://www.kclabs.ai/contact</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[A Data-Driven Analysis of How to Win the 2025 AZ Congressional District 7 Democratic Special Primary Election]]></title><description><![CDATA[TLDR: The 2025 AZ CD7 dem special primary background, identifying voting KPIs for candidates to achieve in order to win, and a data-driven approach to achieving those metrics with data vizzes]]></description><link>https://kylechalmerslabs.substack.com/p/data-driven-analysis-of-how-to-win-the-2025-az-cd7-democratic-special-primary-election</link><guid isPermaLink="false">https://kylechalmerslabs.substack.com/p/data-driven-analysis-of-how-to-win-the-2025-az-cd7-democratic-special-primary-election</guid><dc:creator><![CDATA[Kyle Chalmers]]></dc:creator><pubDate>Tue, 08 Jul 2025 16:02:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yJeO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192db29-6a5a-4caf-a92f-ac1f173c842e_499x516.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://kylechalmerslabs.substack.com/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://kylechalmerslabs.substack.com/subscribe?"><span>Subscribe now</span></a></p><p><em>To see the data visualizations shown below and utilized for the analysis, click <a href="https://public.tableau.com/views/WIPAData-DrivenAnalysisofHowtoWinthe2025AZCongressionalDistrict7DemocraticSpecialPrimaryElection/AZCD72025SpecialDemocraticPrimaryElectionAnalysis?:language=en-US&amp;publish=yes&amp;:sid=&amp;:redirect=auth&amp;:display_count=n&amp;:origin=viz_share_link">here</a>.</em></p><h3>The Background</h3><p>Early voting started on <a href="https://azsos.gov/news/954">June 18th</a> for the July 15 Arizona Congressional District 7 Special Primary Election, which will determine Democratic and Republican nominees for November&#8217;s general election. Since redistricting in 2020, this district spans across central to western AZ, along the Mexico border, covering all of Agua Prieta and Nogales, the majority of Tucson and Yuma, and even some parts of Maricopa County, making this a rather sprawling and oddly assembled district covering 6 counties: Cochise, Maricopa, Pima, Pinal, Santa Cruz, and Yuma.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yJeO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192db29-6a5a-4caf-a92f-ac1f173c842e_499x516.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yJeO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192db29-6a5a-4caf-a92f-ac1f173c842e_499x516.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yJeO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192db29-6a5a-4caf-a92f-ac1f173c842e_499x516.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yJeO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192db29-6a5a-4caf-a92f-ac1f173c842e_499x516.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yJeO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192db29-6a5a-4caf-a92f-ac1f173c842e_499x516.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yJeO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192db29-6a5a-4caf-a92f-ac1f173c842e_499x516.jpeg" width="339" height="350.5490981963928" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4192db29-6a5a-4caf-a92f-ac1f173c842e_499x516.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:516,&quot;width&quot;:499,&quot;resizeWidth&quot;:339,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;FEC Record | Reporting | Arizona special election reporting: 7th Congressional  District (2025)&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="FEC Record | Reporting | Arizona special election reporting: 7th Congressional  District (2025)" title="FEC Record | Reporting | Arizona special election reporting: 7th Congressional  District (2025)" srcset="https://substackcdn.com/image/fetch/$s_!yJeO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192db29-6a5a-4caf-a92f-ac1f173c842e_499x516.jpeg 424w, https://substackcdn.com/image/fetch/$s_!yJeO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192db29-6a5a-4caf-a92f-ac1f173c842e_499x516.jpeg 848w, https://substackcdn.com/image/fetch/$s_!yJeO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192db29-6a5a-4caf-a92f-ac1f173c842e_499x516.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!yJeO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192db29-6a5a-4caf-a92f-ac1f173c842e_499x516.jpeg 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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 1</strong>: AZ CD7 is highlighted red.</figcaption></figure></div><p>Since 2022, CD7&#8217;s seat has been held by Democrat <a href="https://www.nytimes.com/interactive/2024/11/05/us/elections/results-arizona-us-house-7.html">Ra&#250;l Grijalva</a>, a longtime rep of the previous CD3 which included many similar areas. However, <a href="https://www.pbs.org/newshour/politics/arizona-rep-raul-grijalva-dies-of-complications-from-cancer-treatment-at-77">Grijalva passed away</a> due to cancer complications on March 13, 2025, thus triggering this special election. He won <a href="https://www.cnn.com/election/2024/results/arizona/us-house-district-7">the most recent 2024 election handily</a>, by a margin of 72,897 votes, or 26.4 percentage points.</p><p>When examining January 2025 AZ registered voter data from my <a href="https://public.tableau.com/views/WIPAData-DrivenAnalysisofHowtoWinthe2025AZCongressionalDistrict7DemocraticSpecialPrimaryElection/AZCD72025SpecialDemocraticPrimaryElectionAnalysis?:language=en-US&amp;publish=yes&amp;:sid=&amp;:redirect=auth&amp;:display_count=n&amp;:origin=viz_share_link">dashboard</a>, Democrats hold a clear advantage. Among &#8220;active&#8221;<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> 2024 voters: there were 130,796 Democrats (47.15%), 68,671 active Republicans (28.10%), and 77,955 active independents. This Democratic advantage explains why <a href="https://www.azcentral.com/story/news/politics/elections/2025/05/05/tucson-special-congressional-election-fundraising/83417437007/">money is flooding into this contested Democratic primary</a>&#8212;the winner will likely win the general election.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HXqx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4487c280-20a2-479f-84f9-80671df72262_1496x1100.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HXqx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4487c280-20a2-479f-84f9-80671df72262_1496x1100.png 424w, https://substackcdn.com/image/fetch/$s_!HXqx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4487c280-20a2-479f-84f9-80671df72262_1496x1100.png 848w, https://substackcdn.com/image/fetch/$s_!HXqx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4487c280-20a2-479f-84f9-80671df72262_1496x1100.png 1272w, https://substackcdn.com/image/fetch/$s_!HXqx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4487c280-20a2-479f-84f9-80671df72262_1496x1100.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HXqx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4487c280-20a2-479f-84f9-80671df72262_1496x1100.png" width="516" height="379.5576923076923" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4487c280-20a2-479f-84f9-80671df72262_1496x1100.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1071,&quot;width&quot;:1456,&quot;resizeWidth&quot;:516,&quot;bytes&quot;:80036,&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;:false,&quot;internalRedirect&quot;:&quot;https://kylechalmersefishent.substack.com/i/165169398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4487c280-20a2-479f-84f9-80671df72262_1496x1100.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_!HXqx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4487c280-20a2-479f-84f9-80671df72262_1496x1100.png 424w, https://substackcdn.com/image/fetch/$s_!HXqx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4487c280-20a2-479f-84f9-80671df72262_1496x1100.png 848w, https://substackcdn.com/image/fetch/$s_!HXqx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4487c280-20a2-479f-84f9-80671df72262_1496x1100.png 1272w, https://substackcdn.com/image/fetch/$s_!HXqx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4487c280-20a2-479f-84f9-80671df72262_1496x1100.png 1456w" sizes="100vw"></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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 2: </strong>2024 general CD7 active voters by the major party factions</figcaption></figure></div><p>Out of the <a href="https://www.axios.com/local/phoenix/2025/06/18/early-voting-7th-district-arizona-primary-grijalva-hernandez-foxx">5 candidates running</a> in the primary, there are 2 primary candidates and 1 dark horse candidate to mention:</p><ol><li><p>Adelita Grijalva</p><ul><li><p>Ra&#250;l Grijalva&#8217;s daughter who was on the Tucson Unified School District (USD) board for 20 years and the Pima County Board of Supervisors for 4 years</p></li></ul></li><li><p>Daniel Hernandez</p><ul><li><p>A former state rep and former Sunnyside USD board member</p></li></ul></li><li><p>Deja Foxx</p><ul><li><p>A social activist who has organized various initiatives and gained initial prominence for <a href="https://www.youtube.com/watch?v=fR41oVtD5sI&amp;t=1s">this confrontation</a> of former US Senator Jeff Flake</p></li></ul></li></ol><p>With the stage set, let&#8217;s dive into the data to explore a potential path to victory! &#129299; This analysis doesn&#8217;t focus on specific candidates, messaging, or persuasion. Instead, it takes a consultative lens&#8212;examining which populations and precincts appear most decisive, and where outreach might yield the greatest return on investment (ROI). With over 30,000 ballots having already been returned by July 3rd, these insights are best suited to shape strategy at the outset of a race&#8212;well before ballots go out. This data-informed strategy is not meant to make particular tactical suggestions, but rather maximize the campaign professional&#8217;s chance of success and empower them to make the outreach decisions that are best for their campaign.</p><h3>The Data-Driven Analysis for How to Win</h3><h4>Setting Goals</h4><p>When analyzing historical data for strategy, I must acknowledge the uniqueness of this special 2025 primary race. History (and <a href="https://en.wikipedia.org/wiki/Off-year_election">Wikipedia</a>) tell us that turnout will be lower in this off-year election and <a href="https://isps.yale.edu/research/publications/isps17-01">typically primary elections are voted in less than general elections</a>. While Democratic voters may be more motivated by the historic <a href="https://www.economist.com/interactive/trump-approval-tracker">unpopularity</a> as well as the <a href="https://fivethirtyeight.com/features/why-the-presidents-party-almost-always-has-a-bad-midterm/">mere presence of Trump in the presidency</a>, this will likely boost general election turnout more than primary turnout. Additionally, AZ is an <a href="https://www.pinal.gov/FAQ.aspx?QID=218">"Open Primary" state</a>, meaning that voters who are independents or have no party preference can vote for a party of their choice in a primary election.</p><p>With likely lower voter participation in this race and each vote being potentially more important as a result, let&#8217;s start by identifying how many votes a candidate would likely need to win the election, where their &#8220;target&#8221; outreach population lives, and how they vote. I believe the best population to examine would be active registered voters who participated in the 2024 general election, and in both the 2022 and 2024 Democratic primaries because:</p><ol><li><p>These voters are active and participated in the most recent election.</p></li><li><p>They have a history of voting in the last two Democratic primaries&#8212;2022 being a non-presidential, non-contested primary year and 2024 being non-contested.</p></li></ol><p>For these past primaries, Grijalva received <a href="https://www.cnn.com/election/2022/results/arizona/democratic-primaries/us-house-district-7">62,457 votes in 2022</a> and <a href="https://www.cnn.com/election/2024/primaries-and-caucuses/results/arizona/democratic-party/us-house-district-7">55,133 votes in 2024</a>, providing benchmarks to validate our targets. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UJD9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feddb6704-6047-47a3-a15b-f4c7b726b904_1550x1054.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UJD9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feddb6704-6047-47a3-a15b-f4c7b726b904_1550x1054.png 424w, https://substackcdn.com/image/fetch/$s_!UJD9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feddb6704-6047-47a3-a15b-f4c7b726b904_1550x1054.png 848w, https://substackcdn.com/image/fetch/$s_!UJD9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feddb6704-6047-47a3-a15b-f4c7b726b904_1550x1054.png 1272w, https://substackcdn.com/image/fetch/$s_!UJD9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feddb6704-6047-47a3-a15b-f4c7b726b904_1550x1054.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UJD9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feddb6704-6047-47a3-a15b-f4c7b726b904_1550x1054.png" width="1456" height="990" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eddb6704-6047-47a3-a15b-f4c7b726b904_1550x1054.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:990,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:164634,&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://kylechalmersefishent.substack.com/i/165169398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feddb6704-6047-47a3-a15b-f4c7b726b904_1550x1054.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_!UJD9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feddb6704-6047-47a3-a15b-f4c7b726b904_1550x1054.png 424w, https://substackcdn.com/image/fetch/$s_!UJD9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feddb6704-6047-47a3-a15b-f4c7b726b904_1550x1054.png 848w, https://substackcdn.com/image/fetch/$s_!UJD9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feddb6704-6047-47a3-a15b-f4c7b726b904_1550x1054.png 1272w, https://substackcdn.com/image/fetch/$s_!UJD9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feddb6704-6047-47a3-a15b-f4c7b726b904_1550x1054.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 3: </strong>KPIs for a CD7 Democratic primary candidate</figcaption></figure></div><p>Using the same dataset from Visual 2, filtered to active registered independent or Democratic voters who cast ballots in 2024 and are eligible in 2025:</p><ul><li><p>208,751 registered Democratic or independent voters voted in the 2024 general election who could vote in the AZ CD7 primary. Of these, 58,851 voted in the 2024 democratic primary and 60,653 voted in the 2022 democratic primary.</p><ul><li><p>The number of current registered democrats within those larger numbers is displayed in the sub-caption.</p></li></ul></li><li><p>41,157 voters participated in both the 2022 and 2024 Democratic primaries and the 2024 general election across CD7's 202 precincts. These are the <strong>"highly probable voters"</strong>&#8212;the most important outreach targets given their likelihood to vote.</p></li><li><p>Based on past primary turnout, a candidate would likely need <strong>29,876 votes to win</strong>&#8212;approximately 148 votes per precinct. This represents 50% of the average total votes from the past two primaries ((58,851 + 60,653) / 2 = 59,752).</p></li></ul><p>With this calculation complete, let&#8217;s ask ourselves <strong>does the 29,876 vote count goal make sense? </strong><a href="https://www.cnn.com/election/2022/results/arizona/democratic-primaries/us-house-district-7">62,457 total votes were cast in 2022</a> and <a href="https://www.cnn.com/election/2024/primaries-and-caucuses/results/arizona/democratic-party/us-house-district-7">55,133 total votes were cast in 2024</a> with only Grijalva running, so if we take half of each of those totals they would average 29,398&#8212;our goal is 478 votes higher, which is reasonable with three candidates splitting the vote.</p><p>For timing strategy: 92.10% voted early in 2024's primary and 93.67% in 2022's primary. Given the historical early voting rates, a winning candidate might expect to secure around <strong>27,685 early votes</strong><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a><strong> </strong>(92.67% of the 29,876 goal). Of the 41,157 highly probable voters, 38,553 (93.67%) voted early in all 3 elections and 38,307 (93.08%) are on the <a href="https://elections.maricopa.gov/voting/active-early-voting-list.html">Active Early Voting List (AEVL)</a>&#8212;making AEVL voters the top outreach priority.</p><p><strong>Summary</strong>: The path to 29,876 votes runs through the 41,157 highly probable voters, the vast majority of whom consistently vote early.</p><h4>Achieving the Goals</h4><p>Beyond prioritizing digital/mail/phone/etc. outreach to the highly probable voter population, analyzing the distribution of the 41,157 highly probable voters (and 38,307 AEVL voters) can offer insights into where geographically-focused efforts&#8212;like canvassing, advertisements, events, etc.&#8212;might have the most impact. Since ~148 votes per precinct is the estimated threshold, precincts with denser populations of highly probable voters voters offer higher potential ROI on outreach efforts.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GdlB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ee972cd-dabe-4f2c-af17-19a5ecee727e_1778x1272.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GdlB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ee972cd-dabe-4f2c-af17-19a5ecee727e_1778x1272.png 424w, https://substackcdn.com/image/fetch/$s_!GdlB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ee972cd-dabe-4f2c-af17-19a5ecee727e_1778x1272.png 848w, https://substackcdn.com/image/fetch/$s_!GdlB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ee972cd-dabe-4f2c-af17-19a5ecee727e_1778x1272.png 1272w, https://substackcdn.com/image/fetch/$s_!GdlB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ee972cd-dabe-4f2c-af17-19a5ecee727e_1778x1272.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GdlB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ee972cd-dabe-4f2c-af17-19a5ecee727e_1778x1272.png" width="1456" height="1042" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ee972cd-dabe-4f2c-af17-19a5ecee727e_1778x1272.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1042,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:170276,&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://kylechalmersefishent.substack.com/i/165169398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ee972cd-dabe-4f2c-af17-19a5ecee727e_1778x1272.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_!GdlB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ee972cd-dabe-4f2c-af17-19a5ecee727e_1778x1272.png 424w, https://substackcdn.com/image/fetch/$s_!GdlB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ee972cd-dabe-4f2c-af17-19a5ecee727e_1778x1272.png 848w, https://substackcdn.com/image/fetch/$s_!GdlB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ee972cd-dabe-4f2c-af17-19a5ecee727e_1778x1272.png 1272w, https://substackcdn.com/image/fetch/$s_!GdlB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ee972cd-dabe-4f2c-af17-19a5ecee727e_1778x1272.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 4: </strong>Highly probable voters per precinct by county</figcaption></figure></div><p>Pima County has the highest concentration of highly probable voters at 255 per precinct and 28,089 total across 114 precincts, making Tucson and its metro areas crucial for victory. However, even capturing all Pima County highly probable voters won't reach the 29,876 threshold&#8212;additional counties are needed. </p><p>Two other counties exceed the 148 votes per precinct benchmark: Cochise at 166 voters per precinct (1,888 total) and Maricopa at 165 voters per precinct (3,604 total). </p><p>The pattern holds for current AEVL voters: Pima leads at 247 per precinct, followed by Maricopa at 160 and Cochise at 159.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PmuB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42c14eb9-7cde-4399-9341-436d5e60679d_1758x1296.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PmuB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42c14eb9-7cde-4399-9341-436d5e60679d_1758x1296.png 424w, https://substackcdn.com/image/fetch/$s_!PmuB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42c14eb9-7cde-4399-9341-436d5e60679d_1758x1296.png 848w, https://substackcdn.com/image/fetch/$s_!PmuB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42c14eb9-7cde-4399-9341-436d5e60679d_1758x1296.png 1272w, https://substackcdn.com/image/fetch/$s_!PmuB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42c14eb9-7cde-4399-9341-436d5e60679d_1758x1296.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PmuB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42c14eb9-7cde-4399-9341-436d5e60679d_1758x1296.png" width="1456" height="1073" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42c14eb9-7cde-4399-9341-436d5e60679d_1758x1296.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1073,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:246994,&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://kylechalmersefishent.substack.com/i/165169398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42c14eb9-7cde-4399-9341-436d5e60679d_1758x1296.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_!PmuB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42c14eb9-7cde-4399-9341-436d5e60679d_1758x1296.png 424w, https://substackcdn.com/image/fetch/$s_!PmuB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42c14eb9-7cde-4399-9341-436d5e60679d_1758x1296.png 848w, https://substackcdn.com/image/fetch/$s_!PmuB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42c14eb9-7cde-4399-9341-436d5e60679d_1758x1296.png 1272w, https://substackcdn.com/image/fetch/$s_!PmuB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42c14eb9-7cde-4399-9341-436d5e60679d_1758x1296.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 5: </strong>Highly probable voters per precinct by state legislative district</figcaption></figure></div><p>State legislative districts (LDs) provide a slightly different geographic perspective as they span across counties. When filtering for current AEVL or all voters, there are 6 state LDs that exceed the votes per precinct benchmark, but their distribution across total highly probable voters is varied amongst the 9 LDs that comprise CD7. For 5 out of the top 6 most dense LDs, 26,783 (86.56%) voters are from Pima County out of the 30,935 total voters. All 3,727 voters from LD22 come from Maricopa County.</p><p>LD20 is the most populous LD at 13,873 highly probable voters and the 2nd most dense at 289 highly probable voters per precinct. However, LD21 is the 2nd most populous at 12,096 voters but 5th in density with 205 voters per precinct, and LD23 is 3rd most populous at 5,246 voters but 8th in density with 107 voters per precinct. Less dense LDs such as LD21 and LD23 may pose greater logistical challenges for in-person outreach if not broken down further by precinct.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!O0fX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff393d12a-03b8-4466-b524-7ac71ae1058c_2530x1720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O0fX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff393d12a-03b8-4466-b524-7ac71ae1058c_2530x1720.png 424w, https://substackcdn.com/image/fetch/$s_!O0fX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff393d12a-03b8-4466-b524-7ac71ae1058c_2530x1720.png 848w, https://substackcdn.com/image/fetch/$s_!O0fX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff393d12a-03b8-4466-b524-7ac71ae1058c_2530x1720.png 1272w, https://substackcdn.com/image/fetch/$s_!O0fX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff393d12a-03b8-4466-b524-7ac71ae1058c_2530x1720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O0fX!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff393d12a-03b8-4466-b524-7ac71ae1058c_2530x1720.png" width="1200" height="815.934065934066" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f393d12a-03b8-4466-b524-7ac71ae1058c_2530x1720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:990,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1420457,&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://kylechalmersefishent.substack.com/i/165169398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff393d12a-03b8-4466-b524-7ac71ae1058c_2530x1720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!O0fX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff393d12a-03b8-4466-b524-7ac71ae1058c_2530x1720.png 424w, https://substackcdn.com/image/fetch/$s_!O0fX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff393d12a-03b8-4466-b524-7ac71ae1058c_2530x1720.png 848w, https://substackcdn.com/image/fetch/$s_!O0fX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff393d12a-03b8-4466-b524-7ac71ae1058c_2530x1720.png 1272w, https://substackcdn.com/image/fetch/$s_!O0fX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff393d12a-03b8-4466-b524-7ac71ae1058c_2530x1720.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 6: </strong>The 83 precincts highlighted in the map that have 29,939 highly probable voters selected, greater than 29,876 goal votes. The table to the right shows the top precincts by highly probable voters.</figcaption></figure></div><p>Examining CD7 at the precinct level, the top 83 precincts contain 29,939 highly probable voters (averaging 361 per precinct), clearing the 29,876 vote threshold.</p><p>The top 12 precincts come from 4 LDs and are all in Pima County with 7,126 highly probable voters. Of the 83 selected precincts, 64 come from Pima (out of its 114 total precincts). Maricopa contributes 8 precincts, all from the Goodyear and Tolleson areas. Santa Cruz adds 5 precincts, Cochise has 4, Yuma contributes 2, and Pinal has none. LDs are a little more dispersed, though 59 precincts come from LD20 (32) and LD21 (27), with five other LDs between 8 to 1 precincts.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vdzj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54803b51-3040-4dba-9968-3fc2d2dd386d_2530x1714.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vdzj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54803b51-3040-4dba-9968-3fc2d2dd386d_2530x1714.png 424w, https://substackcdn.com/image/fetch/$s_!Vdzj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54803b51-3040-4dba-9968-3fc2d2dd386d_2530x1714.png 848w, https://substackcdn.com/image/fetch/$s_!Vdzj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54803b51-3040-4dba-9968-3fc2d2dd386d_2530x1714.png 1272w, https://substackcdn.com/image/fetch/$s_!Vdzj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54803b51-3040-4dba-9968-3fc2d2dd386d_2530x1714.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vdzj!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54803b51-3040-4dba-9968-3fc2d2dd386d_2530x1714.png" width="1200" height="812.6373626373627" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54803b51-3040-4dba-9968-3fc2d2dd386d_2530x1714.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:986,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:1415952,&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://kylechalmersefishent.substack.com/i/165169398?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54803b51-3040-4dba-9968-3fc2d2dd386d_2530x1714.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vdzj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54803b51-3040-4dba-9968-3fc2d2dd386d_2530x1714.png 424w, https://substackcdn.com/image/fetch/$s_!Vdzj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54803b51-3040-4dba-9968-3fc2d2dd386d_2530x1714.png 848w, https://substackcdn.com/image/fetch/$s_!Vdzj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54803b51-3040-4dba-9968-3fc2d2dd386d_2530x1714.png 1272w, https://substackcdn.com/image/fetch/$s_!Vdzj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54803b51-3040-4dba-9968-3fc2d2dd386d_2530x1714.png 1456w" sizes="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"><svg role="img" 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"><g><title></title><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"><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"><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"><strong>Visual 7: </strong>All 112 precincts with 148+ highly probable voters highlighted in the map with the precincts with the least amount of highly probable voters in this population shown in the table to the right.</figcaption></figure></div><p>Expanding to all precincts with 148+ probable voters increases the count by 29 from 83 to 112 precincts, boosting total probable voters by 4,896 from 29,939 to 34,835. This adds 15 more Pima precincts, 5 more from Maricopa, 5 more from Yuma, and 2 more from Santa Cruz. LDs remain dispersed in a similar way, with LD20 at 39 precincts, LD21 at 32 precincts, LD23 at 14 precincts, LD22 at 13 precincts, and the four other LDS between 8 to 1 precincts. The average highly probable voters per precinct drops from 361 to 311.</p><p>The biggest takeaway: Pima County contains 26,664 highly probable voters&#8212;76.54% of the 34,835 total.</p><p>The story is clear: the Pima County precincts around the central, south, and west metro areas of Tucson will be key for victory. This area has the most highly probable voters overall and the highest density per precinct. While other counties may matter less numerically, all counties except Pinal have pockets of relatively dense populations that may offer higher ROI when attempting to reach the 29,876 vote goal. This pattern holds when filtering for AEVL voters&#8212;no notable geographic shifts occur. </p><h3>What to Monitor, Potential Areas for Improvement, and Conclusion</h3><p>Over the next few days until July 15th when the election is decided, here are some questions I&#8217;ll be monitoring relative to my hypotheses:</p><ol><li><p>How many votes were cast (early v. otherwise) and what will the winning threshold be? </p><ul><li><p>I established my threshold at 29,876 (27,685 early votes) out of 59,752 total estimated votes.</p></li></ul></li><li><p>How many of the top 12 precincts by votes cast coincide with the top 12 precincts I highlighted above? </p><ul><li><p>The Pima County precincts in order from highest to lowest by highly probable voters are Precincts 73, 41, 166, 16, 153, 92, 86, 96, 21, 82, 23, and 80.</p></li></ul></li><li><p>Will the candidate that wins the Tucson-area win the race?</p><ul><li><p>26,664 highly probable voters live in precincts in Pima County that contain 148 highly probable voters or more.</p></li></ul></li></ol><p>These 3 questions and more set up a follow up article &#129299;, where I will analyze what aligned or did not align with what I observed above and why. And while my analytical process accounts for many variables, several improvements could enhance it:</p><ol><li><p>This analysis uses AZ voter registration data from January 2025. Ideally, this could be conducted with as recent data as possible.</p></li><li><p>I did not consider factors beyond voting history and registration that could affect this race&#8212;voter demographics, polling, candidate characteristics, outreach strategies, and other variables could change turnout and target vote numbers.</p></li><li><p>More specific data science modeling might be able to offer increased precision for target vote thresholds.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p></li></ol><p>Despite these limitations, the analysis provides clarity and a data-driven approach to creating goals and thresholds that likely lead to victory in this special election. However, to maximize the effectiveness of a data-driven strategy, this analysis should be completed early on in a campaign&#8217;s life. As it does for many other contests, this analytical process breaks down into three steps for this CD7 race:</p><ol><li><p>Establish and review historical benchmarks and voter turnout goals.</p><ul><li><p>The estimated winning threshold is 29,876 votes, or 148 votes per precinct on average.</p></li></ul></li><li><p>Identify the ideal outreach population that is most likely to help reach that goal.</p><ul><li><p>Our target population is the 41,157 highly probable voters, or voters who voted in the democratic primaries in 2022 and 2024, and who voted in the 2024 general election.</p></li><li><p>38,307 of these 41,157 highly probable voters are on the AEVL.</p></li></ul></li><li><p>Identify areas with dense concentrations of the ideal outreach population that offer the highest potential ROI for geographically targeted engagement.</p><ul><li><p>112 precincts have 148 highly probable voters or more for a total of 34,835 highly probable voters and 311 highly probable voters per precinct.</p></li><li><p>79 precincts in Pima County contain 76.54% of those 34,835 highly probable voters with the densest precincts centering around central, south, and west Tucson. </p></li><li><p>In 5 out of the top 6 most dense LDs, 26,783 (86.56%) are Pima voters.</p></li></ul></li></ol><p>In the spirit of continuous improvement and given this is my first article, if you have thoughts, questions, or feedback about this article, I invite you to comment below or DM me!<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> Please share this if you enjoyed it, and thank you for reading and see you again soon!</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>An "active voter" generally refers to a voter who is registered and whose registration record is current and in good standing, allowing them to participate in elections.</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><a href="https://public.tableau.com/views/WIPAData-DrivenAnalysisofHowtoWinthe2025AZCongressionalDistrict7DemocraticSpecialPrimaryElection/AZCD72025SpecialDemocraticPrimaryElectionAnalysis?:language=en-US&amp;publish=yes&amp;:sid=&amp;:redirect=auth&amp;:display_count=n&amp;:origin=viz_share_link">The dashboard</a> has a filter to display for early, provisional, or polling place votes.</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>This might include regression analyses analyzing each individual voters&#8217; probability of voting, or cluster analyses that segment voter populations into different categories.</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>Interested in working together? Check out my website: https://www.kclabs.ai/contact</p></div></div>]]></content:encoded></item><item><title><![CDATA[Welcome to The Analytics Campaign! (This is an outdated post from V1 of this Substack :) )]]></title><description><![CDATA[Let&#8217;s learn more together about the past, present, and future of politics, tech, AI, startups, and more using lessons from data analytics and the stories they tell us to inform our perspective.]]></description><link>https://kylechalmerslabs.substack.com/p/welcome-to-the-analytical-campaign</link><guid isPermaLink="false">https://kylechalmerslabs.substack.com/p/welcome-to-the-analytical-campaign</guid><dc:creator><![CDATA[Kyle Chalmers]]></dc:creator><pubDate>Mon, 02 Jun 2025 06:08:21 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/12c7173c-1cec-4e5f-a77d-fb64fc52a6de_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://kylechalmerslabs.substack.com/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://kylechalmerslabs.substack.com/subscribe?"><span>Subscribe now</span></a></p><p>Hello reader! :) Thank you for clicking on this introductory post of <strong>The</strong> <strong>Analytics Campaign</strong>. My name is Kyle Chalmers, and at the point of writing this, I am 30 years young, have 8+ years of professional experience of analyzing data and building data teams, and am co-founder of the data analytics company called <a href="https://www.efishent.co/">Efishent</a>. </p><p>Now in a world filled with a never-ending stream of content, the 1st question you probably are asking yourself is&#8230;</p><h3>Why should I subscribe to this?</h3><p>Good question! Candidly, I do not have particularly strong digital presence (see missing Insta, Twitter, TikTok handles) and I&#8217;m at the start of creating my business, which prompted the creation of this! And while I&#8217;d love for this newsletter to serve as a great marketing platform, my main focus is on creating great, in-depth content on a monthly basis (subject to increase) .</p><p>Therefore, <strong>if you are interested in honest, nuanced, and engaging content where the power of AI and data is a central theme, you&#8217;ve come to the right place</strong>. My hope for this monthly publication is to create in-depth work that will share valuable, interesting, and fun insights, lessons, and tools from myself and others around analyses we&#8217;ve created, data visualizations we&#8217;ve built, and experiences we have had, so that we can all learn together and apply whatever learnings we have in our day-to-day. At this point, I plan to center the articles around data for those in the political (especially AZ politics), tech, AI, and startup industries, amongst many other things that interest me, and I believe you might find value here even if you are not a part of those aforementioned industries. </p><p>So with that, off we go! Thanks for joining the community as I&#8217;m happy you are here! :)</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://kylechalmerslabs.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Subscribe for free and come join the fun!</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>