<?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[The Contract Signal]]></title><description><![CDATA[Contract AI, data, workflows, and related market analysis. Informed by 10 years of working on post-signature enterprise contract intelligence at Axiom and Knowable (LexisNexis).]]></description><link>https://thecontractsignal.com</link><image><url>https://substackcdn.com/image/fetch/$s_!aR1x!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35163fd-b60f-4c97-94ed-f30c0d7bf908_1024x1024.png</url><title>The Contract Signal</title><link>https://thecontractsignal.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 04 Sep 2026 13:30:21 GMT</lastBuildDate><atom:link href="https://thecontractsignal.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Leonid Prilutskiy]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[leonidprilutskiy@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[leonidprilutskiy@substack.com]]></itunes:email><itunes:name><![CDATA[Leonid Prilutskiy]]></itunes:name></itunes:owner><itunes:author><![CDATA[Leonid Prilutskiy]]></itunes:author><googleplay:owner><![CDATA[leonidprilutskiy@substack.com]]></googleplay:owner><googleplay:email><![CDATA[leonidprilutskiy@substack.com]]></googleplay:email><googleplay:author><![CDATA[Leonid Prilutskiy]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Mixing AI Models to Make Contract Workflows More Efficient]]></title><description><![CDATA[To keep contract workflows affordable, use a stronger model to plan and a lighter one to execute]]></description><link>https://thecontractsignal.com/p/mixing-models-contract-ai-efficiency</link><guid isPermaLink="false">https://thecontractsignal.com/p/mixing-models-contract-ai-efficiency</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Wed, 02 Sep 2026 15:57:20 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e83d3ae2-a8c0-41a0-bd01-3b234c44beaf_2912x1528.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone,</p><p>In this article I&#8217;ll share a practical trick to make your use of Claude, ChatGPT and other LLM tools more efficient while still getting strong responses.</p><h3>Plan with strong model, execute with a lighter one</h3><p>To reduce the cost of working with contracts, consider using a stronger model to plan and a lighter model to execute. This applies to agentic workflows more broadly as well. </p><p>The amount you can save will depend on the specific use case and models involved, but lighter models can cost 2-5X less (sometimes even 10X+) per token than more powerful but expensive ones.</p><p>For example, you could prompt: &#8220;can you help me plan out this workflow and decide which model I should use to balance performance with cost and efficiency? Here&#8217;s some context:&#8230;&#8221; </p><p>If the task is reasonably straightforward, a lighter model can often get the job done without issue and at a lower cost. The more powerful model can still help plan the workflow, break it into tasks, and orchestrate it as needed.</p><p>For example, let&#8217;s say you&#8217;re trying to:</p><ul><li><p>Find 10 agreements that meet certain criteria</p></li><li><p>Identify several clauses or data points within those agreements</p></li><li><p>Research additional information related to the results</p></li></ul><p>A stronger model might be useful for determining the overall approach: how to identify the right agreements, what information should be extracted, which research sources to use, etc.</p><p>However, once that plan is established, most of the execution steps may be straightforward for a lighter model.</p><p><em>The Contract Signal is a reader-supported publication. Subscribe for free to receive new posts, or become a paid subscriber to support my work.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p>In contrast, imagine you&#8217;re trying to understand whether an assignment clause is enforceable under unfamiliar governing law. In that example, using a stronger model may make more sense.</p><p><strong>The core idea: </strong>use the stronger, more expensive model where it adds the most value. </p><p>Hope this is helpful. If there&#8217;s other content that you&#8217;d find useful, feel free to drop a comment or send me a note.</p><p>Thanks,<br>Leonid</p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[How to Operationalize AI in Contract Workflows]]></title><description><![CDATA[8 practical ways to make AI more reliable, usable and valuable in real-world contract workflows]]></description><link>https://thecontractsignal.com/p/operationalizing-ai-contract-workflows</link><guid isPermaLink="false">https://thecontractsignal.com/p/operationalizing-ai-contract-workflows</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Wed, 26 Aug 2026 15:17:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/a9467cd7-c044-492d-972b-00ef909db475_2912x1528.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone,</p><p>AI is being used all around us.</p><p>Not just in the high-profile generative AI tools like ChatGPT, Claude and Gemini but also in applications ranging from Apple&#8217;s Face ID to Spotify music recommendations to Duolingo&#8217;s video call feature.</p><p>What makes these examples successful is that the AI is effectively incorporated into the user experience to solve real, valuable problems. </p><p>Contract AI, while perhaps less exciting for most people than listening to a rock concert or learning Spanish, can benefit from similar approaches to incorporating AI.</p><p>The question is how?</p><p>In this article, I&#8217;ll share my experiences on different techniques for getting the most out of AI models. I&#8217;ll focus on contract workflows but will note that there are commonalities with use cases across other domains (e.g. personal productivity, coding / software development, research, and various third-party tools).</p><h2>High Performance in the Wild, Not Just in the Lab</h2><p>A key insight is that regardless of the use case, there&#8217;s a difference between achieving high model performance in &#8220;the lab&#8221; (i.e. in a purely research and development context under strict guardrails) vs. achieving high performance in &#8220;the wild&#8221;, i.e. in practical settings where the models not only perform well from a technical standpoint but also help solve real problems and generate ROI relative to the time, money and other resources it takes to use the technology.</p><p>Generating this ROI requires operationalizing AI. When I say &#8220;operationalizing&#8221; AI, I just mean effectively incorporating AI models or their output (aka predictions) into concrete workflows to solve problems (preferably in a scalable fashion, though that will depend on the needs of the use case).</p><p>Before getting into that, I wanted to offer some thoughts on why getting ROI from contract AI (as well as legal AI and other AI use cases) can be challenging.</p><h2>Why Getting ROI from AI is Challenging</h2><p>There&#8217;s been many studies and headlines about the <a href="https://mlq.ai/media/quarterly_decks/v0.1_State_of_AI_in_Business_2025_Report.pdf">challenges with getting ROI from AI</a> despite significant investments. </p><p>There are various explanations for why, but here are three categories of reasons I&#8217;ve observed:</p><ol><li><p>Focusing on the right problem</p></li><li><p>Identifying and getting access to high-performing models relative to the problem&#8217;s needs</p></li><li><p>Using the AI tools effectively</p></li></ol><p>In previous articles, I discussed category 1 (<a href="https://thecontractsignal.com/p/identifying-high-impact-ai-opportunities-contract-workflows?r=1iyonb">mapping your contract workflows</a> to identify high-impact AI opportunities) and category 2 (<a href="https://thecontractsignal.com/p/the-contract-ai-vendor-diligence-checklist?r=1iyonb">the contract AI vendor diligence framework</a> to understand how likely it is that a given set of capabilities can help support a given use case). </p><p>This is important context to understand as simply deploying AI models and throwing them at a problem without first addressing these questions increases the risk of either 1-working on problems that don&#8217;t matter and/or 2-running in technical feasibility barriers.</p><p>In this article, I&#8217;ll focus on category 3.</p><p>To start, it&#8217;s worth discussing why using AI tools effectively can be challenging, even after successfully identifying high-impact problems to solve and having access to the right capabilities.</p><p>There&#8217;s three main reasons I&#8217;ve observed: </p><ol><li><p>AI is probabilistic, not deterministic</p></li><li><p>Important dependencies are missing: e.g. data, the right technical infrastructure, or intuitive UX</p></li><li><p>AI requires some level of technical know-how, which is often missing</p></li></ol><h3>Reason 1: AI is Probabilistic, Not Deterministic</h3><p>One of the main reasons why AI tools can be tricky to use is that AI is probabilistic. This means that for the same input, the output isn&#8217;t always going to be same, let alone correct or reliable. </p><p>Contrast this with deterministic software. Historically, before AI-powered software applications became more prevalent, software was based on procedural rules or conditional logic (aka if-then rules and similar mechanisms). Essentially, this meant that if the software was working correctly, the same input would always yield the same output.</p><p>By way of analogy: the software worked like flipping a simple light switch: flip up to turn it on, down to turn it off. Much of the technology in the world has historically functioned in a similar way: e.g. traffic lights can be red, yellow or green based on specified time intervals, the previous state or other conditions, such as a pedestrian crossing button being pressed. </p><p>In contrast, using probabilistic output is a fundamentally different experience because some part of the time the output is going to behave as expected, but not always. E.g. 90% of the time it&#8217;ll be as expected (i.e. &#8220;correct&#8221; depending on the use case) and incorrect 10% of the time, or it&#8217;ll be correct 80% of the time, and incorrect 20% of the time.</p><p>Relatedly, you typically don&#8217;t know what that exact accuracy number is in any given situation until you actually run the models on the inputs. That&#8217;s why investing in rigorous testing and other techniques is important, as we&#8217;ll get into.</p><p>It&#8217;s also why AI systems involve more ambiguity and can cause apprehension from a user adoption standpoint.</p><h3>Reason 2: Dependencies (AI Requires the Right Inputs)</h3><p>Just as a car doesn&#8217;t run by itself (it requires fuel such as electricity or gasoline), AI also requires various inputs and complementary capabilities to work well.</p><p>Some of the most common examples include high-quality data, the technical infrastructure necessary to train, deploy and test models, and an intuitive user interface that makes it easy to surface predictions and actually consume the output.</p><h3>Reason 3: AI Requires Technical Know-How</h3><p>The third category is that AI requires some level of technical know-how. </p><p>This has been significantly less of a factor recently, as most AI tools powered by large language models have a natural-language interface that doesn&#8217;t require code in most cases. However, getting the best results from these tools still requires some understanding of how they work. </p><h2>Ways to Operationalize AI</h2><p>There are many different ways to help get the most out of AI tools and increase ROI.</p><p>Which practices will be most effective in a given situation will depend on the specific situation and use case.</p><h3>Method 1: Transparency </h3><ul><li><p><strong>What it is:</strong> Including a breakdown of whether AI is used in the product or application, where and how it is used and related caveats regarding imperfect output or potential mistakes. </p></li><li><p><strong>Context / Why it Matters:</strong> Contracts involve high-stakes legal and business decisions, and relying on information requires that information to meet a very high quality bar. Relatedly, attorneys and other contracts professionals have a significant responsibility to allocate risk effectively, which requires a realistic understanding of AI performance in any given situation.</p></li><li><p><strong>Pros:</strong> This is a simple way of flagging to a user that the data or other output is AI-generated (i.e. imperfect and may contain mistakes) and signals to the user to double check it before making a consequential decision.</p></li><li><p><strong>Cons:</strong> Even if the product or application is transparent regarding its use of AI, this isn&#8217;t always effective at driving the right behaviors. For example, attorneys have been <a href="https://law.justia.com/cases/federal/district-courts/new-york/nysdce/1:2022cv01461/575368/54/">sanctioned by courts for citing cases that didn&#8217;t actually exist (they were hallucinations made up by LLM-powered tools)</a>. The ability to understand these risks is driven by the user&#8217;s mental model, their understanding of probabilistic systems, and the availability of mechanisms to use AI effectively, which we&#8217;ll get into below.</p></li></ul><h3>Method 2: Confidence Thresholds</h3><ul><li><p><strong>What it is:</strong> Only surfacing predictions that meet a certain confidence threshold, determined by the model&#8217;s estimated confidence that the prediction is correct. For example, only surfacing predictions with a certain confidence level.</p></li><li><p><strong>Context / Why it Matters:</strong> Not all predictions are equally likely to be correct. For example, you may have 1000 predictions for a certain data point in a contract, with 80% accuracy overall (800 are correct, 200 are incorrect). Only using predictions that meet a certain confidence level (e.g. 90%+) may reduce the total number of predictions used to 500-600, but increase their accuracy level.</p></li><li><p><strong>Pros:</strong> This enables AI predictions to be routed to different workflows: for example AI only (high confidence), AI + human (medium confidence), or human only (low confidence). Whether and how to implement this will depend on considerations such as the cost of errors.</p></li><li><p><strong>Cons:</strong> Confidence scores are not always reliable, and so neither are confidence thresholds based on them. One reason is that confidence scores can be calibrated based on specific training data sets. New data risks lower performance due to data drift (when the models run on new contracts with a different structure, such as those corresponding to new customers, business units, or document types). Frontier models tend to generalize better, but not perfectly, and the error rate can also rise with use case complexity. For example, drafting a contract includes considerations such as tone, flow, and audience. As a result this task is harder to calibrate than a simpler binary classification problem such as &#8220;does an assignment clause exist in this contract?&#8221;</p></li></ul><p>There are six additional methods I&#8217;ve found helpful for operationalizing AI.</p><p>Subscribe for free to continue reading.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p><em>The Contract Signal is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</em></p><p></p>]]></content:encoded></item><item><title><![CDATA[Should We Apply AI to a Contract Negotiation Workflow?]]></title><description><![CDATA[A practical walkthrough of determining where it makes sense to use AI to support an MSA negotiation]]></description><link>https://thecontractsignal.com/p/contract-negotiation-workflow-mapping-ai</link><guid isPermaLink="false">https://thecontractsignal.com/p/contract-negotiation-workflow-mapping-ai</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Tue, 18 Aug 2026 18:41:28 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/56f1f3ce-d760-4e33-8a7b-bcd6705a6893_2400x1600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone,</p><p>In a previous article, I shared a <a href="https://open.substack.com/pub/leonidprilutskiy/p/identifying-high-impact-ai-opportunities-contract-workflows?r=1iyonb&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">framework I&#8217;ve found helpful for identifying high-impact opportunities to apply AI.</a></p><p>In this article, I do a deeper dive by applying that framework to a concrete contract workflow: reviewing and responding to customer redlines in a master services agreement.</p><h2>Business Problem and Context</h2><p><strong>Business Problem:</strong> imagine&#8230;</p>
      <p>
          <a href="https://thecontractsignal.com/p/contract-negotiation-workflow-mapping-ai">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Navigating the Contract AI Minefield]]></title><description><![CDATA[7 common things to watch out for when doing contract AI vendor diligence with context and practical alternatives.]]></description><link>https://thecontractsignal.com/p/contract-ai-vendor-diligence-issues</link><guid isPermaLink="false">https://thecontractsignal.com/p/contract-ai-vendor-diligence-issues</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Sat, 15 Aug 2026 16:27:36 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/160e8fa7-945c-49a3-b1f1-64f3d5392db7_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A former colleague described the unsettling experience of losing a million dollars a year to a contract AI vendor run by industry-leading PhDs.</p><p>But how? It turns out that many of the most common obstacles to getting ROI from contract AI solutions aren&#8217;t due to the models themselves. </p><p>There are three main categories of things that I&#8217;ve found helpful when conducting contract AI vendor diligence:</p><ol><li><p><span>Mapping out your own workflows to </span><a href="https://open.substack.com/pub/leonidprilutskiy/p/identifying-high-impact-ai-opportunities-contract-workflows?r=1iyonb&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true"><span>identify the highest-impact opportunities to apply AI</span></a></p></li><li><p><span>Applying a </span><a href="https://thecontractsignal.com/p/the-contract-ai-vendor-diligence-checklist?r=1iyonb"><span>structured diligence framework</span></a><span> to evaluate whether an AI provider is capable of delivering against those opportunities</span></p></li><li><p>Knowing what to look for during diligence, which comes from experience in applying categories 1 and 2 above (i.e. judgment)</p></li></ol><p>In previous articles I shared my perspective on categories 1 and 2 (links inline above). These are good starting points. However, making the frameworks actionable requires knowing how to apply them and what to look for.</p><p>With that said, for category 3, here are seven common issues that I&#8217;ve found helpful to watch out for, along with context and practical alternatives:</p><ol><li><p><strong>Data Can&#8217;t Leave the Vendor&#8217;s System (Vendor Lock-In)</strong></p><ol><li><p><strong>Context:</strong> sometimes the vendor does not allow data to leave the platform once it has been ingested, or makes it very difficult to export or migrate the data. This is increasingly less common in enterprise, as these types of use cases almost always require connecting to or using multiple systems, but it does continue to happen.</p></li><li><p><strong>Practical alternatives:</strong> test the ability to export, migrate or integrate data sets upfront (e.g. via proof of concept), pressure-test the scale / volume at which this can be done, and negotiate the contract to enable this as needed. </p></li></ol></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.com/subscribe?&quot;,&quot;text&quot;:&quot;Upgrade&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This post has bonus content for paid subscribers. Upgrade to get full access.</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="Upgrade"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><em>Evaluating a contract AI vendor or portfolio company or building your own team? I provide select diligence and advisory consulting covering product architecture, model performance, workflow fit, hiring and implementation risk.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Identifying High-Impact AI Opportunities in Contract Workflows]]></title><description><![CDATA[A framework for breaking down a contract workflow and identifying the highest impact opportunities for applying legal AI.]]></description><link>https://thecontractsignal.com/p/identifying-high-impact-ai-opportunities-contract-workflows</link><guid isPermaLink="false">https://thecontractsignal.com/p/identifying-high-impact-ai-opportunities-contract-workflows</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Sat, 08 Aug 2026 16:53:59 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5ea0c701-72ea-4930-8f9e-ba17d211b4ed_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There&#8217;s a seemingly infinite number of ways to apply AI to contract workflows, but some are far more impactful than others. </p><p>Phrased another way: just because you <em><strong>can</strong></em> apply AI to a contract or other type of workflow, doesn&#8217;t mean you <em><strong>should. </strong></em>For example, earlier this year, Amazon reportedly incurred a cost overage of <a href="https://www.techradar.com/pro/amazon-admits-it-accidentally-shelled-out-usd1-8-million-for-claude-to-finish-menial-coding-tasks">1.8 million dollars related to a menial coding task</a> using Anthropic&#8217;s models.</p><p>I previously wrote about <a href="https://open.substack.com/pub/leonidprilutskiy/p/ai-legal-workflows-judgment-execution?r=1iyonb&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">AI&#8217;s evolving role in decoupling judgment from execution in the enterprise contracts space,</a> including historical context, and introduced the value of breaking down a contract or other legal workflow end to end.</p><p>In this article I&#8217;ll share a practical framework for mapping out workflows and identifying the high-impact opportunities to apply AI. </p><h2>Terminology</h2><p>Here&#8217;s how I define a few key terms for purposes of this article:</p><ul><li><p><strong>Judgment</strong> refers to domain expertise, tacit knowledge or experience in dealing with specific types of problems.</p></li><li><p><strong>Execution</strong> refers to completing work, guided by judgment. Another way of thinking about it: judgment is knowing what work is important to do (and when and how to do it), while execution is actually doing it.</p></li><li><p>A <strong>task</strong> refers to a unit of work that needs to be completed. For example, finding a contract or researching a legal issue.</p></li><li><p>A <strong>workflow</strong> refers to completing a series of related tasks connected together to achieve some broader goal.</p></li></ul><p>Couple call-outs: </p><ol><li><p>These terms can blend a little bit. For example, contract drafting can be a described as an overall workflow (if planning, research, analysis is included in that scope), but drafting a contract can also refer to a single task if referring to the specific step of writing or updating the contract document after completing any other necessary parts of the process.</p></li><li><p>I&#8217;ve noticed that as of late, the market sometimes refers to a workflow as using agents or other AI capabilities to complete one or more tasks. For purposes of this article, a workflow may or may not involve AI.</p></li></ol><h2>Breaking Down a Contract Workflow</h2><p>Breaking down a workflow involves mapping out the entire process from beginning to end: the key stages, inputs and outputs, decision points, and other necessary steps to successfully move from one stage to the end. </p><p>In a workflow such as drafting a contract, this may look like: receive trigger or notification, perform intake / scope out problem, create plan, define criteria, perform research, summarize research, perform analysis of research, draft contract, share contract draft, etc.</p><h3>Framework / Questionnaire</h3><p>We can use a more general framework to break down similar types of workflows and identify the higher impact opportunities to apply AI. For those that want to do so, here&#8217;s a starter set of questions that I&#8217;ve found helpful:</p><p>Subscribe to get the full framework (it&#8217;s free).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p><span>Hope this was helpful &#8211; if you have any feedback or requests for other walkthroughs, send me a note.</span></p><p><em>The Contract Signal is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Evolving Role of AI In Legal Judgment and Execution]]></title><description><![CDATA[A 10-year retrospective on legal AI, judgment, execution, and a practical framework for breaking down contract workflows and determining where to apply legal AI]]></description><link>https://thecontractsignal.com/p/ai-legal-workflows-judgment-execution</link><guid isPermaLink="false">https://thecontractsignal.com/p/ai-legal-workflows-judgment-execution</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Thu, 06 Aug 2026 16:17:29 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/dde3f01b-0558-4711-9fb9-d7fa2883e332_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week I attended a webinar hosted by Priori Legal. As I was listening to the sessions, I had a surreal feeling of d&#233;j&#224; vu.</p><p>A core theme that came up, decoupling execution from judgment, is something that I first heard about back in late 2015 as I was preparing for my first role out of law school. I started working on an emerging M&amp;A projects business at Axiom as an early hire, focused on turning large volumes of enterprise contracts into structured data and analytics (rebranded within a few years as contract intelligence).</p><p>The market has evolved significantly since then. AI has played a role in this evolution in four main ways:</p><ol><li><p>AI is now able to cover or assist with a greater proportion of execution</p></li><li><p>AI has improved to the point where the line between judgment and execution has shifted (for some workflows)</p></li><li><p>Access to high-performing <a href="https://open.substack.com/pub/leonidprilutskiy/p/the-contract-ai-moat-is-shifting?r=1iyonb&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">AI models has increased significantly</a></p></li><li><p>AI&#8217;s capabilities continue to evolve at a fast pace</p></li></ol><p>However, before getting into AI&#8217;s current capabilities in greater detail and where the opportunities are to incorporate them into legal workflows, let&#8217;s contextualize what&#8217;s going on in the market with a historical look back into how those capabilities evolved and what the impact was.</p><h3>Judgment vs. Execution 10 Years Ago</h3><p>The original value prop of Axiom&#8217;s contract projects business was using people, process and technology to help enterprise clients review high volumes of contracts with high quality and consistency. The legal and business driver was usually M&amp;A diligence and integration as those workflows were time-sensitive and required both efficiency and scale, though there were other use cases as well that benefited from a similar approach.</p><p>So if we were to break the market (at that time) down into the problem space, the competitive dynamics and the state of the art of decoupling judgment vs. execution, it looked something like this: </p><ul><li><p><strong>Problem </strong>&#8212; the problem being solved for was largely the same as it is today: getting better visibility into large volumes of enterprise contracts that were often hard to find, let alone understand. </p></li><li><p><strong>Competitive dynamics</strong> &#8212; AI capabilities at the time were limited so the few providers that were trying to use AI to review contracts were able to sell its potential far better than they were able to deliver value. Phrased another way: hype exceeded reality. </p><ul><li><p>More commonly, the law firm memo (a qualitative summary of the main issues found) was the main type of deliverable at the time. It was created using a judgment-focused approach with limited execution capabilities (from a high-level: throw groups of smart law firm associates or other junior resources at the contracts, bill by the hour). In addition, in terms of utility, while it had its place, it wasn&#8217;t structured data: it couldn&#8217;t be searched or analyzed at scale, particularly on an aggressive M&amp;A timeline.</p></li></ul></li><li><p><strong>The state of the art </strong>&#8212; the best-in-class approach in separating judgment from execution involved a combination of people, process and technology. This referred to a combination of contract analysts, subject matter experts and project managers using written playbooks created through specialization and experience in these types of projects, as well as eDiscovery software that had been specifically configured for the purpose of delivering these projects.</p></li></ul><h3>Judgment vs. Execution (Example)</h3><p>Let&#8217;s use a concrete use case to illustrate how judgment and execution are different, specifically in the context of contract review.</p><p>For simplicity&#8217;s sake I&#8217;ll define <strong>judgment</strong> (otherwise known as domain expertise or tacit knowledge) as experience or expertise in dealing with specific types of problems, and <strong>execution</strong> as completing the work, guided by the judgment. Another way of thinking about it: judgment is knowing what work is important to do (and when and how to do it), while execution is actually doing it.</p><p>The line between the two can be blurry, however. For example, with some training, a contract analyst could take a contract clause and identify it as being an assignment clause, an indemnification clause, a renewal clause, a governing law clause, etc. They could also likely categorize it further, for example: </p><ul><li><p>Whether the assignment clause included consent or notice requirements, </p></li><li><p>Whether the indemnification is one-sided or two-sided, </p></li><li><p>Whether the renewal clause is an automatic renewal, an optional renewal or something else, or </p></li><li><p>What the specific geography of the governing law clause was.</p></li></ul><p>However, it would become more challenging for the analyst, if (without any legal training) they were asked to opine on whether a given clause was enforceable. Or the overall risk profile of a clause or entire contract. Or whether a clause draft or position should be re-negotiated as a result.</p><p>So in that sense, while each of the tasks required some level of judgment and execution, the types and levels of judgment required varied depending on the stage in the process and the corresponding complexity of the problems involved. Concretely, the initial training would likely need to be done by a more experienced subject matter expert (in other words, the training would involve more judgment). Applying the training to identify, capture and categorize contract clauses would require some judgment as well though less so, and would involve more execution.</p><h3>AI and Judgment</h3><p>However, as different types of judgment are applied repeatedly (in other words executed, specifically for more common, standardized tasks or workflows), they can be codified as context (for example via playbooks or taxonomies) and data. </p><p><strong>In that sense, a workflow that was at one time judgment-focused can become execution-focused over time as it becomes more frequently used and codified.</strong></p><p>And once they&#8217;ve been codified, different forms of AI, while not having judgment in the human sense are able to identify and apply those groups of data patterns and context to new situations.</p><p>When this happened for the contract review use case, contract AI rapidly improved (initially the branch of AI called machine learning applied to contracts). This was driven both by increased availability of these data sets and context as well as increased availability of more powerful, open source AI models and architectures that could better leverage the data and context to solve natural language problems (for example Google&#8217;s BERT).</p><p>These AI capabilities continued to evolve into Large Language Models (which power many of the products available in the market today) as well as more recent related capabilities like agentic AI.</p><h3>Judgment, Execution and AI&#8217;s Role</h3><p>The lower the complexity or level of judgment required to solve a particular task (in other words the simpler or more standardized the task), the more likely it is that the task can be codified in the form of data and context. The more relevant data and context available to train the AI models to solve it, the more likely it is that AI can assist with (or even automate) that workstream.</p><p>As a result, in current state, a contract analyst with the exact same level of skill as a contract analyst 10 years ago could more easily be replaced with AI. This is why continuous learning and upskilling is so important: these help build new types of judgment. For example, <a href="https://nationaljurist.com/legal-hiring-in-2026-ai-skills-and-strategic-expertise-top-employer-demand/#">knowing how to use AI effectively</a> has emerged as a new type of judgment that the market demands.</p><p>Incorporating AI into more experienced attorneys&#8217; workflows is the logical next step as those workflows have been commonly applied and model capabilities have evolved over the last year or two and are more accessible than ever before. As before, the proportion of a workstream that was &#8220;judgment&#8221; has been restructured or reclassified as execution as a result of the consistent use and standardization of those tasks along with AI&#8217;s evolving capabilities.</p><p>So with all of that context in mind, what are examples of how we can actually separate out judgment from execution and related, use AI tools effectively?</p><h3>Applying AI to Legal Workstreams</h3><p>I would frame this in three main categories, from lowest level of effort to highest:</p><ol><li><p>Using AI as a thought partner / to help plan a workflow</p></li><li><p>Breaking down the existing end-to-end process for performing a legal workflow into separate but related tasks and identifying where AI can assist</p></li><li><p>Re-engineering the process entirely from the ground up / from first principles</p></li></ol><p>The first two ways above are the market norm right now, but the third is emerging as an area of exploration as well. In addition, performing the breakdown of the existing process is often helpful for understanding opportunities for all three categories.</p><h3>AI as Thought Partner</h3><p>This is one of the simplest, most popular ways of using AI in legal workflows. </p><p>Simply enter a prompt into an LLM-powered tool such as ChatGPT or Claude, and the AI tool can help you plan out a workstream (for example drafting a contract or researching a legal issue). This is similar to augmenting judgment with data.</p><p>If desired, a person can iterate on the plan with the AI tool or simply make adjustments as needed and execute on it.</p><h3>Breaking down the existing end-to-end process</h3><p>However, to get a more comprehensive view of where AI can fit into the process, it&#8217;s often helpful to systematically break down the end-to-end workflow or process into tasks, subtasks and related.</p><p>Here&#8217;s an example of a concrete legal workflow (contract drafting) and how we can break down the related end-to-end process this way. Two caveats:</p><ol><li><p>This is a high-level, non-exhaustive example but serves to illustrate the overall technique for doing so. </p></li><li><p>The process is iterative and is not meant to be perfectly linear or sequential (for example going back to earlier stages or jumping around may make sense).</p></li></ol><h4>Contract Drafting</h4><ul><li><p><strong>Trigger or notification</strong> &#8212; notification of an event that requires contract drafting (for example a new client or opportunity)</p></li><li><p><strong>Intake / Scope out problem</strong> &#8212; structure the initial notification or request and request additional context as needed</p></li><li><p><strong>Create plan</strong> &#8212; create a plan for executing the workflow, including defining the scope of what you&#8217;re looking for and why</p></li><li><p><strong>Define criteria</strong> &#8212; define the concrete search conditions to help you find what you&#8217;re looking for</p></li><li><p><strong>Perform researc</strong>h &#8212; apply the search criteria to locate the relevant information</p></li><li><p><strong>Summarize research</strong> &#8212; condense the most important results from the search into a relevant summary (e.g. relevant legal issues that may be applicable)</p></li><li><p><strong>Analysis</strong> &#8212; validate the initial search results and summary, incorporate nuances, exceptions, and additional criteria, and perform a final assessment before moving to drafting </p></li><li><p><strong>Draft Contract</strong> &#8212; either select and tailor an existing template or if dealing with a brand new issue, start from scratch (less common)</p></li><li><p><strong>Share contract draft / communicate</strong> &#8212; send a draft of the contract along with any relevant information (for example a cover letter or email) to the counterparty or other stakeholder</p></li></ul><p>We could then add additional steps if we wanted the workflow to cover the execution / signature of the contract as well:</p><ul><li><p>Negotiate</p></li><li><p>Edit / refine the contract as needed (redlining)</p></li><li><p>Get approvals as needed (for example if agreeing to non-standard terms)</p></li><li><p>Sign / Execute the contract</p></li></ul><p>Note that there are commonalities with other legal workflows as well: for example, drafting a legal memo. We could abstract the &#8220;draft contract&#8221; workflow into something like &#8220;draft or create deliverable&#8221; and then re-use / re-purpose steps in the process. We could also replace one task with another as needed: for example in the case of certain litigation documents, instead of signing the document we could also file it with the courts. </p><h3>Applying AI to each step of the process</h3><p>Once we break the process down end to end, we can assess where it would potentially be helpful to apply AI tools to improve the efficiency or quality of the workflow.</p><p>Here are a few examples of how AI could assist with each step of the above process:</p><ul><li><p><strong>Trigger or notification</strong> &#8212; proactively perform regulatory monitoring to help inform legal and business planning. Here&#8217;s an example of how <a href="https://www.youtube.com/watch?v=QgoDrjgJBG8">Amazon&#8217;s legal team is doing this internally</a>.</p></li><li><p><strong>Intake / scope out the problem</strong> &#8212; identify known information, assumptions and where additional information would be helpful. Here&#8217;s an example of a <a href="https://open.substack.com/pub/leonidprilutskiy/p/claude-codex-contract-intake-skill?r=1iyonb&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">Claude / ChatGPT skill I put together</a> to help do this.</p></li><li><p><strong>Act as a thought partner / help form a plan</strong> &#8212; help form an execution plan (per category one above).</p></li><li><p><strong>Research</strong> &#8212; perform research into common legal issues that come up during contract drafting exercises of this type.</p></li><li><p><strong>Draft</strong> &#8212; draft the contract, using whatever context or template that we want to provide to do so.</p></li></ul><p>In other words&#8230;<strong>on paper AI can assist with every single part of the workflow.</strong></p><p>So the relevant question becomes <em><strong>should</strong></em> AI be used rather than <em><strong>can</strong></em> it be used?</p><p>The answer is: it depends.</p><h3>How to determine whether to use AI</h3><p>To answer the question, the next step is translating the conceptual framework into practical, problem-solving considerations. Note that there&#8217;s no one-size-fits-all solution and usually our specific situation and context will inform the approach.</p><p>However, here are some considerations that will inform whether it makes sense to apply AI to a given workflow or individual task:</p><ul><li><p>Financial costs &#8212; for example, costs of AI software licenses (both fixed and variable depending on usage).</p></li><li><p>Vendor diligence / related costs &#8212; there are many AI providers and they need to be vetted. I put together a <a href="https://open.substack.com/pub/leonidprilutskiy/p/the-contract-ai-vendor-diligence-checklist?r=1iyonb&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">diligence checklist (available here)</a> that can be used to help with this.</p></li><li><p>Setup / onboarding time &#8212; learning how to use the tools, configuring them, etc.</p></li><li><p>Opportunity cost (cost of time / best alternative) &#8212; time that could be spent doing something else (e.g. working on different matters).</p></li><li><p>Benchmark of performance / current state &#8212; without using AI, how efficient and valuable is the existing process?</p></li><li><p>Incremental performance improvement &#8212; how much better is the AI relative to current state or the best alternative?</p></li><li><p>Maintenance costs &#8212; how difficult is it to maintain performance?</p></li><li><p>Other considerations &#8212; e.g. aligning incentives to make sure efficiency doesn&#8217;t conflict with time-based pricing models (one common one: the billable hour).</p></li></ul><h3>Creating an entirely new process</h3><p>Finally, as AI and other related technological capabilities become more advanced, there&#8217;s an open question regarding whether we can go beyond breaking down or refining an existing process by applying AI to individual tasks within that process.</p><p>Specifically, it raises the question whether we should completely change how we think about things and whether certain tasks or even entire workflows should exist at all.</p><p>Here&#8217;s a historical analogy: physically going to the library to do legal research was a common practice at one point. As legal research became digitized and sufficiently reliable relative to research done using physical copies, going to the library was eliminated as a practice in most cases.</p><p>Imagine if in a future state, a key research area, such as those underlying certain types of contracts became sufficiently clear to the point where research was eliminated as a necessity when drafting contracts.</p><p>Or during negotiation, what if the data and processes supporting negotiation playbooks and cycles became so standardized and predictable that two AI agents could essentially negotiate against one another and come up with the optimal outcome for both sides, and then communicate the results. </p><p>Ultimately as with the other examples of applying AI, we&#8217;ll need to assess the trade-offs of doing so. But we can imagine that some re-engineered processes are very impactful and happen sooner rather than later.</p><p><em>The Contract Signal is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Turning Renewal Questions into Claude and Codex Skills]]></title><description><![CDATA[Claude and Codex Skills that answer common contract renewal questions]]></description><link>https://thecontractsignal.com/p/renewal-questions-claude-codex-skills</link><guid isPermaLink="false">https://thecontractsignal.com/p/renewal-questions-claude-codex-skills</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Sat, 01 Aug 2026 20:41:45 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ad77d6a3-c0fa-47de-a292-1fa55e3e72e1_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone,</p><p>In a previous article I discussed the value of <a href="https://thecontractsignal.com/p/renewal-question-to-reusable-ai-workflow?r=1iyonb">starting with a concrete problem</a> or use case (in that case, a contract renewal question) and then turning it into a skill. To recap: the main benefit of doing so is creating a reusable, specialized set of instructions that can be re-purposed for similar tasks or workflows in the future.</p><p>In this walkthrough, I&#8217;ll go through the process of creating skills to solve that problem.</p><h2>Problem / Scenario</h2><p>Let&#8217;s say that you&#8217;re an in-house counsel, contracts manager or account executive. You&#8217;ve received an email from a client or from an internal stakeholder asking about a renewal for a specific contract.</p><p>Here are four common things someone might want to know about a renewal:</p><ol><li><p>Is there renewal language at all?</p></li><li><p>Renewal type (automatic vs. optional)</p></li><li><p>Renewal timing (when is the contract coming up for renewal)</p></li><li><p>Counterparty outreach necessary (do I need to provide notice or do anything else and if so, when)</p></li></ol><p>We can create one or more skills to handle this type of analysis.</p><h2>What the skills do</h2><p>The skill is broken into three components:</p><ol><li><p>Finding the relevant renewal language in a contract</p></li><li><p>Performing the analysis - including classification of the renewal type and identification of the renewal date</p></li><li><p>Drafting an outreach email with the relevant language</p></li></ol><h2>How to use the skill</h2><p>First, confirm that using LLMs and skills on your contracts is allowed by your organization. Typically companies require enterprise licenses as these have more robust information security and related safeguards.</p><p>Assuming you are allowed under your company&#8217;s policies, here&#8217;s the high-level setup process (see README file for more details):</p><ul><li><p>Download the skill files</p></li><li><p>Create a new folder on your hard drive for the relevant project or workstream</p></li><li><p>Copy the skill bundle to a local folder on your hard drive</p></li><li><p>Open up Claude Cowork or ChatGPT / Codex</p></li><li><p>Create a new project and add the relevant folder and files</p></li><li><p>Alternatively, create a new chat and upload the files directly</p><p></p></li></ul><h2>Claude</h2><p></p><h3>Download and quick start</h3><p></p><p>To download the skill and get the quick start guide, subscribe (it&#8217;s free):</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p></p><h3>Codex</h3><p></p><p>To download the skill and get the quick start guide, subscribe (it&#8217;s free):</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p><em>The Contract Signal is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber. </em></p><p><em>In addition, send me a note if there are additional skills or walkthroughs you would find helpful or if you have any other feedback or questions.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p></p><h3></h3><p></p>]]></content:encoded></item><item><title><![CDATA[The Contract AI Moat Is Shifting]]></title><description><![CDATA[Amazon applies Quick to legal use cases, OpenAI, Anthropic, and Google ship new models, open source AI has momentum, and why the moat is moving away from the model itself.]]></description><link>https://thecontractsignal.com/p/the-contract-ai-moat-is-shifting</link><guid isPermaLink="false">https://thecontractsignal.com/p/the-contract-ai-moat-is-shifting</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Sun, 26 Jul 2026 16:09:48 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/1a9bc7d2-397d-41f6-bf06-0cf2ee36e0f2_1200x630.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone,</p><p>The last few weeks have brought more AI announcements both focused on and tangential to the contract AI space. </p><p>Some of these have been significant, including another Big Tech entrant into the contract AI space (Amazon), foundation model upgrades and launches by OpenAI, Anthropic, and Google, a push towards more capable open source models, and some interesting partnerships.</p><p>Two trends worth watching: </p><ol><li><p>The proliferation of large language models and related capabilities has reduced the barrier to entry on the AI modeling side. As increasingly capable models are made available to all firms, there will likely be an increase in the value of capabilities complementary to the models. These include end-to-end product experiences and integrations, data, and distribution channels. This is even more likely to be the case if the open source push gains traction and we see open source models at or near the frontier level.</p></li><li><p>Related, many companies seem to be adopting a combination of build, buy and partner approaches in their AI programs, including Contract AI and related workflows. These create interesting &#8220;frenemy&#8221; type dynamics that parallel similar historical trends in the broader technology sector.</p></li></ol><p>With that, let&#8217;s dive in.</p><h2>New Market Entrants</h2><ul><li><p>Amazon launched <a href="https://aws.amazon.com/quick/legal/">Quick for Legal</a> - an AI assistant that helps with legal research, contracts, and compliance. It appears that this is the same core AI assistant (Quick) but directed at legal use cases. Contract use cases mentioned include contract monitoring, clause extraction, risk flagging, and obligation tracking across portfolios. Amazon is a highly diversified company that includes AWS, the market-leading cloud business that supports a variety of businesses, including legaltech companies, with its infrastructure and related capabilities. This creates interesting market dynamics as it functions both as a key vendor for these companies as well as a potential competitor. However, this dynamic has existed in other industries as well (e.g. Amazon provides <a href="https://netflixtechblog.com/cloud-efficiency-at-netflix-f2a142955f83?gi=a2bbb1aeb33e">Cloud services and infrastructure for Netflix</a> despite also having their own Amazon Prime Video offering).</p></li><li><p>Anthropic, Blackstone, Hellman &amp; Friedman launched <a href="https://www.businesswire.com/news/home/20260715205134/en/Anthropic-Blackstone-and-Hellman-Friedman-Introduce-Ode-with-Anthropic-an-Enterprise-AI-Services-Firm">Ode</a>, an enterprise AI services firm. While the announcements have not directly mentioned contract AI or legaltech, it appears that the firm will support enterprises across industries. Given Anthropic&#8217;s launch of Claude for Legal, and increasing demand for both in-house departments and service providers to incorporate AI into their workflows, it will be interesting to see how much investment the firm makes in contract AI and legaltech. My sense from the announcements so far is that the firm&#8217;s focus will be untapped AI opportunities in other sectors.</p></li><li><p><strong>Why it matters:</strong> contracts and other legal use cases are great applications for large language models given the business and legal information expressed in </p><p>high volumes of natural language. The availability of increasingly capable LLMs has not only reduced the barrier to entry into the space but has increased the value of capabilities complementary to the models themselves. In Amazon&#8217;s case, its vast infrastructure and <a href="https://aws.amazon.com/bedrock/security-privacy-responsible-ai/">ability to serve up models securely through Amazon Bedrock</a> has become a significant competitive advantage.</p></li></ul><h2>Foundation Model Updates</h2><ul><li><p>OpenAI released the GPT 5.6 family of models, including <a href="https://openai.com/index/gpt-5-6/">Sol, Terra and Luna</a>. The model capabilities have been well-received by the market and are comparable in performance to Anthropic&#8217;s flagship Fable model.</p></li><li><p>Anthropic released Opus 5, a model it says comes close to the performance level of Fable and is twice as efficient. Fable continues to be available for Max and Enterprise plans and via separate usage credits for other plans.</p></li><li><p>Google released updates to 3.6 Flash, 3.5 Flash-Lite and 3.5 Flash Cyber. While not as powerful as its flagship model Gemini Pro, each promises increased token efficiency. In addition, Flash Cyber has improved cybersecurity applications.</p></li><li><p>Jensen Huang published an open letter on X discussing the importance of open models. The letter was co-signed by various companies, most notably OpenAI, Microsoft, and Perplexity, each of which provides access to their own proprietary AI models.</p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/JensenHuang/status/2080643682408321103?s=20&quot;,&quot;full_text&quot;:&quot;For my first post, I&#8217;m sharing a letter <span class=\&quot;tweet-fake-link\&quot;>@nvidia</span> signed on why open models matter.\n\nAI will transform every industry, power every company, and be built by every country.\n\nOpen models strengthen safety and cybersecurity, accelerate innovation and diffusion, and enable sovereignty. &quot;,&quot;username&quot;:&quot;JensenHuang&quot;,&quot;name&quot;:&quot;Jensen Huang&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/2080613261674962944/OMXX4RJ3_normal.jpg&quot;,&quot;date&quot;:&quot;2026-07-24T13:18:05.000Z&quot;,&quot;photos&quot;:[{&quot;img_url&quot;:&quot;https://pbs.substack.com/media/HN_qDVsa4AAI6XJ.jpg&quot;,&quot;link_url&quot;:&quot;https://t.co/t02bi51N4C&quot;},{&quot;img_url&quot;:&quot;https://pbs.substack.com/media/HN_qDV1a8AARQwg.jpg&quot;,&quot;link_url&quot;:&quot;https://t.co/t02bi51N4C&quot;},{&quot;img_url&quot;:&quot;https://pbs.substack.com/media/HN_qDV1awAAPTlH.jpg&quot;,&quot;link_url&quot;:&quot;https://t.co/t02bi51N4C&quot;}],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:14835,&quot;retweet_count&quot;:26097,&quot;like_count&quot;:151945,&quot;impression_count&quot;:50900893,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div></li><li><p><strong>Why it matters:</strong> these four announcements are the latest examples of increased foundation model performance and competition. This is likely to produce better outcomes for consumers of AI models over time and enable more, better applications. However, there&#8217;s also a lingering question regarding whether any of these models will replace more specialized AI or other software as the frontier models become more capable. So far the doomsday predictions of a &#8220;SaaSpocalypse&#8221; have been overblown. My sense is that in the near term, we&#8217;ll continue to see a range of successful SaaS software providers, but there will be increased pressure for vendors to provide more value relative to general purpose LLMs such as Claude and ChatGPT.</p></li></ul><h2>Product Announcements and Related Updates</h2><ul><li><p>Litera has announced a <a href="https://www.litera.com/newslinks/litera-relaunches-unite-practice-and-business-law">re-launch of the company</a> focused around a single AI agent. Based on the announcement, the goal is to provide a single entry point into multiple workflows and use cases. In addition, the company mentioned that it has been able to develop a more deterministic redlining tool, leveraging its years of experience.</p></li><li><p>Microsoft&#8217;s partnerships with different contract AI and legaltech companies including <a href="https://www.harvey.ai/blog/harvey-expands-collaboration-with-microsoft-on-legal-ai">Harvey</a> and <a href="https://www.lexisnexis.com/community/pressroom/b/news/posts/lexisnexis-celebrates-microsoft-build-2026-and-ongoing-collaboration-to-bring-trusted-legal-ai-through-lexisnexis-protege-into-microsoft-365">LexisNexis</a> have been in the news lately. This is in line with Microsoft&#8217;s vast ecosystem and adoption by lawyers, including Microsoft Office 365.</p></li><li><p>Harvey, the AI-native legaltech company, <a href="https://www.harvey.ai/blog/y-combinator-backed-benchmark-joins-harvey">has acquired Benchmark</a>, a decision-infrastructure startup. Benchmark provides tools for asset management firms to better leverage their institutional data in decision-making.</p></li><li><p>Box has announced more <a href="https://www.businesswire.com/news/home/20260721998096/en/Box-Unveils-New-Controls-to-Secure-AI-Agents-Operating-Across-Enterprise-Content">rigorous security and governance controls</a> for its enterprise-focused intelligent content management system. Over the last few years, Box has expanded its offerings to serve enterprise customers, including in the contracts space.</p></li><li><p><strong>Why it matters:</strong> there is ongoing pressure to offer an end-to-end product experience, whether through building in-house, partnering or acquiring start-ups or growth companies. Box provides an example of enhancing its own offerings to account for growing demand for responsible AI use and governance. However, building everything in-house is not a sustainable route for large companies, in part due to the many competing demands on company time. Acquisitions of complementary tools or channel partnerships between large incumbents with large user bases and start-ups or growth companies with new capabilities are common alternatives. Another example: Microsoft acqui-hired the tech team <a href="https://www.artificiallawyer.com/2026/01/09/microsoft-to-acqui-hire-robin-ai-tech-team/">from Robin AI in early 2026</a>.</p></li></ul><h2>Other Highlights</h2><h3>Funding</h3><ul><li><p>Norm Ai, the agentic AI company, has <a href="https://www.prnewswire.com/news-releases/norm-ai-raises-120-million-at-a-1-2-billion-valuation-led-by-khosla-ventures-to-deliver-the-full-stack-model-for-legal-ai-302819152.html">raised $120M at a $1.2B valuation</a>. While not focused on contract AI, it does support contract workflows as part of its offerings.</p></li><li><p><strong>Why it matters: </strong>legal AI continues to be a hot space in the investment community, even with advancements in foundation models.</p></li></ul><p><em>The Contract Signal is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[From Renewal Question to Reusable AI Workflow]]></title><description><![CDATA[How contract professionals can cut through AI hype by starting with one practical, recurring problem.]]></description><link>https://thecontractsignal.com/p/renewal-question-to-reusable-ai-workflow</link><guid isPermaLink="false">https://thecontractsignal.com/p/renewal-question-to-reusable-ai-workflow</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Fri, 24 Jul 2026 17:51:31 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/dfa76417-3b0d-4d40-a91c-cf48447c2372_1200x600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Keeping up with the ever-growing list of AI concepts and terminology can be overwhelming, let alone figuring out which are important (or even relevant) for enterprise contracts.</p><p>An approach I&#8217;ve found helpful to address the information overload and FOMO is to focus on a smaller volume of high-impact concepts, one at a time, organized by concrete problems and use cases. Here&#8217;s an example.</p><h3>Problem / Scenario</h3><p>Let&#8217;s say that you&#8217;re an in-house counsel, contracts manager or account executive. You&#8217;ve received an email from a client or from an internal stakeholder asking about a renewal for a specific contract. </p><p>Here are four common things someone might want to know about a renewal: </p><ol><li><p>Is there renewal language at all?</p></li><li><p>Renewal type (automatic vs. optional)</p></li><li><p>Renewal timing (when is the contract coming up for renewal)</p></li><li><p>Counterparty outreach necessary (do I need to provide notice or do anything else and if so, when)</p></li></ol><h3>Solving the Problem</h3><p>One approach is to search the repositories you have access to for the contract using whatever criteria is available. Or if you don&#8217;t have access to all of the repositories, sending a note around internally to people who might know. If it&#8217;s a customer contract, sending a note to sales, if it&#8217;s a vendor contract, sending a note to procurement, etc.</p><p>For a single request, we also create a chat with an LLM to help us. E.g. ping Claude or ChatGPT, provide some context, and then move forward with the search.</p><p>There&#8217;s nothing wrong with these approaches for a single request, <strong>but they don&#8217;t scale well.</strong> </p><p>For many requests, for example if you get dozens or hundreds of similar requests, you would probably benefit from a more methodical approach.</p><p>One approach is to compile a rough estimate of the types of requests you receive in a given week (or month / quarter / year). Which are the common ones, the most cumbersome ones or the ones where it feels like you&#8217;re doing the most duplicative work? </p><p>For these we can create a skill, which is essentially a reusable instruction that reduces the need to repeatedly prompt an LLM-powered chatbot for the same thing. </p><ul><li><p>See my article <strong><a href="https://thecontractsignal.com/p/claude-codex-contract-intake-skill?r=1iyonb">here</a></strong> for a specific example that is useful for managing contract intelligence requests.</p></li></ul><p>The prompt doesn&#8217;t need to be over-engineered: for example for our renewal language you can start by simply asking &#8220;can you help me put together a skill to find renewal language in contracts&#8221;? Then you can provide additional context as needed and check the AI tool&#8217;s work.</p><p>This works in both ChatGPT and Claude, two of the most popular LLM tools. You can also go to https://chatgpt.com/skills to manage skills there. Please follow your organization&#8217;s policies on AI use regarding which tools and context are appropriate.</p><h3>Summary</h3><ul><li><p>Don&#8217;t worry about learning every AI concept or about AI FOMO</p></li><li><p>Start with a concrete problem or use case</p></li><li><p>Determine whether it&#8217;s a recurring or duplicative task</p></li><li><p>If it&#8217;s truly a one-off task, use a regular chat</p></li><li><p>If it&#8217;s recurring or involves significant duplicative work, create a skill by prompting the LLM</p></li><li><p>Check the LLM&#8217;s work</p></li></ul><p><em>The Contract Signal is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[The Contract AI Vendor Diligence Checklist]]></title><description><![CDATA[46 questions to test the data, models, workflow, usability and business behind a contract AI product.]]></description><link>https://thecontractsignal.com/p/the-contract-ai-vendor-diligence-checklist</link><guid isPermaLink="false">https://thecontractsignal.com/p/the-contract-ai-vendor-diligence-checklist</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Wed, 22 Jul 2026 18:45:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/bf541f84-7c2f-4b67-9fff-ff8479769980_2400x1600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#8220;We were losing more than one million dollars per year.&#8221;</p><p>A former colleague told me this in 2020, describing a failed AI project. I was interviewing them for any wisdom they could share as I stepped into a product manager role for our machine learning program. They had engaged a third-party provider with best-in-class technical credentials and a great demo &#8212; and had virtually nothing to show for it beyond spent time, effort, and money.</p><p>Unfortunately, this is not an isolated incident in enterprise AI. I&#8217;ve seen the same themes surface again and again when doing diligence on third-party providers, working alongside teams of AI engineers and data scientists, running my own experiments with AI tools, and following the industry&#8217;s research and best practices. </p><p>The good news is most of these problems could have been prevented (or at least significantly reduced) with better diligence before a purchase or investment decision is made.</p><p>That is the guiding principle behind this questionnaire: help separate fact from fiction by examining the vendor&#8217;s end-to-end process. What problem it solves, how contract data is produced, how performance is measured, how results are verified, how users consume the deliverable and whether the underlying business and technology stack can support the promised outcome.</p><p><strong>One call-out</strong> - when using the questionnaire, do not rely only on verbal answers. Wherever possible, request written evidence: sample outputs, citations, test methodology, data-flow diagrams, sandbox access, implementation plans, customer references and contractual quality guarantees or other commitments. These are often more substantive and more reliable than verbal responses alone.</p><p>Subscribe to get the full checklist (it&#8217;s free).</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><h2></h2>]]></content:encoded></item><item><title><![CDATA[From Vague Request to Structured Contract Workstream]]></title><description><![CDATA[How to use a Claude or Codex skill to turn incomplete contract review requests into structured workstreams]]></description><link>https://thecontractsignal.com/p/claude-codex-contract-intake-skill</link><guid isPermaLink="false">https://thecontractsignal.com/p/claude-codex-contract-intake-skill</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Sun, 19 Jul 2026 23:11:01 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/43e8c3f3-e19a-4eef-9d4a-cf499e2acbcc_2800x2000.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi everyone,</p><p>In a <a href="https://thecontractsignal.com/p/the-post-executed-contract-intelligence-framework?r=1iyonb.">previous article</a> I discussed how every post-signature enterprise contract workstream, big or small, can be framed as the same underlying six-part process:</p><ol><li><p><strong>Trigger</strong> &#8212; an event occurs that requires contracts work</p></li><li><p><strong>Define criteria</strong> &#8212; determine what you&#8217;re looking for and why</p></li><li><p><strong>Find</strong> &#8212; apply the criteria to locate the target population of contracts</p></li><li><p><strong>Analyze</strong> &#8212; go deeper on the population: validate the initial search results, incorporate nuances, exceptions, and additional criteria, and perform a comprehensive assessment</p></li><li><p><strong>Decide</strong> &#8212; translate the analysis into recommendations, remediation paths, answers to stakeholder questions and other internal deliverables</p></li><li><p><strong>Remediate</strong> &#8212; take action through counterparty outreach, internal communication, negotiation, and workflow tracking</p></li></ol><p>This article focuses on creating a skill to support the first phase: <strong>Trigger / Intake.</strong></p><ul><li><p>One call-out re terminology: the <strong>trigger</strong> is the event or request (usually outside of our control). <strong>Intake</strong> is the process of turning that event or request into enough structured context to begin planning the work. </p></li></ul><h2>Problem / Scenario</h2><p>Imagine receiving this hypothetical request for M&amp;A diligence:</p><blockquote><p>Quick update: we signed an LOI to acquire ABC corporation and expect to close soon. Please start reviewing the top 100 customer contracts (will send a data-room link once available). </p></blockquote><p>It can be tempting to get access to the repository and immediately start reviewing contracts. However, it&#8217;s usually better to scope out what the request is asking for in greater detail along with any available context to help inform execution.</p><h3>What the skill does</h3><p>The intake skill acts as a thought partner that helps<strong> </strong>clarify and understand<strong> </strong>an inbound request for contracts analysis in sufficient depth to effectively begin planning and execution.</p><p>If you provide context to the skill, it helps produce a structured intake brief that:</p><ul><li><p>Classifies the trigger or request</p></li><li><p>Identifies the decision or deliverable that the contract analysis needs to support</p></li><li><p>Translates business context into relevant scope (contract populations, data points, etc.)</p></li><li><p>Flags missing inputs, assumptions, unknowns, and potential blockers</p></li><li><p>Generates recommended next steps, including what can begin now versus what should wait and related scope-change risks</p></li></ul><h2>Two ways to use the skill</h2><h4>Option 1: Provide the underlying context directly</h4><p>If your organization&#8217;s AI use, information security and related policies permit it, you can provide the relevant context directly to the model.</p><h4>Option 2: Use the skill to generate an intake checklist</h4><p>Where providing the underlying context directly is not appropriate, the skill can instead generate a structured checklist of the information that would be helpful to collect.</p><p>You can then work through that checklist separately and return only the information that is appropriate to provide. This is less direct, but it can still help structure an incomplete request and identify the inputs most likely to affect scope or execution.</p><h3>Limitations</h3><p>The skill&#8217;s goal is to create a better starting point for later stages: defining the final scope of the work, performing contract analysis, making decisions, and perform remediation actions. However, its output should be checked and confirmed as being correct by the relevant stakeholders.</p><h3>Subscriber resources</h3><p><strong>Subscribers receive:</strong></p><ul><li><p>The complete <strong>intake-contract-workstream</strong> skill bundle for each of Claude and Codex</p></li><li><p>Installation instructions</p></li><li><p>A practical M&amp;A example (hypothetical)</p></li><li><p>Future updates to the intake framework and request category modules</p></li></ul><p></p>]]></content:encoded></item><item><title><![CDATA[The Post-Signature Contract Intelligence Framework]]></title><description><![CDATA["AI contract review" is six different problems being lumped into one category. Here's the breakdown.]]></description><link>https://thecontractsignal.com/p/the-post-executed-contract-intelligence-framework</link><guid isPermaLink="false">https://thecontractsignal.com/p/the-post-executed-contract-intelligence-framework</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Mon, 13 Jul 2026 02:03:17 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d73c9e1e-632a-4dc4-ab15-6ff685ad13de_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>You get an internal email announcing an M&amp;A deal. </span></p><p><span>The clock starts running on the contracts workstream.</span></p><p><span>You&#8217;re juggling a handful of other tasks. You&#8217;re being told to use AI. Life outside of work doesn&#8217;t stop either.</span></p><p><span>So how do you proceed?</span></p><p><span>Almost every post-signature enterprise contract workstream, big or small, can be framed as the same underlying process. It doesn&#8217;t matter whether it&#8217;s M&amp;A diligence, regulatory remediation, a backlog review or a one-off question from sales.</span></p><p><span>In this article I&#8217;ll break that process into six pieces and walk through each one, using M&amp;A as the core example.</span></p><p><span>The six pieces are:</span></p><ol><li><p><strong><span>Trigger</span></strong><span> &#8212; an event occurs that requires contracts work</span></p></li><li><p><strong><span>Define criteria</span></strong><span> &#8212; determine what you&#8217;re looking for and why</span></p></li><li><p><strong><span>Find</span></strong><span> &#8212; apply the criteria to locate the target population of contracts</span></p></li><li><p><strong><span>Analyze</span></strong><span> &#8212; go deeper on the population: validate the initial search results, incorporate nuances, exceptions, and additional criteria, and perform a comprehensive assessment</span></p></li><li><p><strong><span>Decide</span></strong><span> &#8212; translate the analysis into recommendations, remediation paths, answers to stakeholder questions and other internal deliverables</span></p></li><li><p><strong><span>Remediate</span></strong><span> &#8212; take action through counterparty outreach, internal communication, negotiation, and workflow tracking</span></p></li></ol><p><span>The details may vary significantly from one project or task to another but the underlying process will remain fairly consistent.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h3><strong><span>1. Trigger</span></strong></h3><p><span>There are all sorts of possible triggers, but almost all of them fall into three main buckets:</span></p><ol><li><p><strong><span>External events - </span></strong><span>something outside the normal course of business creates the need for contract work.</span></p><ol><li><p><span>Two of the biggest examples are:</span></p><ul><li><p><span>M&amp;A (buy-side, sell-side, reorgs, etc.)</span></p></li><li><p><span>Regulatory remediation</span></p></li></ul></li></ol></li><li><p><strong><span>Internal initiatives - </span></strong><span>the business identifies an internal need.</span></p><ol><li><p><span>The classic example is a backlog or legacy review: getting better visibility into a large historical contract population, identifying risks and opportunities, or solving for one or more specific use cases</span></p></li><li><p><span>These projects can be very valuable, but they are often perceived as nice to have and easier to defer than an acquisition or regulatory deadline</span></p></li></ol></li><li><p><strong><span>Business as usual - </span></strong><span>the steady stream of recurring and one-off questions from various business stakeholders. For example:</span></p><ul><li><p><span>Sales is negotiating a renewal and wants to understand the existing agreement</span></p></li><li><p><span>Finance is asking about deliverable timing or pricing terms</span></p></li><li><p><span>Product wants to know what AI or data-use rights the company has</span></p></li><li><p><span>Legal wants to identify risk allocation terms such as indemnification</span></p><p></p></li></ul></li></ol><div><hr></div><h3><strong><span>2. Define criteria</span></strong></h3><p><span>Before searching for contracts or specific clauses, you need to answer two interrelated but different questions:</span></p><p><span>1. </span><strong><span>Which contracts are in scope?</span></strong></p><p><span>2. </span><strong><span>What do we need to know about them?</span></strong></p><p><span>I think of these as </span><strong><span>search criteria </span>(aka population criteria)</strong><span> and </span><strong><span>analysis criteria</span></strong><span>.</span></p><p><strong><span>Search criteria: which contracts matter?</span></strong></p><p><span>For an M&amp;A transaction, examples of the relevant population include:</span></p><ul><li><p><span>The top 100 or 200 customer contracts by revenue</span></p></li><li><p><span>All active vendor agreements above a certain spend threshold</span></p></li><li><p><span>Agreements involving a particular legal entity</span></p></li></ul><p><span>The initial scope or data may come from a variety of places: for example the finance team, the seller, the M&amp;A team or a data room.</span></p><p><span>This is where metadata that is use-case-agnostic often becomes essential: document title, party names, dates, contract type and similar information.</span></p><p><strong><span>Analysis criteria: what do we need to know?</span></strong></p><p><span>The second question is more substantive and depends on the use case. For M&amp;A, common areas of interest include:</span></p><ul><li><p><span>Assignment restrictions</span></p></li><li><p><span>Change-of-control provisions</span></p></li><li><p><span>Consent and notice requirements</span></p></li><li><p><span>Termination rights</span></p></li><li><p><span>Governing law</span></p></li><li><p><span>Restrictive covenants</span></p></li><li><p><span>Liability and indemnification provisions</span></p></li></ul><p><span>These provisions help determine what to do with the contract as a result of the transaction, what counterparty outreach and other actions may be required, what risks the acquirer inherits, and the trade-offs of different approaches.</span></p><p><span>For data privacy or regulatory work, the criteria might instead include:</span></p><ul><li><p><span>Does the required privacy language exist?</span></p></li><li><p><span>Does it satisfy the relevant regulatory standard?</span></p></li><li><p><span>Where are the parties located?</span></p></li><li><p><span>Where is data stored or processed?</span></p></li><li><p><span>Are sub-processing or cross-border transfers permitted?</span></p></li></ul><p><span>For business-as-usual questions, the search criteria and analysis criteria may merge. &#8220;Find the contract with Customer X and tell me whether they can terminate for convenience&#8221; already contains both the search criteria and the substantive question. In addition, sometimes simply finding the relevant agreement is enough.</span></p><p><span>There are also common secondary filters: these include things like active versus expired contracts, upcoming renewals, geography, contract value, business unit. Note that the relevance of each of these depends on the use case. An expired contract might be irrelevant to an assignability analysis but highly useful when someone asks, &#8220;What language did we agree to last time?&#8221; or &#8220;Do we already have an agreement with this counterparty?&#8221;</span></p><p><span>One final point: flagging missing information is often valuable in and of itself. In an M&amp;A context, an inability to locate critical customer agreements or a lack of certain clause types can affect the risk profile of both the contracts and the deal.</span></p><div><hr></div><h3><strong><span>3. Find</span></strong></h3><p><span>Once the criteria are defined, the next question is: How do you identify the relevant contracts?</span></p><p><span>The answer depends on both what you&#8217;re looking for and what information you have to work with. There are two common starting points: a list of contracts or a data dump.</span></p><p><strong><span>List of Contracts</span></strong></p><p><span>For example the M&amp;A team or the seller provides the top customers by name.</span></p><p><span>In that case, finding the relevant contracts is a matching exercise: compare the list against the party names in the contracts. If there&#8217;s a match, it generally means the contract is in scope. </span>The comparison can run at several levels of strictness but the core concept is the same:</p><ul><li><p><span>Exact legal-entity match</span></p></li><li><p><span>Approximate name match / fuzzy match (e.g. Acme Corporation vs. Acme Corp.)</span></p></li><li><p><span>Affiliate or corporate-family match</span></p></li></ul><p><span>One reason the specific matching logic used is important is because contracts are entered into by legal entities, </span><strong><span>while the business often thinks about contracts in terms of broader customer or vendor relationships. </span></strong><span>So the key is finding the balance between matches that are exact enough to avoid too many irrelevant documents (false positives) while flexible enough to avoid missing any legitimate ones (false negatives).</span></p><p><strong><span>Data Dump</span></strong></p><p><span>Alternatively, you may receive a data room full of documents described as &#8220;top customer contracts,&#8221; with inconsistent naming conventions and organization. In this case, there are multiple paths forward.</span></p><p><span>You can first identify parties and other metadata to organize the population.</span></p><p><span>Or you can begin with substantive clause or language-based filtering, for example:</span></p><ul><li><p><span>Which contracts restrict assignment?</span></p></li><li><p><span>Which require consent?</span></p></li><li><p><span>Which require notice only?</span></p></li><li><p><span>Which provide termination rights in connection with the transaction?</span></p></li></ul><p><span>In practice, these approaches often work best together. The list helps define the initial population and the follow-on searches help pressure test, refine the scope of, and prioritize the population of interest, as needed.</span></p><div><hr></div><h3><strong><span>4. Analyze</span></strong></h3><p><span>The line between finding a contract and analyzing it isn&#8217;t always clear. For example, flagging a contract for assignment restrictions is already a form of analysis.</span></p><p><span>But the analyze stage is where you go deeper, and it has four layers:</span></p><ol><li><p>Validate the search results</p></li><li><p>Incorporate exceptions, carveouts and nuances</p></li><li><p>Expand the criteria</p></li><li><p>Synthesize</p></li></ol><h4><strong><span>Validate</span></strong></h4><p><span>First, confirm that the results actually match your intent.</span></p><p><span>For example, if a system identifies 75 agreements as containing assignment restrictions, do they contain assignment restrictions relevant to the transaction?</span></p><p><span>A clause may contain the word &#8220;assignment&#8221; but address the counterparty&#8217;s assignment rights rather than yours. It may apply only to certain rights or obligations. It may not directly use the word &#8220;assignment&#8221; or &#8220;assign&#8221; at all. Or it may use the same keywords but be completely irrelevant &#8211; for example referring to a work assignment rather than the legal transfer of an asset.</span></p><p><strong><span>Key point: the same keywords may have varying semantic meanings or significance.</span></strong></p><h4><strong><span>Incorporate exceptions, carveouts and nuances</span></strong></h4><p><span>Next, examine the exceptions, carveouts, and situation-specific facts that can change the initial categorization.</span></p><p><span>Suppose a contract says consent is required for assignment, unless the agreement is assigned to an affiliate.</span></p><p><span>If the deal structure involves assignment to an affiliate, the remediation path for that agreement may move from &#8220;consent required&#8221; to a completely different remediation path such as &#8220;courtesy notice&#8221;.</span></p><p><span>Or consider a clause permitting assignment in connection with a merger, sale of substantially all assets, or similar transaction. Whether the exception applies depends on both the contractual language and the structure of the deal.</span></p><p><span>This is why the contract and the business context cannot be separated.</span></p><h4><strong><span>Expand</span></strong></h4><p><span>Finally, the analysis often expands beyond the original criteria. You may begin by looking for assignment restrictions. But once you understand the contract population and transaction structure, additional questions emerge.</span></p><p><span>For M&amp;A, examples include:</span></p><ul><li><p><strong><span>Change of control</span></strong></p><ul><li><p><span>Assignment and change of control belong to the same general umbrella of concepts and are often analyzed together, but they are not identical.</span></p></li><li><p><span>The specific transaction structure may trigger a change-of-control provision even where no contractual assignment occurs.</span></p></li></ul></li><li><p><strong><span>Termination rights</span></strong></p><ul><li><p><strong><span>Termination rights (</span></strong><span>especially for convenience </span>or a result of corporate transactions) can significantly impact the risk/opportunity profile of a contract</p><ul><li><p><span>If a customer can terminate a significant revenue contract at will, that may represent risk to the acquirer.</span></p></li><li><p><span>If the acquired company has a broad right to terminate a vendor agreement, that may create flexibility: the acquirer can potentially exit an unfavorable contract, consolidate vendors to capture deal synergies, or simply use the credible possibility of termination as leverage in renegotiating commercial terms.</span></p></li></ul></li></ul></li><li><p><strong><span>Limitation of liability and indemnification</span></strong></p><ul><li><p><span>Even assuming the same contractual terms, the significance of contractual risk can change after an acquisition. A smaller company may have operated for years under a contract with unusually broad liability exposure without a dispute ever arising. But when a much larger and better-capitalized company (i.e. a better litigation target if something goes wrong) acquires the business or assumes the agreement, the practical risk assessment may change.</span></p></li><li><p><span>That does not automatically mean every contract with unfavorable liability terms must be terminated or renegotiated. But it may change the priority assigned to the contract and the remediation decision.</span></p></li></ul></li><li><p><strong><span>Restrictive covenants</span></strong></p><ul><li><p><span>Various commercial restrictions may conflict with the strategic rationale for the transaction. Examples include: exclusivity language, most-favored-nation clauses, non-competes, non-solicitation and subcontracting restrictions.</span></p></li><li><p><span>Imagine acquiring a company specifically to enter a new market, only to discover that a material contract limits the company&#8217;s ability to compete, distribute products, work with certain customers, or use particular subcontractors.</span></p></li></ul></li></ul><h4>Synthesis</h4><p>At the end of the analysis stage, the output should be more than extracted data.</p><p>Net of all of considerations,<strong> </strong>one or more internal deliverables is created: a spreadsheet, report or something else showing the analysis along with the suggested remediation path and reasoning. For example, if 100 contracts were in scope:</p><ul><li><p>10 may be expired</p></li><li><p>20 may require assignment consent</p></li><li><p>40 may require notice</p></li><li><p>10 may require an amendment or negotiation due to risk concerns</p></li><li><p>20 should be left alone - perhaps because they&#8217;re undesirable contracts coming up for expiration before deal close or because they&#8217;re with related entities and don&#8217;t require additional action</p></li></ul><div><hr></div><h3><strong><span>5. Decide</span></strong></h3><p>Before anyone reaches out internally or externally, there&#8217;s a need for a decision.</p><p>For an M&amp;A transaction, that often means classifying contracts into different remediation paths: assign, exit/terminate, renegotiate, renew, or leave alone.</p><p>In addition, more significant issues may also affect the transaction itself. Diligence and integration are often gray areas rather than cleanly separated phases. The significance of a contractual issue depends on when it is discovered, the magnitude of the exposure, the importance of the contract, and the broader rationale for the acquisition. A single problematic contract does not necessarily jeopardize a deal, but a population-level pattern might. </p><p>For example, perhaps a large percentage of the target&#8217;s revenue is tied to contracts that can be terminated for any reason. Or critical agreements cannot be transferred without consent. Perhaps restrictive covenants interfere with the strategic rationale for the acquisition or the company simply does not have enough durable customer contracts to provide the market beachhead the acquirer expected. Perhaps uncapped liability exists in critical places.</p><p>All of these considerations are ways that contract data can impact the overall deal.</p><h3><strong><span>6. Remediate (Take Action)</span></strong></h3><p><span>Once the decisions are made, it is time to act.</span></p><p><span>For M&amp;A and other episodic projects, this often means contract remediation and any related counterparty outreach:</span></p><ul><li><p><span>Requesting consents</span></p></li><li><p><span>Sending legally required notices or courtesy notices where appropriate</span></p></li><li><p><span>Negotiating where counterparty consent is difficult to obtain</span></p></li><li><p><span>Amending agreements as needed before assignment</span></p></li><li><p><span>Terminating and/or entering into new contracts where necessary</span></p></li></ul><p>All of this requires a significant workflow tracking component as well, including:</p><ul><li><p><strong>Internal communication</strong> - l<span>egal, sales, finance, </span>procurement, <span>integration teams, business owners, and senior leadership may each need different views of the same underlying analysis and remediation.</span></p></li><li><p><strong>Tracking the remediation results on a contract by contract basis</strong> - w<span>hich consents are outstanding, which notices went out, which contracts are stuck, what&#8217;s blocking or impacting the deal close, etc.</span></p></li></ul><div><hr></div><h3><strong><span>Recap</span></strong></h3><p><span>Almost every post-signature enterprise contracts project can be framed as the same underlying 6-part process:</span></p><ol><li><p><strong>Trigger</strong> &#8212; an event occurs that requires contracts work</p></li><li><p><strong>Define criteria</strong> &#8212; determine what you&#8217;re looking for and why</p></li><li><p><strong>Find</strong> &#8212; apply the criteria to locate the target population of contracts</p></li><li><p><strong>Analyze</strong> &#8212; go deeper on the population: validate the initial search results, incorporate nuances, exceptions, and additional criteria, and perform a comprehensive assessment</p></li><li><p><strong>Decide</strong> &#8212; translate the analysis into recommendations, remediation paths, answers to stakeholder questions and other internal deliverables</p></li><li><p><strong>Remediate</strong> &#8212; take action through counterparty outreach, internal communication, negotiation, and workflow tracking</p></li></ol><p>Hopefully the above helps illustrate that post-signature contract intelligence is a multi-faceted problem and that each step in the process has its own challenges and nuances.</p><p><span>That leads to an interesting question: </span><strong><span data-color="#0000ff" style="color: rgb(0, 0, 255);">how much of each stage can AI actually help with? </span></strong><em>Update: I wrote a <a href="https://open.substack.com/pub/leonidprilutskiy/p/identifying-high-impact-ai-opportunities-contract-workflows?r=1iyonb&amp;utm_campaign=post&amp;utm_medium=web&amp;showWelcomeOnShare=true">follow-up article here that discusses this.</a> </em>Or more specifically: a<span>t each stage, from trigger to remediation, what can AI reliably do, what inputs does it need, what are the alternatives and trade-offs, and what are the complementary capabilities that need to exist around the model to get the best results?</span></p><p><span>If you found this article helpful, subscribe to follow along and forward along to anyone who might find this useful.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[The $50,000 Mistake – Why OCR Quality Can Cause LLMs to Fail on Enterprise Contracts]]></title><description><![CDATA[Why OCR quality decides what contract AI can do &#8212; and the three failure modes, ranked by how hard they are to catch.]]></description><link>https://thecontractsignal.com/p/ocr-quality-contract-ai-enterprise-contracts</link><guid isPermaLink="false">https://thecontractsignal.com/p/ocr-quality-contract-ai-enterprise-contracts</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Mon, 06 Jul 2026 00:56:25 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/481d9b60-0b6b-4511-a7fb-1a2d56f87bce_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Video version of this article: </p><div id="youtube2-zIhUhfoFevw" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;zIhUhfoFevw&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/zIhUhfoFevw?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><p><span>Imagine you have a $1 million customer contract.</span></p><p>Let&#8217;s assume it has a five-year term and is worth r<span>oughly $200,000 per year. </span></p><p><span>The contract also has a renewal option, but the renewal window is missed and the agreement expires. </span></p><p><span>This is an enterprise customer, so continuing business with the customer requires getting a new contract in place. This in turn means re-entering the contracting cycle: budget approvals, procurement, information security and legal review, etc.</span></p><p><span>Let&#8217;s suppose the customer renews without major issues but the delay pushes out a quarter of revenue.</span></p><p><span>That equates to roughly $50,000.</span></p><p><span>Now imagine the root cause was not an unsuccessful negotiation, a missed email, or a mistake by the account team. </span></p><p><span>Imagine it was this: the contract system had the wrong renewal date because it relied on the wrong effective date. The effective date was wrong because the OCR misread the scanned contract.</span></p><p><span>This is a hypothetical but a plausible one. It&#8217;s something that becomes possible when post-signature contracts are converted into structured data at enterprise scale: hundreds of thousands of contracts spanning many contract types, use cases and internal systems.</span></p><p><strong><span>For a deeper breakdown of post-executed enterprise contract intelligence and complexity, see the previous article </span><a href="https://thecontractsignal.com/p/what-is-post-executed-enterprise-contract-intelligence?r=1iyonb"><span data-color="#0000ff" style="color: rgb(0, 0, 255);">here</span></a><span data-color="#0000ff" style="color: rgb(0, 0, 255);"> </span>and video<span data-color="#0000ff" style="color: rgb(0, 0, 255);"> </span><a href="https://youtu.be/3rpK6X4te38"><span data-color="#0000ff" style="color: rgb(0, 0, 255);">here</span></a><span data-color="#0000ff" style="color: rgb(0, 0, 255);">.</span></strong></p><p><span>There are three common examples of OCR failures. But before getting into them, we need to unpack why OCR matters for enterprise contracts to begin with.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h3><span>Why OCR Is Important: The model often does not see your contract</span></h3><p><span>Enterprise contracts are often stored as PDFs. But a PDF is essentially just a container; the contents of the container (and how clean or machine-readable it is) varies widely.</span></p><p><span>Some PDFs are text-native. Some are image-only scans. Some have OCR layers that are incomplete or otherwise incorrect. </span></p><p><span>If the PDF is text-native, a system may be able to extract the embedded text directly. If it is a scan, OCR has to create the text layer. Once that text layer exists, many downstream extraction and classification workflows treat it as the relevant contractual text. This is crucial to understand because </span><strong><span>a large language model usually has no built-in way to know whether the extracted text is consistent with the original page.</span></strong><span> </span></p><p><span>In other words: OCR quality can determine what the AI system thinks the contract says. So when the OCR layer is wrong, the model&#8217;s input is wrong. And a scanned contract can be perfectly legible to a human reviewer and still be unreliable for a contract AI system.</span></p><p><span>With all that in mind, there are three OCR failure modes worth separating based on both the practical impact they have and how difficult they are to spot: </span></p><ol><li><p>No text layer exists</p></li><li><p>Text layer exists but is damaged</p></li><li><p>Silent failure</p></li></ol><div><hr></div><h3><span>Failure mode 1: there is no text layer</span></h3><p><span>The simplest failure is when the document has no usable text layer at all.</span></p><p><span>This happens when the contract is an image-only PDF, when OCR was never run, or when some file-quality issue prevented OCR from producing usable text.</span></p><p><span>To a human reviewer, the document may look perfectly readable:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ojYp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874577c2-6501-4b2b-a3f2-0e4249e80074_1422x392.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ojYp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874577c2-6501-4b2b-a3f2-0e4249e80074_1422x392.png 424w, https://substackcdn.com/image/fetch/$s_!ojYp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874577c2-6501-4b2b-a3f2-0e4249e80074_1422x392.png 848w, https://substackcdn.com/image/fetch/$s_!ojYp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874577c2-6501-4b2b-a3f2-0e4249e80074_1422x392.png 1272w, https://substackcdn.com/image/fetch/$s_!ojYp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874577c2-6501-4b2b-a3f2-0e4249e80074_1422x392.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ojYp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874577c2-6501-4b2b-a3f2-0e4249e80074_1422x392.png" width="1422" height="392" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/874577c2-6501-4b2b-a3f2-0e4249e80074_1422x392.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:392,&quot;width&quot;:1422,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:94817,&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://thecontractsignal.com/i/205300182?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874577c2-6501-4b2b-a3f2-0e4249e80074_1422x392.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_!ojYp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874577c2-6501-4b2b-a3f2-0e4249e80074_1422x392.png 424w, https://substackcdn.com/image/fetch/$s_!ojYp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874577c2-6501-4b2b-a3f2-0e4249e80074_1422x392.png 848w, https://substackcdn.com/image/fetch/$s_!ojYp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874577c2-6501-4b2b-a3f2-0e4249e80074_1422x392.png 1272w, https://substackcdn.com/image/fetch/$s_!ojYp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F874577c2-6501-4b2b-a3f2-0e4249e80074_1422x392.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><p></p><p><span>To a text-based extraction pipeline, it may be a blank page.</span></p><p><span>No usable text layer means no reliable text input &#8212; at least not without additional preprocessing.</span></p><p><span>This failure mode is annoying, but relatively straightforward. You can detect that there is no text, no extracted content, or no meaningful input for the model to use.</span></p><p><span>The harder cases come when OCR did run.</span></p><div><hr></div><h3><span>Failure mode 2: the text layer exists, but parts of it are damaged</span></h3><p><span>The more common case is that OCR ran and got enough of the document right that the problem is easy to miss.</span></p><p><span>Two things make this difficult.</span></p><p><span>First, OCR quality is not always consistent within a single document or even within the same page. Some parts of the document can have clean, easily readable text and others can be damaged.</span></p><p><span>Second, whether any damage actually matters depends on the use case. A model may be able to classify a clause correctly even when the text contains small errors. But those same errors may be fatal if the task requires exactness. The challenge is that many contract use cases do require exactness, as we&#8217;ll see.</span></p><p><span>Here are excerpts from the same document with significantly different OCR results.</span></p><p><span>The indemnification language came through cleanly.</span></p><p><strong><span>Screenshot:</span></strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ug9D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F726e017f-59d6-4e97-8c93-8315c4b1e47e_770x332.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ug9D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F726e017f-59d6-4e97-8c93-8315c4b1e47e_770x332.png 424w, https://substackcdn.com/image/fetch/$s_!ug9D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F726e017f-59d6-4e97-8c93-8315c4b1e47e_770x332.png 848w, https://substackcdn.com/image/fetch/$s_!ug9D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F726e017f-59d6-4e97-8c93-8315c4b1e47e_770x332.png 1272w, https://substackcdn.com/image/fetch/$s_!ug9D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F726e017f-59d6-4e97-8c93-8315c4b1e47e_770x332.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ug9D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F726e017f-59d6-4e97-8c93-8315c4b1e47e_770x332.png" width="770" height="332" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/726e017f-59d6-4e97-8c93-8315c4b1e47e_770x332.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:332,&quot;width&quot;:770,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:130092,&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://thecontractsignal.com/i/205300182?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F726e017f-59d6-4e97-8c93-8315c4b1e47e_770x332.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_!ug9D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F726e017f-59d6-4e97-8c93-8315c4b1e47e_770x332.png 424w, https://substackcdn.com/image/fetch/$s_!ug9D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F726e017f-59d6-4e97-8c93-8315c4b1e47e_770x332.png 848w, https://substackcdn.com/image/fetch/$s_!ug9D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F726e017f-59d6-4e97-8c93-8315c4b1e47e_770x332.png 1272w, https://substackcdn.com/image/fetch/$s_!ug9D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F726e017f-59d6-4e97-8c93-8315c4b1e47e_770x332.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><p><strong><span>OCR:</span></strong></p><p><span>(C) Each Party agrees to defend, protect, indemnify and hold harmless each other Party from and against all claims and demands, including any action or proceeding brought thereon, and all costs, losses, expenses and liabilities of any kind relating thereto, including reasonable attorneys fees and cost of suit, arising out of or resulting from any construction activities performed or authorized by such indemnifying Party; provided however, that the foregoing shall not be applicable to either events or circumstances caused by the negligence or willful act or omission of such indemnified Party, its licensees, concessionaires, agents, servants, employees, or anyone claiming by, through, or under any of them, or claims covered by the release set forth in 5.4(D).</span></p><p><span>But a few pages away, the term language picked up OCR errors:</span></p><p><span>ARTICLE VII</span></p><p><span>TERM</span></p><p><strong>Screenshot:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IZUE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b4468c-5b89-4c94-a37e-c933773f9e8a_658x436.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IZUE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b4468c-5b89-4c94-a37e-c933773f9e8a_658x436.png 424w, https://substackcdn.com/image/fetch/$s_!IZUE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b4468c-5b89-4c94-a37e-c933773f9e8a_658x436.png 848w, https://substackcdn.com/image/fetch/$s_!IZUE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b4468c-5b89-4c94-a37e-c933773f9e8a_658x436.png 1272w, https://substackcdn.com/image/fetch/$s_!IZUE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b4468c-5b89-4c94-a37e-c933773f9e8a_658x436.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IZUE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b4468c-5b89-4c94-a37e-c933773f9e8a_658x436.png" width="658" height="436" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d6b4468c-5b89-4c94-a37e-c933773f9e8a_658x436.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:436,&quot;width&quot;:658,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:138654,&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://thecontractsignal.com/i/205300182?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b4468c-5b89-4c94-a37e-c933773f9e8a_658x436.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_!IZUE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b4468c-5b89-4c94-a37e-c933773f9e8a_658x436.png 424w, https://substackcdn.com/image/fetch/$s_!IZUE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b4468c-5b89-4c94-a37e-c933773f9e8a_658x436.png 848w, https://substackcdn.com/image/fetch/$s_!IZUE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b4468c-5b89-4c94-a37e-c933773f9e8a_658x436.png 1272w, https://substackcdn.com/image/fetch/$s_!IZUE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd6b4468c-5b89-4c94-a37e-c933773f9e8a_658x436.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><p></p><p><strong><span>OCR:</span></strong></p><p><span>7.1 Term of this OEA. This OEA shall be effective as of the date first above written and shan continue in full force and effect until 11:59 p.m. on December 31, 2049; provided, however, that the easements referred to in Article II hereof which are specified as being perpetual or as continuing beyond the term of this OEA shall continue in force and effect as provided therein. Upon termination of this OEA, an rights and privileges derived from and all duties and obligations created and imposed by the provisions of this OEA, except as relates to the easements mentioned above, shan terminate and have no further force or effect; provided, however, that the termination of this OEA shan not limit or affect any remedy at law or in equity that a Party may have against any other Party with respect to any liability or obligation arising or to be performed under this OEA prior to the date of such termination.</span></p><p><span>&#8220;Shan continue in full force and effect&#8221; is damaged text, but it is still recognizably term language.</span></p><p><span>So if the task is clause classification &#8212; does this document contain a term provision? &#8212; the OCR may still be good enough for the model to classify it correctly. The model has plenty of semantic context to work with.</span></p><p><span>But contrast that with data points where exactness is crucial: effective dates, expiration dates, signature dates, notice periods, renewal deadlines, monetary amounts and party names.</span></p><p><span>Here is a preamble where the date was handwritten into a blank:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wMSS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d889f19-07a9-461f-a10e-691a20a9baa3_778x458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wMSS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d889f19-07a9-461f-a10e-691a20a9baa3_778x458.png 424w, https://substackcdn.com/image/fetch/$s_!wMSS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d889f19-07a9-461f-a10e-691a20a9baa3_778x458.png 848w, https://substackcdn.com/image/fetch/$s_!wMSS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d889f19-07a9-461f-a10e-691a20a9baa3_778x458.png 1272w, https://substackcdn.com/image/fetch/$s_!wMSS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d889f19-07a9-461f-a10e-691a20a9baa3_778x458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wMSS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d889f19-07a9-461f-a10e-691a20a9baa3_778x458.png" width="778" height="458" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d889f19-07a9-461f-a10e-691a20a9baa3_778x458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:458,&quot;width&quot;:778,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:123887,&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://thecontractsignal.com/i/205300182?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d889f19-07a9-461f-a10e-691a20a9baa3_778x458.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_!wMSS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d889f19-07a9-461f-a10e-691a20a9baa3_778x458.png 424w, https://substackcdn.com/image/fetch/$s_!wMSS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d889f19-07a9-461f-a10e-691a20a9baa3_778x458.png 848w, https://substackcdn.com/image/fetch/$s_!wMSS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d889f19-07a9-461f-a10e-691a20a9baa3_778x458.png 1272w, https://substackcdn.com/image/fetch/$s_!wMSS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d889f19-07a9-461f-a10e-691a20a9baa3_778x458.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><p></p><p><span>The OCR output looked like this:</span></p><p><span>THIS AMENDED AND RESTATED OPERATION AND EASEMENT AGREEMENT (&#8221;OEA&#8221;) is made and entered into as of the a&lt;g day of (j)Q.\uber, 1999, between DAYTON HUDSON CORPORATION, a Minnesota corporation (&#8221;Target&#8221;) and Northway Mall Associates, a New York partnership (&#8221;Developer&#8221;).</span></p><p><span>The handwriting distorted the OCR, and the date came out as junk. A date that cannot be parsed is not usable.</span></p><p><span>Interestingly, running the same page through a different OCR engine produced a completely different &#8212; and correct &#8212; result:</span></p><p><span>THIS AMENDED AND RESTATED OPERATION AND EASEMENT AGREEMENT (&#8221;OEA&#8221;) is made and entered into as of the 28 day of October, 1999, between DAYTON HUDSON CORPORATION, a Minnesota corporation (&#8221;Target&#8221;) and Northway Mall Associates, a New York partnership (&#8221;Developer&#8221;).</span></p><p><span>Same page. Same underlying contract. Two different OCR outputs. One incorrect, one correct.</span></p><p><span>This is not a rare edge case. Post-executed enterprise contract repositories often contain scans, handwritten dates, signatures or notes, and documents of widely varying age and quality. OCR quality varies by engine (the type of OCR software), by file type, by scan quality, by page, and sometimes by individual field.</span></p><p><span>That is a recurring theme regarding why post-executed enterprise contract intelligence is so hard &#8211; the multi-step, document-to-data pipeline. Model selection is just one step.</span></p><p><span>Still, in this second failure mode, the damage is at least reasonably easy to spot: &#8220;Shan&#8221; is not a word and &#8220;a&lt;g day of (j)Q.\uber&#8221; is not a date.</span></p><p><span>A QC layer, parser diagnostics and observability, OCR confidence scores, or even a careful human glance at the extracted text may flag the problem.</span></p><p><span>Which brings us to the failure mode that is the most difficult to catch.</span></p><div><hr></div><h3><span>Failure mode 3: the text is plausible &#8212; and wrong (aka silent failure)</span></h3><p><span>The most dangerous OCR failure is when the output looks clean.</span></p><p><span>No garbage characters. No obvious misspellings. No broken date format.</span></p><p><span>Just a value that happens to be incorrect.</span></p><p><span>A handwritten 7 gets read as a 1. A 3 gets read as an 8. A $100,000 value gets misread as $1,000,000 &#8212; or the other way around.</span></p><p><span>Here is a real example &#8212; a signature block with a handwritten date:</span></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sXnt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cff6eda-839e-4991-a67e-6cf624844067_890x524.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sXnt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cff6eda-839e-4991-a67e-6cf624844067_890x524.png 424w, https://substackcdn.com/image/fetch/$s_!sXnt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cff6eda-839e-4991-a67e-6cf624844067_890x524.png 848w, https://substackcdn.com/image/fetch/$s_!sXnt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cff6eda-839e-4991-a67e-6cf624844067_890x524.png 1272w, https://substackcdn.com/image/fetch/$s_!sXnt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cff6eda-839e-4991-a67e-6cf624844067_890x524.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sXnt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cff6eda-839e-4991-a67e-6cf624844067_890x524.png" width="890" height="524" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3cff6eda-839e-4991-a67e-6cf624844067_890x524.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:524,&quot;width&quot;:890,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:80310,&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://thecontractsignal.com/i/205300182?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cff6eda-839e-4991-a67e-6cf624844067_890x524.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_!sXnt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cff6eda-839e-4991-a67e-6cf624844067_890x524.png 424w, https://substackcdn.com/image/fetch/$s_!sXnt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cff6eda-839e-4991-a67e-6cf624844067_890x524.png 848w, https://substackcdn.com/image/fetch/$s_!sXnt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cff6eda-839e-4991-a67e-6cf624844067_890x524.png 1272w, https://substackcdn.com/image/fetch/$s_!sXnt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cff6eda-839e-4991-a67e-6cf624844067_890x524.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><p></p><p><span>The OCR output appears clean:</span></p><p><span>AGREED AND ACCEPTED:</span></p><p><span>PLITT THEATRES, INC.</span></p><p><span>By: [Signature] Henry Plitt, Chairman of the Board</span></p><p><span>Date: Oct 12 1982</span></p><p><span>But look closely at the image. The day appears to be 13, not 12.</span></p><p><span>The likely reason is that the lower part of the handwritten digit overlapped with the signature line, causing the OCR to read the 3 as a 2.</span></p><p><span>This situation is much more dangerous than junk text.</span></p><p><span>Junk text tells you something went wrong so you can course correct as needed.</span></p><p><span>A date that is plausible but wrong does not throw up any red flags. In this case, &#8220;Oct 12 1982&#8221; is a valid date &#8211; it has the right format and is semantically plausible.</span></p><p><span>In other words, it is a silent failure.</span></p><p><span>And silent failures are the ones that create the most risk in contract AI systems.</span></p><h3><span>Why small OCR errors become business problems</span></h3><p><span>You might look at the example above and say &#8211; it&#8217;s only one day off, that won&#8217;t have much impact.</span></p><p><span>Maybe. But I&#8217;d call out two things:</span></p><p><span>1. Enterprise contracts often have more significant silent OCR failures such as a wrong month or wrong year (note that the example above is from a publicly available contract). This becomes more likely as hundreds of thousands of documents present many opportunities for silent OCR failures.</span></p><p><span>2. The broader point, however, is that a single, seemingly innocuous bad value rarely stays contained to one situation or use case and can have downstream consequences.</span></p><p><span>For example, a renewal date or expiration date may not be written explicitly in the document. It may be computed from other extracted fields: effective date plus initial term, potentially plus a renewal period minus a notice window.</span></p><p><span>If OCR silently corrupts the effective date, the computed expiration date may be wrong.</span></p><p><span>If OCR silently corrupts the term length, the renewal calculation may be wrong.</span></p><p><span>If OCR silently corrupts the notice period, the counterparty outreach or operational deadline may be wrong.</span></p><p><span>If OCR silently corrupts the contract value, the agreement may be routed to the wrong workflow, wrongfully excluded from a report, or treated as below a threshold that should have triggered additional review.</span></p><p><span>And the model may have no way to know, because every input it was handed looked valid on the surface.</span></p><p><span>That is how a small OCR problem becomes a contract intelligence problem.</span></p><p><span>This is also why scale changes the risk profile. In a small set of contracts, these errors may be annoying but manageable. In an enterprise repository with tens or hundreds of thousands of documents, even a low error rate can create meaningful downstream exposure.</span></p><p><span>OCR quality is not just a preprocessing issue. It is a contract data quality issue.</span></p><h3><span>What can be done</span></h3><p><span>There are various approaches to either reducing or mitigating issues that can come up from OCR or file quality issues. This discussion could easily be its own article.</span></p><p><span>At the OCR layer - some common approaches involve checking for existing OCR, re-running OCR software, testing different engines and capturing OCR confidence where available.</span></p><p><span>At the extraction layer - high-impact contracts or fields can be routed into more robust QC workflows.</span></p><p><span>At the QC or validation layer - rules can catch what is catchable: for example values outside plausible ranges.</span></p><p><span>In addition, evolving AI model capabilities may help with some of these as well.</span></p><h3><span>Recap and the open question</span></h3><p><span>To recap, there are three OCR failure modes worth separating:</span></p><p><span>1. </span><strong><span>No text layer at all</span></strong><span> &#8212; the document is readable to a human but may be blank or illegible to a text-based extraction system. This is usually relatively easy to detect by a well-designed system.</span></p><p><span>2. </span><strong><span>Visible OCR damage</span></strong><span> &#8212; the text layer exists, but contains obvious problems like non-words, junk dates, or corrupted phrases. This can also often be detected, and whether it matters depends on the use case.</span></p><p><span>3. </span><strong><span>Silent OCR damage</span></strong><span> &#8212; the text looks plausible, but is wrong. This is the most dangerous because it can flow through the pipeline undetected.</span></p><p><span>The open question is empirical: in a real population of post-executed enterprise contracts, how often does each failure mode occur? And how much does each one affect downstream contract AI accuracy?</span></p><p><span>That is a type of measurement I have not seen yet &#8212; and one that matters if contract AI is going to move from impressive demos to trusted enterprise systems.</span></p><p><span>Because the real issue is not simply whether an AI model is powerful enough.</span></p><p><span>It is whether the system has given the model the right contractual text to read in the first place.</span></p><p><span>If you found this useful, subscribe to The Contract Signal &#8212; and forward it to anyone who might find it helpful.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><div class="poll-embed" data-attrs="{&quot;id&quot;:722721}" data-component-name="PollToDOM"></div><p></p>]]></content:encoded></item><item><title><![CDATA[What Is Post-Signature Enterprise Contract Intelligence?]]></title><description><![CDATA[The three ideas behind it &#8212; post-execution, enterprise scale, and contract intelligence &#8212; and why your already-signed agreements are full of untapped risk and value.]]></description><link>https://thecontractsignal.com/p/what-is-post-executed-enterprise-contract-intelligence</link><guid isPermaLink="false">https://thecontractsignal.com/p/what-is-post-executed-enterprise-contract-intelligence</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Sun, 28 Jun 2026 18:09:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b6182cd7-297a-4718-8c37-a97be61f4236_1600x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>I spent 10 years working on </span><strong><span>post-signature enterprise contracts intelligence.</span></strong><span> This is a loaded concept, so let&#8217;s break it down into three parts:</span></p><ol><li><p><strong><span>Post-signature</span></strong><span> &#8211; these are contracts that have already been signed or executed, otherwise known as post-executed contracts, as compared to pre-execution or pre-signature contracts that have been drafted, negotiated or redlined but not signed by all parties.</span></p></li><li><p><strong><span>Enterprise </span></strong><span>&#8211; at least one party to the contract is a very large business, such as a F500 company.</span></p></li><li><p><strong><span>Contract Intelligence</span></strong><span> &#8211; enabling people to make legal and business decisions by turning contracts into structured data that can be searched, filtered, reported on, and analyzed at scale.</span></p></li></ol><p><span>Let&#8217;s dig into this in greater depth &#8211; including how these concepts influence one another.</span></p><p><span>Prefer to watch? Here's the video version: </span></p><div id="youtube2-3rpK6X4te38" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;3rpK6X4te38&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/3rpK6X4te38?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><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><h2><strong><span>Deeper Dive</span></strong></h2><h3><strong><span>Post-signature</span></strong></h3><p><span>First, we should dig into the implications of what it actually means for a contract to be post-signature</span><strong><span>.</span></strong></p><p><span>Contracts are written agreements containing the terms of an exchange, including legal obligations on both sides.</span><strong><span> </span></strong></p><p><span>Post-signature means the contract is already signed. This means we&#8217;re past the drafting stage, negotiation, and redlining &#8212; the language has been finalized and agreed to. In other words, pending an amendment to the original contract or another legal mechanism, the language is locked, and the rights and obligations in effect.</span></p><div><hr></div><h3><strong><span>Enterprise</span></strong></h3><p><span>Being a large enterprise has many significant implications for contracts as well.</span></p><p><strong><span>Range and volume of contract types</span></strong></p><p><span>One implication is that the volume of contracts is much, much higher for large enterprises than it is for smaller businesses.</span></p><p><span>This happens for a few reasons.</span></p><p><span>First, enterprises are large, diversified companies, often with multiple business units, many customers and vendors, many products and services, and a more complicated supply chain. For example, everything ranging from the need to manufacture things to the need to distribute products and services at scale means that there are many more significant business exchanges and many corresponding opportunities for contracts across a range of contract types. </span></p><p><span>These may include manufacturing agreements, reseller or distribution agreements, licensing agreements, partnership agreements, leases, and other types of customer and vendor contracts.</span></p><p><strong><span>Contract Families</span></strong></p><p><span>Another implication is that because enterprises have been around for a long time, they have business relationships and contracts from many different periods. </span></p><p><span>This includes older contracts with longer lifecycles, often including multiple rounds of contracting between entities. These relationships may include more than just an initial master agreement. They may also include NDAs, amendments, statements of work, order forms, addenda, and other related documents. </span></p><p><span>As a result, large enterprises can have very large families of related contracts.</span></p><p><strong><span>Complexity of individual contracts</span></strong></p><p><span>Relatedly, the complexity of the contracts themselves tends to be very high for enterprises. Large enterprises have all sorts of complicated requirements built into their contracting practices.</span></p><p><span>This is partly due to being subject to different regulations as a result of their broad reach of business activity, often spanning geographies and business lines. Also, because they have been in business for a long time, different laws, rules and conventions may have applied over different periods of time.</span></p><p><span>It&#8217;s also because they are at greater risk of litigation, leading to more robust risk allocation measures. This is driven in part by increased opportunities for something to go wrong, given their higher levels of business activity and transaction volume. It is also driven by the fact that large enterprises often have more money and assets to pursue, making them more attractive litigation targets relative to smaller entities. </span></p><p><span>As a result, they often have to be more aggressive about risk allocation. This can lead to lengthier, more detailed provisions that limit liability exposure in different circumstances.</span></p><p><span>Net of these considerations, the population of contracts at a given enterprise is highly mixed. It is not homogeneous or standardized.</span></p><p><span>Even the same type of contract may have many different variables and complexity drivers baked in.</span></p><p><span>That gets compounded further by other complexity drivers, such as:</span></p><ol><li><p><strong>File quality.</strong> Many of these documents include emails, scans, pages with coffee stains, handwriting in the margins, or image-only PDFs. Each of these can reduce the quality and reliability of OCR (optical character recognition). Bad OCR means the text may not be properly recognized by AI models. So before any AI touches the contract, the file often has to go through a chain of preprocessing steps just to become usable. Example here: <a href="https://www.industrydocuments.ucsf.edu/docs/yfdc0172">link</a></p></li><li><p><strong>Multi-document files.</strong> One file will often contain multiple discrete parts. For example, you may have the core contract, cover pages, exhibits, addenda, additional terms and conditions, and other related documents all in one file. Determining which document or clause takes precedence can be a very challenging exercise as a result. Example here: <a href="https://www.sec.gov/Archives/edgar/data/820609/000119312510160027/dex102.htm">link</a></p></li><li><p><strong>No system of record.</strong> Enterprises are diversified, with many business units, siloed repositories and multiple custodians. As a result, there is often no central place where all contracts live. Companies frequently can&#8217;t even find their contracts, let alone analyze them. And when they do find them, they are often dealing with legacy systems that contain partially executed agreements, duplicates or overlapping documents.</p></li></ol><p><strong><span>Compounding Complexity</span></strong></p><p><span>Each of these factors would create complexity on its own. Enterprises often deal with all of them at once, across hundreds of thousands of documents.</span></p><p><span>So there is a range of complexity drivers, and many of them are closely linked to large enterprises. That&#8217;s why the enterprise dimension is so important and why it has so many implications for contracts.</span></p><p><span>Net of these considerations, you do not have one big, centralized, clean dataset. You have many unstructured, complex, messy, difficult-to-find documents &#8212; subpopulations inside subpopulations, fragmented across many systems.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h3><strong><span>Contract Intelligence</span></strong></h3><p><span>Collectively, this is what creates the need and opportunity for contract intelligence.</span></p><p><span>Even finding contracts in an enterprise can be very challenging, let alone knowing </span><em><span>the substance of</span></em><span> what is in those contracts and what obligations they contain.</span></p><p><span>And this matters because hidden within these already-executed contracts are collectively huge opportunities, both in terms of risk allocation and mitigation, as well as increasing business value.</span></p><p><span>For example, it is not unheard of for a contract to lack a limitation of liability clause, which could introduce significant liability for the business, particularly if it is an older contract without other safeguards in place.</span></p><p><span>Payment terms are often suboptimal, leaving value behind or creating misalignment with the company&#8217;s standards, internal finance systems, and processes.</span></p><p><span>There may also be untapped opportunities to increase prices, or rights and restrictions to assignment, termination or exiting agreements.</span></p><p><span>The goal of contract intelligence is to take all of these contract documents and be able to search, filter, report on, and analyze them at scale.</span></p><p><span>The data points of interest vary based on the use cases and the business or legal problems people are trying to solve. </span></p><p><span>For example, in M&amp;A diligence and integration, you might be interested in assignment, change of control, governing law, and related provisions. </span></p><p><span>For a business-as-usual type of review where a question comes up from the commercial team, you may be interested in a specific clause, such as the indemnification language agreed to in previous similar situations, or how long a contract requires the company to support a product that is being sunset.</span></p><p><span>This is a very small sample of potential use cases. The relevant questions vary depending on the business line, industry, function, department, specific situation, and place within the larger supply chain.</span></p><p><strong><span>Contract Intelligence vs. Contract Summarization</span></strong></p><p><span>For sake of clarity, it is important to understand that the difference between contract intelligence and a contract summary. These are complementary use cases that serve different purposes.</span></p><p><span>Contract intelligence specifically relates to turning the natural language of contracts into a structured data asset at scale, so users can gain visibility into their contract data through search, filters, reports and analytics.</span></p><p><span>In contrast, with a contract summary, you are typically doing a deeper dive into one or more contracts, often at smaller volume, to better understand the underlying nuances.</span></p><p><span>The critical difference is that the output involves qualitative descriptions of text. These are not ideal for running searches, reports and analytics at scale. </span></p><p><span>However, summaries can be very helpful when creating a diligence memo or other report to support a decision across a contract population, such as whether to move forward with an acquisition or how to prioritize regulatory remediation.</span></p><div><hr></div><h2><strong><span>Summary</span></strong></h2><p><span>To summarize, post-signature enterprise contract intelligence involves three main components:</span></p><ol><li><p><strong>Post-signature</strong> &#8211; contracts that have already been signed or executed, otherwise known as post-signature contracts, as compared to pre-execution or pre-signature contracts that have been drafted, negotiated or redlined but not signed by all parties.</p></li><li><p><strong>Enterprise </strong>&#8211; at least one party to the contract is a very large business, such as a Fortune 500 company.</p></li><li><p><strong>Contract Intelligence</strong> &#8211; enabling people to make legal and business decisions by turning contracts into structured data that can be searched, filtered, reported on, and analyzed at scale.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p></li></ol><p><span>If you found this article helpful, subscribe to follow along and forward it to anyone you think might find it useful.</span></p>]]></content:encoded></item><item><title><![CDATA[Everyone in Contract AI Suddenly Has a “Benchmark.” Here’s How to Read One.]]></title><description><![CDATA[Four different things "benchmark" can mean in contracts AI &#8212; and how to tell real evidence from marketing.]]></description><link>https://thecontractsignal.com/p/how-to-read-contract-ai-benchmark</link><guid isPermaLink="false">https://thecontractsignal.com/p/how-to-read-contract-ai-benchmark</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Sun, 21 Jun 2026 22:16:07 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/249aac98-eff0-418c-a930-104fce3bcc30_2400x1256.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><span>A few weeks after I launched this newsletter &#8212; </span><em><span>The Contract Signal</span></em><span> &#8212; TermScout launched a &#8220;Contract Signals Report.&#8221;</span></p><p><span>I&#8217;ll take the overlap as validation. The framing works in part because contracts are becoming more than documents to store, negotiate, and search. Once you parse through the dense language, contracts start to look like signals: of risk, leverage, governance, market dynamics, opportunity, and operational behavior.</span></p><p><span>But the naming overlap is also a small symptom of a larger market pattern.</span></p><p><span>The volume of contract AI news keeps accelerating. Every week brings another product announcement, research release, workflow claim, or market report. And in that stream of news, one word keeps coming up: </span><strong><span>benchmark</span></strong><span>.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p><span>Crosby published a contract-redlining benchmark. Harvey has published benchmarks for contract understanding and legal agents. TermScout, LexisNexis, and others benchmark contract terms against market norms. CLM vendors benchmark cycle time and operational performance.</span></p><p><span>One word &#8212; benchmark &#8212; is taking on multiple meanings.</span></p><p><span>Sometimes &#8220;benchmark&#8221; means a test. Sometimes it means a dataset. Sometimes it means the results from a market survey or a dashboard metric summarizing the same to compare against industry peers.</span></p><p><span>It has quietly become a word that sounds precise but is often focused on marketing.</span></p><p><span>So when (or before) the next benchmark lands in your inbox, the first move is simple: ask what kind of benchmark you are actually looking at.</span></p><p><span>Benchmark of what? Against what? Scored by whom? Using whose data? And for whose benefit?</span></p><div><hr></div><h3><strong><span>What the word actually means</span></strong></h3><p><span>Strip away the jargon and a benchmark is just a reference point. A fixed thing you measure against &#8212; a baseline, a starting line &#8212; so that any other number means something relative to that initial reference point.</span></p><p><span>You set the reference, then you compare: better than the benchmark, worse than the benchmark, by how much.</span></p><p><span>Contracts professionals already had a specific version of this long before AI showed up. In outsourcing and other long-term agreements, a benchmarking clause lets a customer bring in an independent third party to compare a supplier&#8217;s pricing and service levels against the wider market &#8212; and adjust the deal if the supplier has drifted off-market.</span></p><p><span>Note what made that mechanism trustworthy: an independent party, an agreed method, and a defined market to compare against.</span></p><p><span>In the AI era, the word has stretched to cover at least four genuinely different activities. They get announced with the same or similar vocabulary, which is exactly why they are hard to read.</span></p><p><span>The first evaluates models. The second evaluates contract positions (i.e. the values of given clauses or other data points). The third evaluates operational efficiency. The fourth evaluates AI or system improvement over time.</span></p><p><span>Separating these concepts can help provide clarity.</span></p><div><hr></div><h3><strong><span>The four benchmarks hiding under one word</span></strong></h3><p><strong><span>1. Performance benchmarks &#8212; &#8220;How good is the AI?&#8221;</span></strong></p><p><span>This is the one generating the loudest headlines: take a task, have AI models do it, and score them against a human expert or a model answer.</span></p><p><span>One recent example is Crosby&#8217;s Redline Bench, which scored frontier models on realistic SaaS-contract redlining against attorney-authored &#8220;golden&#8221; responses. The reported results put the top model around 50% and the rest clustered below it &#8212; a narrow spread, with humans still better at finding new routes to resolution while models tended to anchor on their opening positions.</span></p><p><span>Conceptually, there is nothing wrong with this. Measuring model performance against domain experts in realistic conditions is a reasonable thing to do. To their credit, the better recent benchmarks in this category disclose a lot: the use cases, the scoring dimensions, the rubric, and in some cases the whole thing is open for other labs to run.</span></p><p><span>That is valuable as it helps practitioners assess actual performance.</span></p><p><span>The trouble starts with how the numbers get used downstream.</span></p><p><span>&#8220;Model X scored 50.5%&#8221; gets repeated far from the methodology that produced it. Without that context, the number is almost impossible to interpret.</span></p><p><span>It may be directionally interesting. It may tell you something about frontier-model behavior in a simulated negotiation. It may help compare models under one defined test design.</span></p><p><span>But it does not automatically tell you which product to buy, which workflow to automate, or whether the same system will work inside your contract population.</span></p><p><span>That distinction matters.</span></p><p><span>A multi-turn negotiation benchmark is not the same thing as a data extraction benchmark. A redlining benchmark is not the same thing as a playbook-compliance benchmark. A test of SaaS agreement negotiation is not the same thing as a test of high-volume vendor onboarding, procurement triage, or post-signature obligation extraction.</span></p><p><span>And in many contract AI workflows, the advanced task depends on the foundational layer being right first.</span></p><p><span>Before a system can negotiate from a contract, it often has to identify the agreement, extract the relevant provisions, understand the parties, map the clause to the right playbook position, and preserve the context across the workflow. If those earlier steps are noisy, the later benchmarked task may inherit the errors. Sometimes the problem is not only model performance. It is error propagation &#8211; the snowballing or compounding of small mistakes at different stages in the process until the end result is a far cry from the original performance findings.</span></p><p><span>That is why the headline score is not enough.</span></p><p><span>Did the model miss obvious issues? Did it identify the right concern but propose a weaker redline? Did it produce something commercially reasonable but different from the attorney-authored answer? Was it penalized for not matching the exact path the human took? Would two senior attorneys have agreed on the same &#8220;perfect&#8221; answer?</span></p><p><span>A performance benchmark can be useful. But the headline score is not the benchmark. The benchmark is a combination of the task, the dataset, the scoring method, and the judgment calls underneath the score.</span></p><div><hr></div><p><strong><span>2. Norm benchmarks &#8212; &#8220;Is my contract typical?&#8221;</span></strong></p><p><span>A completely different activity wears the same label.</span></p><p><span>Here, you assemble a large body of contract data, derive what is standard for a given type of deal, and then compare a new agreement against that norm or standard.</span></p><p><span>LexisNexis&#8217;s Market Standards, </span>TermScout&#8217;s reports, <span>and various &#8220;state of contracts&#8221; reports live in this category. The output is not a model score. It is a reference set.</span></p><p><span>For example: for vendor agreements of this type, in this industry, at this deal size, mutual indemnification is standard; one-way indemnification is aggressive; this limitation of liability formulation is common; that AI-use restriction is becoming more frequent.</span></p><p><span>This is genuinely useful and very doable.</span></p><p><span>Most of it reduces to structured data. A clause like indemnification can be reduced to a small set of positions &#8212; both parties indemnified, one party indemnified, neither party indemnified &#8212; and once you have coded enough contracts and broken down each clause type sufficiently, you can say how common each position is. Control for industry, deal size, template source, whether the agreement is customer paper or vendor paper, and other criteria and you have a real reference point for negotiation and risk.</span></p><p><span>But norm benchmarks have a problem that rarely makes the announcement: representativeness.</span></p><p><span>Much of this analysis is built on public filings, and public contracts are a biased sample by construction. A contract gets filed with the SEC because it crosses a materiality threshold. That means the corpus skews toward large, heavily negotiated agreements that may look very different from the thousands of ordinary commercial contracts a business actually runs on.</span></p><p><span>Even the filed agreements are frequently redacted at the commercially sensitive points you would most want to benchmark.</span></p><p><span>I used SEC contracts myself in last week&#8217;s article on creating a contract data extraction benchmark, and the same caveat applied there: they are a convenient, legitimate starting point. They are not a stand-in for your private contract population.</span></p><p><span>A norm built on a skewed sample is a useful hint, not ground truth.</span></p><div><hr></div><p><strong><span>3. Process benchmarks &#8212; &#8220;How fast is my operation?&#8221;</span></strong></p><p><span>A third meaning has nothing to do directly with model quality or contract terms at all.</span></p><p><span>It is operational: cycle time, turnaround, throughput, percentage of contracts on standard templates, time-to-signature, number of negotiation rounds, fallback frequency, legal touch rate, approval bottlenecks.</span></p><p><span>CLM vendors increasingly sell &#8220;benchmarking&#8221; dashboards that compare your contracting operation against peers.</span></p><p><span>This is often the management-consulting meaning of benchmark, applied to legal ops. It may also be the most actionable version for many teams.</span></p><p><span>If your average NDA takes 12 days and comparable teams complete theirs in three, that is useful information to have. By the same token, if 80% of your low-risk agreements still require legal review while similar companies route most of these through self-service or your contracting cycle time spikes in one region or business unit, or by contract type, that is useful too.</span></p><p><span>But it is worth separating this cleanly from the other meanings.</span></p><p><span>A vendor saying it can &#8220;benchmark your contracts&#8221; might mean it can compare clause language to market norms. It might mean it can compare your contracting process to peer operations. It might mean it can measure model performance. Those are different use cases with different products, solutions, and datasets.</span></p><p><span>Process benchmarks are valuable when the metric maps to a real operational decision.</span></p><p><span>They are less valuable when the metric becomes theater: a dashboard showing you are slower than &#8220;peers&#8221; without explaining who the peers are, what work was included, or whether the comparison reflects your risk profile, company stage, industry, deal size, or contracting model.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p><strong><span>4. Baseline benchmarks &#8212; &#8220;Is my system getting better?&#8221;</span></strong></p><p><span>The fourth meaning is the one practitioners building AI systems use most, and the one that almost never makes the press release.</span></p><p><span>Here, a benchmark is an internal baseline.</span></p><p><span>You fix a starting level of performance &#8212; an out-of-the-box model, a first prompt, a v1 pipeline, an existing review process &#8212; and then measure every later change against it.</span></p><p><span>Did the new prompt help? Did the more expensive model actually earn its cost? Did retrieval improve accuracy or just add latency? Did fine-tuning move the metric or just the vibes? Did the new clause taxonomy improve consistency? Did the latest model version break something that used to work?</span></p><p><span>This is how serious AI and data teams actually work.</span></p><p><span>And it carries two critical ideas the headline benchmarks tend to gloss over but often have a huge impact on assessing the benchmarks and making them actionable.</span></p><ol><li><p><span>The first is generalization. A model trained or tuned on one contract population can fall apart on a new population due to different drafting, file quality, document structures and conventions used.</span></p></li><li><p><span>The second is data drift. A system that scored well last quarter can quietly degrade as the documents flowing through it change.</span></p></li></ol><p><span>A single published score is a photograph: one snapshot in time, taken under a defined set of assumptions.</span></p><p><span>Truly effective benchmarking is more like a video &#8211; multiple points in time, multiple snapshots, multiple angles, and enough continuity to tell whether the system is improving, degrading or staying flat.</span></p><p><span>And the video is what tells you whether something works in production.</span></p><p><span>Four meanings. Four different questions. One word.</span></p><p><span>The moment you hear &#8220;benchmark,&#8221; your first move should be to figure out which one you are actually being sold.</span></p><div><hr></div><h3><strong><span>How to read any benchmark</span></strong></h3><p><span>Sorting the type gets you halfway there. The rest is actually performing the analysis.</span></p><p><span>There are three layers that rarely get discussed and almost always decide whether a number means anything: </span><strong><span>the use cases, the scoring and the incentives.</span></strong></p><p><strong><span>The use cases</span></strong></p><p><span>First, what was actually tested?</span></p><p><span>&#8220;Contract review&#8221; can mean redlining a standard NDA against a clear playbook. It can also mean a no-playbook judgment call on a bespoke, heavily negotiated agreement with limited commercial context.</span></p><p><span>Those are wildly different tasks.</span></p><p><span>Then, the specific scenarios corresponding to the use cases.</span></p><p><span>Before you trust a performance number, you want to know the distribution of difficulty behind it. Was the benchmark mostly easy cases? Edge cases? Common issues? Rare but high-risk provisions? First-pass issue spotting? Full redlining? Negotiation strategy? Escalation judgment?</span></p><p><span>That is the difference between &#8220;the AI is good&#8221; and &#8220;the AI is good at the easy version.&#8221;</span></p><p><strong><span>The scoring</span></strong></p><p><span>How was &#8220;right&#8221; decided?</span></p><p><span>This is where legal benchmarks are genuinely hard, because you are scoring dense, qualitative prose, not simple multiple-choice.</span></p><p><span>Did they grade it as a simple classification problem &#8212; risk flagged correctly or not, one point each over the total possible? Or did they use a rubric that accounts for subjectivity, ambiguity, commercial reasonableness, drafting quality, and the context the model was given?</span></p><p><span>And what does 100% mean?</span></p><p><span>Does it mean the model matched the attorney answer exactly? If so, would two senior attorneys have agreed 100% of the time?</span></p><p><span>Often they would not.</span></p><p><span>Law is full of gray areas. That is why it needs lawyers. A scoring method that pretends the gray areas are black and white will produce a confident number that does not survive contact with reality.</span></p><p><span>In addition, watch for false precision.</span></p><p><span>A score reported to a tenth of a percent &#8212; 50.5, 45.1, 44.4 &#8212; signals rigor. But the decimal is only as meaningful as the rubric underneath it.</span></p><p><span>When the rubric is scoring subjective legal judgment, three-significant-figure precision is often decoration. The confident number is the easiest part to produce and the least informative.</span></p><p><strong><span>The incentives</span></strong></p><p><span>Who ran the benchmark or experiment, and what do they sell?</span></p><p><span>This is the layer that matters most and gets discussed least.</span></p><p><span>Charlie Munger is often quoted as saying: &#8220;Show me the incentive and I will show you the outcome.&#8221;</span></p><p><span>A private sector benchmark is almost never published for philanthropy.</span></p><p><span>A law firm has an interest in a benchmark that shows legal judgment remains hard to automate. A vendor has an interest in a benchmark that makes its workflow look measurable and differentiated. A model lab has an interest in a benchmark that defines progress around the capabilities its model performs well on.</span></p><p><span>None of that means the benchmark is dishonest.</span></p><p><span>It means the benchmark has a point of view.</span></p><p><span>Wherever judgment enters &#8212; which tasks to include, how to score gray areas, what to call 100%, which dataset to use, which comparison group to define &#8212; the benchmark will reflect the author&#8217;s theory of the problem.</span></p><p><span>Even a scrupulously transparent benchmark is shaped by what its author chose to measure in the first place.</span></p><p><span>Transparency lets you check the math. It does not remove the incentive that selected the problem.</span></p><div><hr></div><h3><strong><span>How to spot a benchmark worth trusting</span></strong></h3><p><span>None of this is a reason to dismiss benchmarks.</span></p><p><span>They are one of the better things to happen to a field that ran on vibes and demos for years. But they need to be read like evidence, not like slogans.</span></p><p><span>To summarize, a benchmark you can actually lean on tends to disclose:</span></p><ul><li><p><strong><span>Scope</span></strong><span> &#8212; the tasks tested, how hard they were, and whether the headline average hides meaningful variation.</span></p></li><li><p><strong><span>Method</span></strong><span> &#8212; how &#8220;correct&#8221; was scored, who judged, and what a perfect score would mean.</span></p></li><li><p><strong><span>Data provenance</span></strong><span> &#8212; where the corpus came from and how representative it is of the contracts you care about.</span></p></li><li><p><strong><span>Authorship and incentive</span></strong><span> &#8212; who built it, who funded it, and what they sell.</span></p></li><li><p><strong><span>Reproducibility</span></strong><span> &#8212; whether anyone else can run it and get the same answer.</span></p></li><li><p><strong><span>Business relevance</span></strong><span> &#8212; whether the metric maps to a decision you actually need to make or problem you need to solve.</span></p></li></ul><p><span>Use that as a checklist.</span></p><p><span>A benchmark that discloses its scope, method, and data but is published by a party with an obvious stake in how it is used is not worthless. It just needs to be read with the stake in view.</span></p><p><span>A benchmark with a strong headline but no corpus, no rubric, no task design, no scoring explanation, and no discussion of limitations is not reliable. It is a claim dressed up as a benchmark, often for marketing purposes.</span></p><div><hr></div><h3><strong><span>The through-line</span></strong></h3><p><span>Last week I made the case that contract AI looks magical on one document and gets hard across a population &#8212; that the demo and the workflow are different problems.</span></p><p><span>A benchmark is the same story one level up.</span></p><p><span>The score is the demo. The methodology is the workflow.</span></p><p><span>A number that travels without its context is a promise without the receipts.</span></p><p><span>That is why independent reading of this market matters.</span></p><p><span>Independent does not mean neutral or detached. I have a point of view, shaped by a decade in enterprise contracts, taxonomy design, structured data and extraction workflows, AI, and legaltech product work.</span></p><p><span>It means something narrower and more important: I do not have a platform, model, law firm service, or benchmark to sell inside the analysis.</span></p><p><span>When the company publishing the benchmark also benefits from the way the benchmark is framed, the right response is not cynicism. It is professional skepticism.</span></p><p><span>What was tested? Against what? By whom? On whose data? And who benefits from the answer?</span></p><p><span>More signals soon.</span></p><p><span>If you found this useful, subscribe to follow along, forward it to someone who is about to make a tooling decision off a benchmark headline, and tell me which contract AI terms or claims you want me to unpack next.</span></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item><item><title><![CDATA[What Happens When You Ask AI to Extract Contract Metadata at Scale]]></title><description><![CDATA[A first benchmark on the gap between one-contract demos and contract-population workflows.]]></description><link>https://thecontractsignal.com/p/what-happens-when-you-ask-ai-to-extract</link><guid isPermaLink="false">https://thecontractsignal.com/p/what-happens-when-you-ask-ai-to-extract</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Mon, 15 Jun 2026 02:24:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d55d5138-4580-4ba2-83e1-1e3531c5db52_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you ask a frontier model to pull the document title, party names, and effective date from a single contract, it will do so without issue (in most cases).</p><p>Relative to what was possible 10 years or even five years ago, the experience feels almost magical.</p><p>However, this is a significantly easier problem to solve than organizing an entire contract population, which can span hundreds of thousands of agreements.</p><p>So as a middle ground I ran a first benchmark to test performance against a more challenging problem: 100 real contracts for five basic metadata fields. I used three different models, one fixed prompt and assumed publicly available, text-native PDFs (having clean OCR).</p><p>The results were interesting in part because performance ranged quite a bit not just by model or model version but by the criteria used (e.g. accuracy, session usage or token limits, speed) and the specific situation (e.g. document structure).</p><p>In addition, contract AI workflows are increasingly being built on top of specific models or even specific model versions. This dependency can introduce risk not just in terms of model performance but model access. Last week&#8217;s export-control disruption affecting Anthropic&#8217;s Fable 5 and Mythos 5 models is an extreme example: access can change suddenly for reasons outside of our control.</p><p>So this benchmark is meant to help answer a practical question: <strong>what happens when a capability that works in a demo or other tightly controlled set of conditions has to survive a realistic contract population workflow?</strong></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p></p><div><hr></div><h3>What I tested</h3><p>The scope of the experiment was deliberately narrow: extract five metadata fields from each document and return one CSV row per document with the relevant information.</p><p>The reason for this narrow scope as a starting point is that more substantive analysis (e.g. M&amp;A diligence or renewals management) relies on the contracts being sufficiently organized. Specifically, for each document we need to know:</p><ul><li><p>Is the document a contract or an ancillary document of some kind?</p></li><li><p>How is the document referred to or titled?</p></li><li><p>What type of contract is it?</p></li><li><p>Who are the parties involved?</p></li><li><p>When did the agreement take effect?</p></li><li><p>Is there any other procedural history we should take into account to contextualize the document?</p></li></ul><p>The five fields:</p><ul><li><p><strong>Document title</strong> &#8212; as stated in the heading or preamble</p></li><li><p><strong>Party names</strong> &#8212; full legal names as stated in or around the preamble</p></li><li><p><strong>Effective date</strong> &#8212; stated effective date, falling back to other best date available in the preamble</p></li><li><p><strong>Preamble</strong> &#8212; verbatim introductory opening paragraph usually containing the party names and date</p></li><li><p><strong>Recitals</strong> &#8212; verbatim background or procedural history</p></li></ul><h3>The documents</h3><p>The sample consisted of 100 real contracts sourced from SEC EDGAR filings.</p><p>These are real, executed agreements, not synthetic examples, but they are not perfectly representative for real enterprise contract populations. For example, they skew toward higher-value, material agreements and generally arrive in cleaner condition (from an OCR standpoint) than the contracts sitting in a legacy enterprise repository.</p><p>However, they are useful for a first benchmark because they are real, publicly available agreements with structural similarity to enterprise contracts that are reasonably easy to annotate to create ground truth. As mentioned above, for this first run, I used clean text-layer PDFs only (controlling for the variable of document quality). </p><h3>The models and prompt</h3><p>I tested three models against the same 100 documents using the same exact prompt: Claude&#8217;s Sonnet 4.6 and Opus 4.8, and OpenAI&#8217;s GPT-5.5 (I used Claude Cowork and OpenAI&#8217;s Codex to run these). </p><p>The prompt included approximately one page of context that a knowledgeable contracts professional could plausibly draft in an hour with a clear understanding of the desired output, without requiring significant technical expertise. It was specific enough to define the extraction task and output format but not a version that was optimized through iterations of trial and error.</p><p>In terms of methodology, I&#8217;ve described the test documents, fields, scoring approach, and limitations so that the findings can be contextualized and evaluated.</p><div><hr></div><h3>How I scored the results</h3><p>I scored the outputs using three metrics:</p><ol><li><p><strong>Field return rate</strong>. Did the model return a value for the field at all? I tracked this separately from accuracy because a blank output and a wrong output create different risks. In this run, it was less of a differentiator between models.</p></li><li><p><strong>Accuracy</strong>. For free text fields (document title, party names, preamble, recitals) I assessed substantive match against the manually annotated ground truth. For effective date, I used exact match after date conversion to YYYY-MM-DD.</p></li><li><p><strong>Time and usage</strong>. I tracked wall-clock run time and session usage consumed per model, per run.</p></li></ol><p>Two notes on ground truth: </p><ol><li><p><strong>Objective vs. Subjective. </strong>Contract metadata is often less objective than it looks from the outside. For example, even a seemingly simple field like document title or effective date can have nuances baked in. For document title, sometimes the cover page says one thing and the opening paragraph says another. Sometimes the heading includes &#8220;Executed Version,&#8221; &#8220;Confidential,&#8221; &#8220;Exhibit 10.3&#8221; or party names that are not really part of the title. Sometimes the preamble characterizes the document differently from the header. Effective dates have similar dynamics. Across this sample, effective dates appeared in several forms: stated explicitly in the preamble, defined by reference elsewhere in the document, or contained in the signature block.</p></li><li><p><strong>&#8220;Golden Set&#8221; misnomer</strong>. For contract populations, the term &#8220;golden set&#8221; often oversells the quality and consistency of the available data. The goal is a reasonably standardized reference set (even that can be challenging to build). The benchmark uses documented annotation rules applied as consistently as possible to handle different cases while flagging ambiguity. But where to draw the line between an edge case or sufficiently common example is ultimately a judgment call.</p></li></ol><div><hr></div><h3>Results (Headlines)</h3><p>The headlines from the experiments are:</p><ol><li><p>some models performed better than others but there were errors across all three</p></li><li><p>there are trade-offs between speed, usage and accuracy across models</p></li><li><p>many of the errors were patterned</p></li></ol><p>On the third point, the models struggled on the same kinds of contract complexity:</p><ul><li><p>ambiguous titles,</p></li><li><p>party naming conventions,</p></li><li><p>effective dates defined by reference,</p></li><li><p>and multi-party agreements.</p></li></ul><p>One of the learnings from the exercise is that knowing your contract population becomes key prior to, or in parallel with model selection.</p><p>A better model helps, but a better understanding of the document population may help more given the common types of errors across models.</p><div><hr></div><h3>Speed and usage</h3><p>In addition, the three models diverged sharply on both accuracy as well as speed and session usage.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BYIA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab9cd97-6ded-4b20-8da9-3d99bbd32e44_1006x392.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BYIA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab9cd97-6ded-4b20-8da9-3d99bbd32e44_1006x392.png 424w, https://substackcdn.com/image/fetch/$s_!BYIA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab9cd97-6ded-4b20-8da9-3d99bbd32e44_1006x392.png 848w, https://substackcdn.com/image/fetch/$s_!BYIA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab9cd97-6ded-4b20-8da9-3d99bbd32e44_1006x392.png 1272w, https://substackcdn.com/image/fetch/$s_!BYIA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab9cd97-6ded-4b20-8da9-3d99bbd32e44_1006x392.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BYIA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab9cd97-6ded-4b20-8da9-3d99bbd32e44_1006x392.png" width="1006" height="392" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ab9cd97-6ded-4b20-8da9-3d99bbd32e44_1006x392.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:392,&quot;width&quot;:1006,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:55511,&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://thecontractsignal.com/i/202056707?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab9cd97-6ded-4b20-8da9-3d99bbd32e44_1006x392.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_!BYIA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab9cd97-6ded-4b20-8da9-3d99bbd32e44_1006x392.png 424w, https://substackcdn.com/image/fetch/$s_!BYIA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab9cd97-6ded-4b20-8da9-3d99bbd32e44_1006x392.png 848w, https://substackcdn.com/image/fetch/$s_!BYIA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab9cd97-6ded-4b20-8da9-3d99bbd32e44_1006x392.png 1272w, https://substackcdn.com/image/fetch/$s_!BYIA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ab9cd97-6ded-4b20-8da9-3d99bbd32e44_1006x392.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><p>A few caveats.</p><p>These runs were performed using paid consumer tiers (Anthropic Pro, ChatGPT Plus), not enterprise licenses. I call that out because many enterprise use cases would likely require more stringent controls for data security, confidentiality, admin oversight, and related needs (e.g. via enterprise licenses for these products). Usage limits and economics would likely differ (perhaps materially) in those environments.</p><p>The GPT-5.5 usage figure also deserves a specific note. Current GPT-5.5 pricing appears unusually favorable and may be subsidized as part of a competitive user-acquisition strategy. This may be directionally accurate, but it should not be treated as a durable long-term cost benchmark and API usage at scale may tell a different story.</p><p>All that said, a single Claude Opus 4.8 run on 100 documents consumed roughly 71% of a paid consumer-tier session. That is manageable for one experiment but is less likely to be a scalable approach to routine extraction work.</p><p>At 1,000 documents, consumer-tier session limits would likely become a workflow design constraint before the task is complete.</p><div><hr></div><p><strong>Accuracy by field</strong></p><p>Claude Opus 4.8 performed best in terms of accuracy both overall and for each specific field. GPT-5.5 and Claude Sonnet 4.6 performed similarly overall but varied significantly in terms of field-level performance.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gZvI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f7f2d6f-35fd-4f15-8075-95cf9004dc06_1006x516.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gZvI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f7f2d6f-35fd-4f15-8075-95cf9004dc06_1006x516.png 424w, https://substackcdn.com/image/fetch/$s_!gZvI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f7f2d6f-35fd-4f15-8075-95cf9004dc06_1006x516.png 848w, https://substackcdn.com/image/fetch/$s_!gZvI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f7f2d6f-35fd-4f15-8075-95cf9004dc06_1006x516.png 1272w, https://substackcdn.com/image/fetch/$s_!gZvI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f7f2d6f-35fd-4f15-8075-95cf9004dc06_1006x516.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gZvI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f7f2d6f-35fd-4f15-8075-95cf9004dc06_1006x516.png" width="1006" height="516" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f7f2d6f-35fd-4f15-8075-95cf9004dc06_1006x516.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:516,&quot;width&quot;:1006,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:53894,&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://thecontractsignal.com/i/202056707?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f7f2d6f-35fd-4f15-8075-95cf9004dc06_1006x516.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_!gZvI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f7f2d6f-35fd-4f15-8075-95cf9004dc06_1006x516.png 424w, https://substackcdn.com/image/fetch/$s_!gZvI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f7f2d6f-35fd-4f15-8075-95cf9004dc06_1006x516.png 848w, https://substackcdn.com/image/fetch/$s_!gZvI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f7f2d6f-35fd-4f15-8075-95cf9004dc06_1006x516.png 1272w, https://substackcdn.com/image/fetch/$s_!gZvI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f7f2d6f-35fd-4f15-8075-95cf9004dc06_1006x516.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><p>n = 100 documents. Effective date scored on normalized exact match; free-text fields scored on substantive match.</p><p>The models did show different levels of accuracy. The broader question is around impact: how much did the corresponding errors matter for the workflow?</p><p>For example, if one model is five percentage points more accurate but consumes three times the session capacity, that trade-off will be worth it in some cases but not in others. Whether it does will depend on the use case..</p><p>As another example, for party names: more lenient criteria (including partial matches &#8211; such as where the model found one but not all of the parties) yielded the following results, with substantial improvements for both GPT-5.5 and Sonnet 4.6:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hslY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb059b75-3cc2-4333-b749-3f9578c1f5a9_944x196.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hslY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb059b75-3cc2-4333-b749-3f9578c1f5a9_944x196.png 424w, https://substackcdn.com/image/fetch/$s_!hslY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb059b75-3cc2-4333-b749-3f9578c1f5a9_944x196.png 848w, https://substackcdn.com/image/fetch/$s_!hslY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb059b75-3cc2-4333-b749-3f9578c1f5a9_944x196.png 1272w, https://substackcdn.com/image/fetch/$s_!hslY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb059b75-3cc2-4333-b749-3f9578c1f5a9_944x196.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hslY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb059b75-3cc2-4333-b749-3f9578c1f5a9_944x196.png" width="944" height="196" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb059b75-3cc2-4333-b749-3f9578c1f5a9_944x196.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:196,&quot;width&quot;:944,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21210,&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://thecontractsignal.com/i/202056707?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb059b75-3cc2-4333-b749-3f9578c1f5a9_944x196.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_!hslY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb059b75-3cc2-4333-b749-3f9578c1f5a9_944x196.png 424w, https://substackcdn.com/image/fetch/$s_!hslY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb059b75-3cc2-4333-b749-3f9578c1f5a9_944x196.png 848w, https://substackcdn.com/image/fetch/$s_!hslY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb059b75-3cc2-4333-b749-3f9578c1f5a9_944x196.png 1272w, https://substackcdn.com/image/fetch/$s_!hslY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb059b75-3cc2-4333-b749-3f9578c1f5a9_944x196.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div><hr></div><p><strong>What the models did well</strong></p><p>On clean text-layer PDFs with standard preamble structure, all three models were generally consistent. They identified well-structured document titles, party names, and expressly stated effective dates reasonably well.</p><div><hr></div><p><strong>Where the models struggled</strong></p><p>There were some common areas where performance dipped across models. </p><p>Here are some examples:</p><p><strong>1. Document title ambiguity and noise</strong></p><p>Clean document titles (commonly found in the document header) were captured without issue.</p><p>However, others had various issues, including exhibit numbers, file stamps or party names. </p><p>In some cases, the heading and preamble had referred to the document in different ways. For example: &#8220;FOURTH AMENDMENT TO COMMON SECURITY AND ACCOUNT AGREEMENT&#8221; (doc header) vs. &#8220;Fourth Amendment&#8221; (preamble).</p><p>This led to inconsistencies in terms of the document title selected.</p><p><strong>2. Party names - missing entities, exactness</strong></p><p>Party name mistakes included missing relevant entity names (particularly in multi-party agreements) and returning party names that were substantively correct but not exact (including extraneous text in addition to a relevant party name or omitting legal suffixes or punctuation).</p><p>Even small variations matter when used for legal and business decisions, which often require exactness (for example: searching for agreements or using the data as inputs into legal analysis or operational processes).</p><p><strong>3. Effective-date variation</strong></p><p>The main reason that effective dates can trip up AI models seems to be that contracts state effective dates in various ways.</p><p>For example, some are explicit: &#8220;This Agreement is effective as of January 1, 2024.&#8221;</p><p>Others are indirect: &#8220;This Agreement is entered into as of the date first written above.&#8221;</p><p>When models only looked in the preamble for effective dates, they sometimes missed dates defined elsewhere. When models searched more broadly, they sometimes surfaced the wrong date: a prior agreement date, notice date, recital date, or signature date (and also consumed more tokens).</p><div><hr></div><p><strong>The silent failure problem</strong></p><p>One of the most important findings was that there were wrong answers that looked correct at first glance.</p><p>At 100 documents, a human QC pass can catch many of these issues.</p><p>At 1,000 documents, manual QC starts becoming overly time-consuming and sampling needs to be built into the workflow.</p><p>At 10,000 documents, even a small systematic error becomes a significant data-quality problem. </p><p>At 100,000 documents, a 2% human QC rate means 2,000 human interventions.</p><div><hr></div><p><strong>What this means</strong></p><p><strong>The first lesson:</strong> model choice mattered, but document structure mattered more.</p><p>Across all three models, the lowest-accuracy documents were the tricky cases. Examples included documents where preambles were missing, effective dates were not clearly defined, more than two parties were mentioned, or the document heading included one title while the preamble included another.</p><p>That means knowing your contract population is key prior to model selection. If your population has a high concentration of those structures, prompt design, field definitions, and QC process may be more impactful than simply switching models.</p><p><strong>The second lesson:</strong> there are trade-offs between accuracy, speed and usage.</p><p>Claude Opus 4.8 performed best on accuracy alone, but it was also the slowest and consumed the most session capacity. Claude Sonnet 4.6 was materially faster and used less session capacity. GPT-5.5 was fastest and cheapest by session usage, but with pricing and durability caveats.</p><p>That creates a practical trade-off. For example, if Claude Opus 4.8&#8217;s overall accuracy advantage is 22 percentage points, the decision is whether those extra correct answers are worth the added time and usage for the specific use case.</p><p><strong>The third lesson:</strong> consumer-tier tools can perform the workflow at lower volumes, but they struggle at scale.</p><p>At 100 documents, they are usable. At 1,000, session limits and manual handling become serious constraints.</p><p><strong>The fourth lesson:</strong> model failures require QC (especially silent ones).</p><p>If the output will be used for decisions with significant consequences, such as diligence or creating a centralized system of record across business lines, some QC process has to be designed into the workflow.</p><div><hr></div><p><strong>Takeaways</strong></p><p>Prelim note: these thresholds are directional based on this first run.</p><p><strong>10 documents or fewer</strong></p><p>Use the chat interface as at this volume, setup overhead matters more than workflow optimization. Prompt with the contracts and instructions, copy the output into a spreadsheet, and manually check the results.</p><p>Model choice is probably less important than clear instructions and human review.</p><p><strong>Around 100 documents</strong></p><p>The chat interface still works, but it starts to become unwieldy.</p><p>You need a repeatable prompt, a consistent output schema, a place to store the results, and a QC pass before using the output downstream. Watch especially for ambiguous titles, effective dates, and multi-party agreements.</p><p><strong>100 to 1,000+ documents</strong></p><p>The workflow around the model starts to matter as much as the model itself: consistent prompting, QC sampling, tracking and logging errors, etc. In addition, scale starts to become a consideration.</p><p><strong>10,000+ documents</strong></p><p>The overall workflow and operating model starts to become more important than model selection.</p><div><hr></div><p><em>The Contract Signal is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[The contracts AI announcements keep coming. They’re not solving the same problem.]]></title><description><![CDATA[The market is converging on contracts AI. But 'contract intelligence,' 'agentic workflows,' and 'practice-area plugins' aren't the same thing &#8212; or where most of the time goes.]]></description><link>https://thecontractsignal.com/p/the-contracts-ai-announcements-keep</link><guid isPermaLink="false">https://thecontractsignal.com/p/the-contracts-ai-announcements-keep</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Sun, 07 Jun 2026 23:06:03 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/08921a2f-2f3c-494d-b6b4-f70e941b8442_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the last few months, Harvey announced Contract Intelligence. Anthropic launched Claude for Legal with practice-area plugins. DocuSign unveiled agentic contract workflows.</p><p>Last year brought more of the same: LexisNexis announced Prot&#233;g&#233;&#8482; General AI, Thomson Reuters announced agentic capabilities in CoCounsel Legal, OpenAI published a detailed account of building an internal contract data agent.</p><p>That&#8217;s not a coincidence. </p><p>The market is converging around the contracts space using ever-improving AI capabilities &#8212; from creating &#8220;contract intelligence&#8221; to building end-to-end &#8220;workflows.&#8221;</p><p>But there&#8217;s a lot missing in the conversation around these announcements. So let&#8217;s unpack what it means and why it matters.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p><strong>To start &#8212; contract intelligence</strong></p><p>I&#8217;ve spent about a decade working on this problem. </p><p>I started in 2015, inside a small contracts business at Axiom that eventually became Knowable, a LexisNexis company. Back then, the deliverable was a spreadsheet containing structured data. The deliverable was created using a combination of people, process and technology: project managers, subject matter experts and analysts running a specially designed review process on large volumes of enterprise contracts using specially configured eDiscovery software.</p><p>There was no software to buy that did this reliably. Early contract AI vendors were able to sell and market the tools but struggled to deliver results. The concept of turning large volumes of contractual text into structured data and analytics to solve legal and business problems predated the term &#8220;contract intelligence&#8221;.</p><p>That is why the current wave is so interesting. The concept is old but the technology is new and continues to evolve.</p><div><hr></div><p><strong>Same space, different layers</strong></p><p>These announcements are solving for different things in different ways, but they&#8217;re all filed under similar labels.</p><p>Harvey&#8217;s Contract Intelligence appears to be a portfolio-level playbook management system &#8212; surfacing negotiation patterns, fallback positions, and clause language from executed agreements to make future review faster. The goal is that every signed contract feeds back into and updates the playbook automatically. This looks like a workflow-compounding capability aimed at in-house teams doing high-volume, BAU contract reviews.</p><p>Claude for Legal is positioned as the intelligence that connects to other tools and enterprise systems, not a standalone contracts product. It includes practice-area plugins, first-pass review and redlining, and MCP integrations to help do so.</p><p>OpenAI&#8217;s contract data agent was <a href="https://openai.com/index/openai-contract-data-agent/">announced as an internal tool for their own finance team</a>: ingesting PDFs and scans, extracting structured data, and serving it up for human-in-the-loop review. The purpose of the tool is to meet the scale of a growing business with limited headcount.</p><p>DocuSign&#8217;s agents operate inside its Intelligent Agreement Management platform: checking agreements against company standards, flagging risks, tracking obligations, and allowing teams to build custom agents for deal and renewal workflows through Agent Studio. The use cases overlap with what others cover, but the emphasis is on a platform-ecosystem anchored in their e-signature capabilities.</p><p>While the use cases sound similar on the surface, these providers are addressing different workflows that most announcements don&#8217;t unpack. </p><p>And if you&#8217;re a contracts professional, in-house counsel, legal ops leader, or someone running a deal process, it&#8217;s helpful to break down the announcements:</p><ul><li><p>Which part of my actual problem does each one address?</p></li><li><p>How well does it address each part of the problem?</p></li><li><p>What parts of the problem are left unsolved?</p></li><li><p>What trade-offs come with choosing one approach over another?</p></li></ul><div><hr></div><h3>The Root Causes of Complexity</h3><p>Those questions are hard to answer from the announcements alone because the announcements are built as much to impress as to inform. </p><p>The announcements rarely explain the assumptions, i.e. what must already be true for the product to work well, not just demo well. These assumptions include: the scope has been defined properly and the relevant contracts have been collected, organized, and analyzed in a way that the output can be trusted and used in the company&#8217;s legal and business processes.</p><div><hr></div><h3>Why I&#8217;m writing this</h3><p>The goal of <em>The Contract Signal</em> is to give people who work with contracts an independent read on what the capabilities can and can&#8217;t do and how to use them to solve real problems. I come at this from a decade of working across ML and LLM product development, contract analysis, solution sales enablement, and end-user research, with cross-functional visibility into how enterprise contracts work actually gets sold and delivered.</p><p>I am not promoting any particular vendor or employer.</p><p>If you work with contracts, buy or evaluate AI tools for legal workflows, or build in this space, subscribe to follow along.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.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://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[The Announced M&A Deal is the Worst Lead You'll Get All Year]]></title><description><![CDATA[Why M&A announcements are a misleading signal for anyone trying to originate contract work &#8212; and what actually predicts demand.]]></description><link>https://thecontractsignal.com/p/the-announced-deal-is-the-worst-lead</link><guid isPermaLink="false">https://thecontractsignal.com/p/the-announced-deal-is-the-worst-lead</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Sun, 31 May 2026 21:53:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b5b75e90-97a4-4b8b-9c4f-c1cc0a084b3a_1456x1048.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>My first assignment out of law school was monitoring M&amp;A deals.</p><p>I used a web tool that aggregated deal announcements and made them easily searchable: mergers, acquisitions, and similar types of corporate transactions. It allowed searching and filtering by various criteria, including the deal size, type, advisors, etc. </p><p>I scoured for large deals as part of a seemingly straightforward business strategy: a big deal gets announced, big deals mean lots of contracts to review, lots of contracts mean someone needs help reviewing them, so we call them and win the work.</p><p>On paper, it sounds like a reasonable approach. However, it has two main limitations.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h3>Limitation one: by the time it&#8217;s news, the opportunity is gone</h3><p>The first limitation is that by the time a deal has been announced, the advisors have already been selected and the diligence scope has been set (if not completed).</p><p>Related, the contract review approach has either been decided weeks or months before the press release went out or is an add-on to the more complex advisory workstream. Typically some combination of an internal team, outside counsel, and preferred vendors will be used.</p><p>So the deal announcements that show up in your alert feed or reports are disproportionately the ones you can no longer help on this deal. The key decisions were already made, during a highly confidential planning period.</p><p>As a result, reactive monitoring is a lagging indicator. It isn&#8217;t an effective origination strategy or lead source. The real opportunities come from being known <em>before</em> the deal exists: proactive relationships, so the company comes to you when the deal is still a secret. However, you can complement these proactive relationships with news monitoring, using announcements to check in on those relationships or perhaps build new ones.</p><div><hr></div><h3>Limitation two: volume doesn&#8217;t mean need</h3><p>The second failure is subtler: it turns out that the premise that larger deal size means more contract work isn&#8217;t reliable. </p><p>Deal structure determines whether contract review is important and different deals are structured in different ways. A few examples that look similar but are fundamentally different in terms of contract work:</p><ul><li><p><strong>The acquihire.</strong> A handful of critical people command a large deal price: you can get to several hundred million, even half a billion, on a few names in the current AI talent market. The contract review necessary for these types of deal is minimal, often limited to things like employment agreements or restrictive covenants associated with those key employees.</p><p><strong>The asset purchase.</strong> One entity buys a discrete set of assets, for example a fleet of trucks. There is often a small amount of contract diligence that is helpful on the buy side, mostly to validate things like ownership. However, because the assets are owned outright there is often limited counterparty outreach necessary. However, the <em>seller</em> may need to do more expansive review to transition or exit any related agreements (for example maintenance, support or vendor agreements to keep operating the assets). </p></li><li><p><strong>Business-as-usual flying under the radar.</strong> The company enters into fifty thousand new agreements a year in the ordinary course of business. That&#8217;s a completely separate pool of potential contract work from anything M&amp;A-related, and it never shows up in a deal feed because the vast majority of contracts are too small to require announcing publicly.</p></li></ul><p>These scenarios illustrate that high deal volume is weakly correlated with contract-review demand, and in some cases the flashy transactions that dominate the news are often the least relevant for contract review work.</p><h3>What actually predicts demand</h3><p>The initial screen can still be helpful as a starting point. Big, diversified companies are likely serial transactors; their historical deal cadence tells you something. Working in an industry with more physical goods is a valid consideration as well: a business with a wider supply-chain footprint tends to have more contracts than a lighter software business (though very large software companies are exceptions to the rule). Company size, deal history, deal size, industry provide a decent starting point that&#8217;s reasonably simple to build.</p><p>To make this more valuable requires going one click down, however.</p><p>To do so requires layering in the things the deal aggregation tool can&#8217;t see: your relationship history, your sales pipeline and track record by type of deal and lead source, and nuances learned from industry experience such as the buy-side/sell-side asymmetry mentioned above. Feed that into a model and you&#8217;re asking 2 questions:</p><ol><li><p>Who&#8217;s likely to transact in a way that actually generates contract work?</p></li><li><p>Where are we well-positioned<strong> </strong>to win it?</p></li></ol><p>These two questions are more thoughtful and reliable than simply looking for the biggest deals.</p><h3>Conclusion</h3><p>As mentioned above, to generate the best insights requires internal context: your relationships, data, business history, experience and know-how. A third party tool can help you generate a first pass but it can&#8217;t replicate the part that makes the prediction more reliable, which is the proprietary context. </p><p>Proceed accordingly and be wary of anyone selling you something to the contrary.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://thecontractsignal.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://thecontractsignal.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p><em>If you&#8217;re working on origination or capacity planning around contract work and any of this maps to (or contradicts) what you&#8217;re seeing, I&#8217;d love to discuss.</em></p>]]></content:encoded></item><item><title><![CDATA[I Couldn’t Find the App I Needed, So I Built It. Here’s What I Learned.]]></title><description><![CDATA[I spent weeks asking ChatGPT, Google, and every tool I could find the same question: if I move to this neighborhood, how close is the nearest park I&#8217;d actually use?]]></description><link>https://thecontractsignal.com/p/i-couldnt-find-the-app-i-needed-so</link><guid isPermaLink="false">https://thecontractsignal.com/p/i-couldnt-find-the-app-i-needed-so</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Sun, 01 Mar 2026 20:01:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HWql!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13a712e9-b781-402d-b51b-fb72c7fa761b_2510x1484.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I spent weeks asking ChatGPT, Google, and every tool I could find the same question: if I move to this neighborhood, how close is the nearest park I&#8217;d actually use?</p><p>No one could answer it well.</p><p>Google Maps can route you between two points. LLMs can tell you that Seattle &#8220;has great parks.&#8221; Walk Score can give you a general walkability number. But none of them answered my actual question: for a given block within a given neighborhood, what&#8217;s the walking distance to a meaningful green space?</p><p>So I built it myself.</p><p>This is the story of how a personal frustration during my move from New York to Seattle became my first public app&#8212;built with Claude as a coding partner, shipped as an MVP over a handful of nights and weekends, and designed to answer one specific question that no existing tool answered well.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HWql!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13a712e9-b781-402d-b51b-fb72c7fa761b_2510x1484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HWql!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13a712e9-b781-402d-b51b-fb72c7fa761b_2510x1484.png 424w, https://substackcdn.com/image/fetch/$s_!HWql!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13a712e9-b781-402d-b51b-fb72c7fa761b_2510x1484.png 848w, https://substackcdn.com/image/fetch/$s_!HWql!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13a712e9-b781-402d-b51b-fb72c7fa761b_2510x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!HWql!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13a712e9-b781-402d-b51b-fb72c7fa761b_2510x1484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HWql!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13a712e9-b781-402d-b51b-fb72c7fa761b_2510x1484.png" width="1456" height="861" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/13a712e9-b781-402d-b51b-fb72c7fa761b_2510x1484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:861,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A map of the united states\n\nAI-generated content may be incorrect.&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="A map of the united states

