<?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[Local A.I, Applied. blog by ThirdShift R&D]]></title><description><![CDATA[Getting local AI across the gap to something a regular business can run safely, on hardware it owns. Honest, reproducible eval: tests, methods, numbers with error bounds — and the failures. Build or deploy? Follow along.]]></description><link>https://research.thirdshiftrd.com</link><image><url>https://research.thirdshiftrd.com/img/substack.png</url><title>Local A.I, Applied. blog by ThirdShift R&amp;D</title><link>https://research.thirdshiftrd.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 21 Jul 2026 03:50:22 GMT</lastBuildDate><atom:link href="https://research.thirdshiftrd.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Local A.I. Applied]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[3rdshiftrnd@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[3rdshiftrnd@substack.com]]></itunes:email><itunes:name><![CDATA[Local A.I. Applied]]></itunes:name></itunes:owner><itunes:author><![CDATA[Local A.I. Applied]]></itunes:author><googleplay:owner><![CDATA[3rdshiftrnd@substack.com]]></googleplay:owner><googleplay:email><![CDATA[3rdshiftrnd@substack.com]]></googleplay:email><googleplay:author><![CDATA[Local A.I. Applied]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[01 - A cited answer is not a correct answer]]></title><description><![CDATA[Our benchmark sat green for weeks while the model reasoned right and wrote the conclusion wrong. The measurement, and what we changed.]]></description><link>https://research.thirdshiftrd.com/p/01-a-cited-answer-is-not-a-correct</link><guid isPermaLink="false">https://research.thirdshiftrd.com/p/01-a-cited-answer-is-not-a-correct</guid><dc:creator><![CDATA[Local A.I. Applied]]></dc:creator><pubDate>Mon, 20 Jul 2026 11:47:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DPkx!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f4be89e-bfa6-4492-b84f-7b7c9adce210_2688x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We build a local AI that reads a small business&#8217;s own documents and answers questions about them on hardware that stays in the building, cited to the page, nothing leaving the site. The whole promise rests on one word: cited. If it tells you something, it shows its source, so your people can check it.</p><p>For weeks, our benchmark told us that promise was holding. One column in particular synthesis questions, where the answer has to be assembled from a couple of figures in the source sat green. Right numbers, right citations, every time. </p><p><em>The column was lying to us</em>. We just weren&#8217;t asking it the right question.</p><h4><strong>What we were actually measuring</strong></h4><p>Our scorer, on those synthesis questions, checked two things: did the answer surface the correct figures, and did it bind them to the correct citation. Both were true. So, it scored PASS.</p><p><em>What it never did was read the conclusion.</em></p><p>Here&#8217;s the failure that hid behind the green, on a filing-threshold question &#8212; the kind a real owner actually asks. The model retrieved the right threshold. It cited the right page. In its own words, it did the arithmetic correctly: &#8220;since $500 is above the $400 threshold, they are generally required to file.&#8221; And then, one line later, it wrote the answer as: &#8220;(a) No.&#8221;</p><p>It reasoned its way to the right answer and then wrote down the wrong one. Because the figure and the citation were both present and both correct, our benchmark called it a clean pass.</p><h4>The number, honestly</h4><p>We built a separate axis that reads the stated conclusion against what the cited facts actually entail and measured it. On that one inference question, across depths and positions, the model&#8217;s stated yes/no answer was correct 44% of the time (Wilson 95%: 34.6&#8211;54.7%). A large chunk of the rest weren&#8217;t random errors &#8212; they were answers that reasoned correctly in prose and then labeled the conclusion backwards.</p><p>The honest limits: this is one question type so far, one corpus, one model. It is not &#8220;the model is wrong 44% of the time.&#8221; It is &#8220;on questions that need a step of judgment, the stated conclusion decouples from the reasoning, and we&#8217;ve now measured it once.&#8221; We&#8217;re expanding it to more inference types before we&#8217;d quote a general rate. But one clean measurement of this was enough to change how we think about the whole product.</p><h4>Why this is worse than a plain error</h4><p>A model that says &#8220;I don&#8217;t know&#8221; costs you nothing. A model that hallucinates an obvious nonsense answer, you catch. But a model that lays out the correct reasoning, cites the correct page, and then states the wrong conclusion has done the most dangerous thing an assistant can do; it has spent the trust its visible work just earned. The citation is what makes you stop checking. The reasoning is what makes you believe. And then the answer is wrong.</p><p>For a tool whose entire pitch is &#8220;cited so you can verify,&#8221; that is the one unforgivable failure. It punishes exactly the person who trusted it correctly.</p><h4>The lesson, if you&#8217;re evaluating RAG</h4><p>Check whether your scorer reads the conclusion or just the retrieval. &#8220;Grounded&#8221; and &#8220;correct&#8221; are different axes, and a system can be flawless on the first while failing the second. If your eval only measures whether the right chunk was retrieved and cited, you can ship a green dashboard on top of a product that reasons right and answers wrong &#8212; and you won&#8217;t find out from your metrics. You&#8217;ll find out from a customer who trusted a cited number.</p><p>We only caught it because we started scoring the model against its own stated reasoning. The tell was cheap once we looked: reasoning says one thing, label says the opposite, in the same answer.</p><h4>What we did about it</h4><p>We didn&#8217;t try to make the model conclude correctly and call it fixed. We changed what the product is allowed to do.</p><p>On a question that requires a judgment call, for example &#8220;do I have to file?&#8221;  as opposed to &#8220;what is the filing threshold?&#8221; the box doesn&#8217;t render the verdict. It surfaces the retrieved facts and the governing rule, cited to the page, and hands the call to the person whose call it actually is&#8230; the owner or responsible employee. It files, it cites, it assembles the whole context on demand and then it says, in so many words, &#8220;this one&#8217;s a judgment call, and it&#8217;s yours.&#8221;</p><p>That&#8217;s not a limitation we&#8217;re apologizing for. It&#8217;s the design. The people we build for are good at making calls on incomplete information, that&#8217;s their job. What they don&#8217;t have time for is assembling the context. So, we do the half a machine is good at; hold everything, cite exactly, never tire&#8230; and we hand off cleanly at the seam: the exact point where a human&#8217;s judgment belongs and a model&#8217;s confidence is a liability.</p><p>The benchmark being green taught us less than the benchmark being caught. We&#8217;ll keep publishing both. </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://research.thirdshiftrd.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Local A.I, Applied. blog by ThirdShift R&amp;D! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Start Here]]></title><description><![CDATA[One industrial tradesman building local AI you can actually see, showing the work: the tests, the honest numbers, and the failures.]]></description><link>https://research.thirdshiftrd.com/p/start-here</link><guid isPermaLink="false">https://research.thirdshiftrd.com/p/start-here</guid><dc:creator><![CDATA[Local A.I. Applied]]></dc:creator><pubDate>Mon, 20 Jul 2026 11:25:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DPkx!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f4be89e-bfa6-4492-b84f-7b7c9adce210_2688x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>ThirdShift R&amp;D is one industrial electrician building AI that runs where you can see it.</p><p>We&#8217;re not a frontier lab. We&#8217;re not training the next giant model or chasing a benchmark record ; the frontier builds the engine, and that&#8217;s a different trade than ours. Ours is the unglamorous work in the middle: getting these systems across the gap from a demo that impresses researchers to something a regular business can actually run&#8230; safely, in the hands of someone who isn&#8217;t an AI expert and shouldn&#8217;t have to be.</p><p>That gap is where almost everything fails. A model can reason like a PhD and still get wired into a workplace in a way that quietly burns the people trusting it. Closing it and making powerful, unpredictable systems safe for regular people doing regular work is a real trade. It&#8217;s the one we practice. It&#8217;s the one the human behind this page paid the bills at his day job, handling voltages with consequences to a human body that can be just as fatal as a bad A.I. may be to an entire organization.</p><p>The product is a box that sits on your site, reads your own documents, and answers cited to the page and then hands the judgment calls back to you, because those are yours to make. Nothing leaves the building. No call ever made without a Human-in-the-Loop.</p><p>This is where we show the work. Not a sales pitch, not a benchmark nobody can reproduce&#8230; the actual tests, the methods, the numbers with honest error bounds, and the failures, especially the failures. When we catch our own tools lying to us, that goes here too, with the number attached.</p><p>If you build or deploy local AI or you&#8217;re an operator trying to decide whether any of this is trustworthy enough to put near your business&#8230; Well, this is for you. If you&#8217;re here for &#8220;AGI next quarter,&#8221; you&#8217;ll be bored. If you want passed the hype, and to start looking at how this technology is being applied on-site, and how it is likely to affect YOUR everyday workplace, you are in the right place. </p><p>We leave no doubt. Including about where we were wrong. Follow along.</p><p>&#8212; ThirdShift R&amp;D</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://research.thirdshiftrd.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Local A.I, Applied. blog by ThirdShift R&amp;D! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>