AI-generated content may be incorrect." title="A map of the united states

AI-generated content may be incorrect." srcset="https://substackcdn.com/image/fetch/$s_!HWql!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13a712e9-b781-402d-b51b-fb72c7fa761b_2510x1484.png 424w, https://substackcdn.com/image/fetch/$s_!HWql!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13a712e9-b781-402d-b51b-fb72c7fa761b_2510x1484.png 848w, https://substackcdn.com/image/fetch/$s_!HWql!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13a712e9-b781-402d-b51b-fb72c7fa761b_2510x1484.png 1272w, https://substackcdn.com/image/fetch/$s_!HWql!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F13a712e9-b781-402d-b51b-fb72c7fa761b_2510x1484.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><div><hr></div><h4><strong>Why This Existed as a Problem</strong></h4><p>In my previous articles, I wrote about the framework I used to pick a city and how I used LLMs during the planning process. One of my core criteria was convenient walking access to nature&#8212;not &#8220;nature exists somewhere in the metro area,&#8221; but &#8220;I can walk to a real park in under 15 minutes from my front door.&#8221;</p><p>This mattered to me because of lived experience, not aspiration. Living in New York, I&#8217;d discovered that regular morning walks&#8212;first through Carl Schurz Park, then Central Park&#8212;were one of the highlights of my daily life. I felt measurably better on days I walked. Over time, I realized that a city with great restaurants and nightlife but mediocre park access would be a worse fit for my actual life than a city with fewer amenities but a large park within walking distance.</p><p>The problem was that once I had this criterion, I couldn&#8217;t evaluate it efficiently.</p><p>I did rounds of Google searches. I asked LLMs. I checked existing nature and hiking apps. Nothing quite fit. There are plenty of apps for finding trails or planning hikes&#8212;but I wasn&#8217;t looking for a weekend adventure. I wanted to know: if I live on this block, can I walk to a good park easily? And how does that compare to the next block over, or the next neighborhood?</p><p>That question turns out to be surprisingly hard to answer without building something.</p><div><hr></div><h4><strong>When Finding Is Harder Than Building</strong></h4><p>This experience led me to a realization I hadn&#8217;t expected: for a sufficiently specific personal need, the search costs of finding the right tool can actually exceed the development costs of building one yourself.</p><p>Historically, that wouldn&#8217;t have been true. Building a map-based web app required professional software engineering skills and weeks or months of development time. The rational move was always to search harder, compromise on fit, or just do the research manually.</p><p>But something has shifted. Between vibe coding with LLM tools like Claude, publicly available geographic data, and open-source mapping libraries, the cost of building a simple, personalized tool has dropped dramatically. Meanwhile, the cost of searching&#8212;scrolling through apps that almost-but-don&#8217;t-quite solve your problem, configuring tools not designed for your use case, cobbling together manual research across multiple sources&#8212;hasn&#8217;t changed much.</p><p>For me, the math flipped. I&#8217;d already spent hours on manual research and still didn&#8217;t have what I wanted. Building the thing I actually needed took less additional time than continuing to search for it would have.</p><p>This has broader implications for anyone building with AI tools. As development costs decrease, the value of complementary capabilities increases&#8212;things like judgment about what to build, taste in how it should work and look, and access to the right data. The bottleneck isn&#8217;t &#8220;can I code this?&#8221; anymore. It&#8217;s &#8220;do I understand the problem well enough to build the right thing?&#8221;</p><div><hr></div><h4><strong>What I Built</strong></h4><p>The concept was deliberately simple: a color-coded map of Seattle showing walking distance to parks, broken down by neighborhood and then by census block.</p><p>That&#8217;s it. One question, answered visually, at a glance.</p><p><strong>Why a map and not a report?</strong> I actually tried the text-based approach first. I ran LLM queries and compiled natural language descriptions of each neighborhood&#8217;s park access. It wasn&#8217;t very useful. Geographic and spatial relationships are fundamentally hard to convey in text. &#8220;Wallingford is 0.8 miles from Woodland Park&#8221; is less informative than seeing Wallingford on a map, colored green, with a park icon nearby. The visual format communicates distance, relative position, and comparison across neighborhoods simultaneously&#8212;something that would take paragraphs to express in words and still wouldn&#8217;t land as intuitively.</p><p>This connects to a broader principle I&#8217;ve been thinking about: the right interface depends on the type of information. Natural language works well for conceptual questions and subjective reasoning. But for spatial data, structured comparisons, or anything where relationships between data points matter as much as the data points themselves&#8212;a visual interface is almost always better.</p><p><strong>The flow works like this:</strong></p><p>Start with the city overview. Every neighborhood is color-coded from green (excellent park access) to red (poor access), scored 0&#8211;100. You can see at a glance which areas of Seattle have the best walking access to nature. Hover over a neighborhood and you see its score.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2hWq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585740e0-9aa0-488f-bbd4-d82bc95c2504_2036x1206.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2hWq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585740e0-9aa0-488f-bbd4-d82bc95c2504_2036x1206.png 424w, https://substackcdn.com/image/fetch/$s_!2hWq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585740e0-9aa0-488f-bbd4-d82bc95c2504_2036x1206.png 848w, https://substackcdn.com/image/fetch/$s_!2hWq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585740e0-9aa0-488f-bbd4-d82bc95c2504_2036x1206.png 1272w, https://substackcdn.com/image/fetch/$s_!2hWq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585740e0-9aa0-488f-bbd4-d82bc95c2504_2036x1206.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2hWq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585740e0-9aa0-488f-bbd4-d82bc95c2504_2036x1206.png" width="1456" height="862" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/585740e0-9aa0-488f-bbd4-d82bc95c2504_2036x1206.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:862,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A map of different colored areas\n\nAI-generated content may be incorrect.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A map of different colored areas

AI-generated content may be incorrect." title="A map of different colored areas

AI-generated content may be incorrect." srcset="https://substackcdn.com/image/fetch/$s_!2hWq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585740e0-9aa0-488f-bbd4-d82bc95c2504_2036x1206.png 424w, https://substackcdn.com/image/fetch/$s_!2hWq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585740e0-9aa0-488f-bbd4-d82bc95c2504_2036x1206.png 848w, https://substackcdn.com/image/fetch/$s_!2hWq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585740e0-9aa0-488f-bbd4-d82bc95c2504_2036x1206.png 1272w, https://substackcdn.com/image/fetch/$s_!2hWq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F585740e0-9aa0-488f-bbd4-d82bc95c2504_2036x1206.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><p>Click into a neighborhood. Now you see the individual census blocks within it, each with its own color and score. This matters because neighborhood averages can be misleading&#8212;a neighborhood might score 65 overall, but the blocks closest to a park could be 85+ while blocks on the far edge might be 35.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xzRA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e00322a-7542-42c1-8a1c-57814100de58_2704x1404.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xzRA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e00322a-7542-42c1-8a1c-57814100de58_2704x1404.png 424w, https://substackcdn.com/image/fetch/$s_!xzRA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e00322a-7542-42c1-8a1c-57814100de58_2704x1404.png 848w, https://substackcdn.com/image/fetch/$s_!xzRA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e00322a-7542-42c1-8a1c-57814100de58_2704x1404.png 1272w, https://substackcdn.com/image/fetch/$s_!xzRA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e00322a-7542-42c1-8a1c-57814100de58_2704x1404.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xzRA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e00322a-7542-42c1-8a1c-57814100de58_2704x1404.png" width="1456" height="756" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0e00322a-7542-42c1-8a1c-57814100de58_2704x1404.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:756,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A map of a city\n\nAI-generated content may be incorrect.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A map of a city

AI-generated content may be incorrect." title="A map of a city

AI-generated content may be incorrect." srcset="https://substackcdn.com/image/fetch/$s_!xzRA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e00322a-7542-42c1-8a1c-57814100de58_2704x1404.png 424w, https://substackcdn.com/image/fetch/$s_!xzRA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e00322a-7542-42c1-8a1c-57814100de58_2704x1404.png 848w, https://substackcdn.com/image/fetch/$s_!xzRA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e00322a-7542-42c1-8a1c-57814100de58_2704x1404.png 1272w, https://substackcdn.com/image/fetch/$s_!xzRA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e00322a-7542-42c1-8a1c-57814100de58_2704x1404.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><p>Click a specific block. You see the address, the nature access score, the nearest park name, the distance, the block area, and a link to view it on Google Maps.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WjFi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e071aac-e948-415d-b816-ef0004727c2d_2682x1452.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WjFi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e071aac-e948-415d-b816-ef0004727c2d_2682x1452.png 424w, https://substackcdn.com/image/fetch/$s_!WjFi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e071aac-e948-415d-b816-ef0004727c2d_2682x1452.png 848w, https://substackcdn.com/image/fetch/$s_!WjFi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e071aac-e948-415d-b816-ef0004727c2d_2682x1452.png 1272w, https://substackcdn.com/image/fetch/$s_!WjFi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e071aac-e948-415d-b816-ef0004727c2d_2682x1452.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WjFi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e071aac-e948-415d-b816-ef0004727c2d_2682x1452.png" width="1456" height="788" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e071aac-e948-415d-b816-ef0004727c2d_2682x1452.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:788,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A screenshot of a map\n\nAI-generated content may be incorrect.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A screenshot of a map

AI-generated content may be incorrect." title="A screenshot of a map

AI-generated content may be incorrect." srcset="https://substackcdn.com/image/fetch/$s_!WjFi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e071aac-e948-415d-b816-ef0004727c2d_2682x1452.png 424w, https://substackcdn.com/image/fetch/$s_!WjFi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e071aac-e948-415d-b816-ef0004727c2d_2682x1452.png 848w, https://substackcdn.com/image/fetch/$s_!WjFi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e071aac-e948-415d-b816-ef0004727c2d_2682x1452.png 1272w, https://substackcdn.com/image/fetch/$s_!WjFi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e071aac-e948-415d-b816-ef0004727c2d_2682x1452.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 aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><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><p>The whole thing follows a principle called progressive disclosure: show the minimum useful information first, then let people drill deeper based on what they care about. For someone just exploring neighborhoods, the city overview is enough. For someone evaluating a specific apartment, the block-level detail is what matters.</p><div><hr></div><h4><strong>How I Built It (And What Was Harder Than Expected)</strong></h4><p>I used Claude as my coding partner for the entire build. The overall process followed what most people describe as vibe coding: provide a high-level plan, iterate step by step, and make trade-off decisions along the way.</p><p><strong>The plan was conceptually simple.</strong> I needed three things: data (parks, neighborhoods, geographic boundaries), a frontend (the map interface), and backend logic (calculating distances, generating scores, connecting everything). This is essentially the model-view-controller pattern&#8212;data, interface, and logic working together.</p><p><strong>Where it got interesting was the trade-offs.</strong></p><p>The data layer was the biggest source of real decisions&#8212;not because getting data was impossible, but because every data choice had downstream consequences.</p><p>First, how do you define a &#8220;park&#8221;? Is a 2-acre playground sufficient? What about a botanical garden? A greenway? For MVP, I kept it simple: parks above a minimum size threshold, focused on the kind of green space you&#8217;d actually walk through for 20+ minutes. That meant leaving out some edge cases, but it kept the scope manageable.</p><p>Second, where does the data come from? Publicly available geographic datasets exist, but they come with trade-offs: API rate limits, licensing restrictions, varying data quality, and inconsistent naming conventions across sources. Park data uses one taxonomy. Neighborhood boundary data uses another. Census block data uses yet another. Making these work together required judgment calls&#8212;how to define neighborhood boundaries, how to handle edge cases where a block spans two neighborhoods, what to do when data sources disagree.</p><p>Third, how do you serve the data? Making live API requests for every user interaction would be slow and fragile&#8212;and could hit rate limits fast if multiple people use the app simultaneously. So I downloaded the data upfront and serve it locally. For an MVP with a small user base, this works well and keeps the experience fast. Scaling would require a different approach, but that&#8217;s a future problem.</p><p><strong>The frontend was where taste mattered most.</strong> The color scheme, the scoring scale, the level of detail in the popup, the decision to show census blocks rather than arbitrary grid squares&#8212;these are all judgment calls that determine whether the app feels useful or confusing. No amount of coding skill replaces knowing what the user (in this case, initially me) actually wants to see.</p><p><strong>The backend logic surfaced subtle complexity.</strong> Distance calculations between geographic points aren&#8217;t as straightforward as they appear&#8212;coordinate systems, projection methods, and the difference between straight-line distance and walking distance all matter. For MVP, I used a reasonable approximation that&#8217;s good enough for &#8220;is this a 5-minute walk or a 20-minute walk?&#8221; If I need higher precision later, I can refine it.</p><div><hr></div><h4><strong>Where Vibe Coding Helped&#8212;and Where It Didn&#8217;t</strong></h4><p>Building with Claude as a coding partner was significantly faster than building alone would have been. The LLM was particularly good at generating boilerplate code for map rendering and data processing, suggesting library choices and architectural patterns, helping debug issues when I could describe the problem clearly, and handling repetitive tasks like data formatting and conversion.</p><p>Where it struggled was when problems required context that&#8217;s hard to express in a prompt. For example, I hit a rendering bug where the frontend wasn&#8217;t displaying blocks correctly. Claude tried multiple fixes, each of which introduced a new problem&#8212;we went in circles. What eventually broke the loop was me suggesting we use browser developer tools to inspect the actual errors, which gave us concrete diagnostic information to work with. In another case, a more capable model release solved a problem the previous model couldn&#8217;t crack.</p><p>This reinforced something I&#8217;ve come to believe through this process: understanding computer science fundamentals matters, even in a vibe coding world. Not because you need to write every line yourself, but because when something breaks&#8212;and it will&#8212;you need enough understanding to diagnose the problem, ask the right questions, and evaluate whether the LLM&#8217;s proposed fix makes sense. If you abstract away all understanding of how the system works, you&#8217;re stuck the moment something goes wrong.</p><p>That said, I want to be honest about the tradeoff: for a simple, single-user application like this, the fundamentals matter less than they would for a production system serving thousands of users. The stakes of a bug are low. The complexity is manageable. If you&#8217;re building something for yourself and learning as you go, vibe coding is a remarkably effective way to do both simultaneously. Just know that the further you scale&#8212;more users, more data, more features&#8212;the more that underlying understanding pays off.</p><div><hr></div><h4><strong>Lessons Learned</strong></h4><p><strong>Build for yourself first, then share.</strong> I built this because I genuinely wanted it. That meant I understood the problem deeply, had strong opinions about what the solution should look like, and could evaluate quality without user testing. Solving your own problem is the fastest path to a useful product.</p><p><strong>Start with one question.</strong> The app answers one question: how walkable is the nearest park from this location? Every feature decision flowed from that. When I was tempted to add hiking trail data, transit overlays, or restaurant proximity, I asked: does this help answer the core question? If not, it&#8217;s post-MVP.</p><p><strong>Data is the real bottleneck, not code.</strong> The most time-consuming part wasn&#8217;t writing code&#8212;it was finding reliable data sources, understanding their limitations, reconciling different taxonomies, and making judgment calls about quality. As vibe coding makes development easier, data access and data quality become key differentiators for applications.</p><p><strong>The right interface matters more than the right model.</strong> I tried answering this question with LLMs (natural language), with manual research (spreadsheets and notes), and with a visual map. The map won&#8212;not because it has more information, but because it presents spatial information in the format humans process most naturally. Choosing the right interface for your information type is a design decision that no amount of better AI can substitute for.</p><p><strong>Ship the MVP, then iterate.</strong> The current version has rough edges. The scoring could be more sophisticated. The data could be more comprehensive. The styling could be more polished. None of that matters as much as having a working tool that answers the core question. Everything else is refinement.</p><div><hr></div><h4><strong>What&#8217;s Next</strong></h4><p>The immediate plan is to continue refining the app&#8212;improving the interface, exploring additional cities, and seeing whether other people find it as useful as I do.</p><p>But the bigger takeaway from this experience is about a shift that&#8217;s happening in who can build useful tools. A few years ago, building a map-based web application required a team of engineers. Today, a product manager with some CS background and an LLM coding partner can ship a functional MVP in weeks.</p><p>That doesn&#8217;t mean the engineering is trivial. It means the barrier to entry has moved. The scarce resource is no longer &#8220;can you code it&#8221; but &#8220;do you understand the problem well enough, and do you have the judgment to make the right trade-offs?&#8221;</p><p>For me, this started as solving my own problem. It turned into my first public app. And it taught me more about building products than years of managing them from the other side of the table.</p><p>The app is available here: <a href="http://natureaccessmap.com">nature-access-map</a>.</p><p><em>This is the fourth article in a series. <a href="https://leonidprilutskiy.substack.com/p/claude-code-for-financial-planning?r=1iyonb">Article 1</a> covered using Claude Code for financial planning. <a href="https://leonidprilutskiy.substack.com/p/i-spent-10-years-in-the-wrong-city?r=1iyonb">Article 2</a> covered the framework I used to evaluate potential cities to move to. <a href="https://leonidprilutskiy.substack.com/p/i-used-chatgpt-and-claude-to-help?r=1iyonb">Article 3</a> covered where LLMs helped and failed during the planning process.</em></p>]]></content:encoded></item><item><title><![CDATA[Claude Code for Financial Planning – Top-Down vs. Bottom-Up Approach]]></title><description><![CDATA[Claude Code]]></description><link>https://thecontractsignal.com/p/claude-code-for-financial-planning</link><guid isPermaLink="false">https://thecontractsignal.com/p/claude-code-for-financial-planning</guid><dc:creator><![CDATA[Leonid Prilutskiy]]></dc:creator><pubDate>Mon, 09 Feb 2026 04:02:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!aR1x!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd35163fd-b60f-4c97-94ed-f30c0d7bf908_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Late last year, I tried using Claude Code to assist with some financial planning. This was driven in part by a planned move to a new city and understanding the corresponding cost of living.</p><p>I explored a few different approaches in parallel &#8211; a top-down type of workstream and a bottom-up workstream.</p><p>In this context &#8211; a top-down approach means larger scope: effectively I compiled all of the financial statements and transactions from a given period of time, say the last 3-5 years, and then used Claude Code and other tools to actually parse out the transactions, compile them, categorize them, and analyze them or enable my own analysis of them.</p><p>I tested a few different approaches that uses this sort of top-down workflow.</p><p>The original overall approach or pipeline was:</p><p>- Create an overall plan or outline</p><p>- Compile / download financial statements (PDFs)</p><p>- Drop into a local folder and have claude code work with them end to end:</p><blockquote><ul><li><p>Provide initial context and refine plan using Claude Code&#8217;s plan mode</p></li><li><p>Convert each PDF into Excel or csv</p></li><li><p>Parse out the transactions</p></li><li><p>Aggregate the transactions into a single Excel or csv</p></li><li><p>Categorize the transactions</p></li><li><p>Perform follow-on analysis</p></li><li><p>Iterate</p></li></ul></blockquote><p>After a few hours it became clear that parsing out transactions from PDFs to Excel / csv is deceptively challenging (even for Claude), particularly when working with different data sources. So I replaced that specific step with using a third-party PDF to Excel conversion tool that I already had access to and was both much faster and more reliable.</p><p>Otherwise, the overall top-down approaches were the same.</p><p>My findings from the top-down approaches were as follows:</p><ul><li><p>First of all, handling large scope to start can be overwhelming in terms of the amount of the amount of necessary code (and of course corresponding context windows)</p></li><li><p>Second of all, because of the volume of code and data corresponding to the scope, the human testing costs become much higher</p><ul><li><p>In other words, the realm of possibilities of things that can go wrong are much broader, require more rigorous testing and the testing is more time consuming to perform</p></li><li><p>Unless an issue is glaring or there is some clear prioritization that can be done &#8211; for example identify what the largest transactions (such as rent payments), the transactions require a fair amount of individual review</p></li><li><p>However even when prioritizing these things there are all sorts of nuances that can get introduced &#8211; for example transactions being combined together, or amounts being off, or occasional exceptions that are difficult to spot (e.g. imagine a paycheck and a bonus being combined together or a rent payment being combined with a security deposit or a move from one apartment to another leading to different rent costs, etc.)</p></li><li><p>Oftentimes the context is situation-specific as well which makes more automated tests or handling this via the planning phase more difficult</p></li></ul></li><li><p>Third of all, in terms of the reliability and accuracy of the code &#8211; the top-down approach is decent at creating estimates but if exactness or precision is necessary, it is of limited utility as it would require a fair amount of manual quality control and testing. This may be okay as a starting point but usually requires complementing with other approaches to get more precise data</p></li></ul><h3>The bottom up approach</h3><p>Given the limitations of the top-down approach, the question came up: is there a complementary or perhaps alternative approach to the top-down process that focuses on a smaller scope?</p><p>For example, starting with a specific category of spend, mastering that and then repeating the process for other categories.</p><p>The business analogy I would use here is how Amazon focused on a specific product category to start (books). There are similar best practices when starting a business &#8211; specifically to focus on an underserved niche rather than trying to explore too large of a market and risk more competition, expensive customer / user acquisition, etc.</p><p>So the bottom up approach has the benefit of targeting specific categories one at a time (e.g. rent, grocery spending). This in turn involves smaller volumes, similarly structured transactions and less corresponding complexity so it involves less code, simpler testing, less cognitive load and greater transparency into both the data and the code.</p><p>This has been my experience so far.</p><p><strong>To summarize: the key benefit of the bottom-up approach is simplicity.</strong> Less categories, smaller transaction volume, less things that can go wrong, and less things to consider at any given time.</p><p>Now compare that with the top-down case where you have many statements across multiple categories. So you have a much larger volume of transactions of different types. You have different types of data structures for each. You have different types of ways in which things are expressed and net of those considerations there are many things that can go wrong potentially at each stage of the process, particularly when you&#8217;re parsing, aggregating, and analyzing the transactions.</p><h3>An Open Question &#8211; Building Up to Complex Use Cases?</h3><p>In addition, there is an additional potential benefit for more complex systems with a large volume of categories. My hypothesis is that if you build it up from the bottom step-by-step, category by category and each category is sufficiently constrained, over time you may be able to create an orchestration agent to actually coordinate each of these as if they were separate services.</p><p>For example you can have a grocery purchase analyzer as one service.</p><p>You can have a rent payment analyzer as another service, a medical appointment analyzer, a transportation payment analyzer, and so on.</p><p>You can do something similar for basically every category of items that is sufficiently standardized or constrained. Then, as you (and the system) develop a strong understanding of these you can then potentially automate the system entirely.</p><p>I need to pressure test the feasibility of this by running some experiments, but early indications are promising.</p><h2>Conclusion</h2><p>Overall, Claude Code has been very helpful in assisting me with financial planning and other use cases. So far &#8211; the top-down approach has been preferable to get a decent estimate of overall spend while the bottom-up approach has shown the most promise when exactness and detailed results are necessary.</p><p></p><p></p><p></p>]]></content:encoded></item></channel></rss>