<script data-pm-proxy="intercept"></script><?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[Finance Shift]]></title><description><![CDATA[The newsletter for finance professionals moving from task executors to system builders. Every week: practices, tools and real-world insights to redesign your role in the AI era.]]></description><link>https://financeshift.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!hC32!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe5e52202-852b-43bf-97e8-40b0aa0903fe_508x508.png</url><title>Finance Shift</title><link>https://financeshift.substack.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 04 Sep 2026 23:13:09 GMT</lastBuildDate><atom:link href="/__u/financeshift.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Nolwenn Belliard]]></copyright><language><![CDATA[en-gb]]></language><webMaster><![CDATA[financeshift@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[financeshift@substack.com]]></itunes:email><itunes:name><![CDATA[Nolwenn Belliard]]></itunes:name></itunes:owner><itunes:author><![CDATA[Nolwenn Belliard]]></itunes:author><googleplay:owner><![CDATA[financeshift@substack.com]]></googleplay:owner><googleplay:email><![CDATA[financeshift@substack.com]]></googleplay:email><googleplay:author><![CDATA[Nolwenn Belliard]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[A practical framework for trustworthy SaaS revenue reporting]]></title><description><![CDATA[How to align commercial insights, financial controls, and AI around one revenue model.]]></description><link>https://financeshift.substack.com/p/a-practical-framework-for-trustworthy</link><guid isPermaLink="false">https://financeshift.substack.com/p/a-practical-framework-for-trustworthy</guid><dc:creator><![CDATA[Nolwenn Belliard]]></dc:creator><pubDate>Thu, 30 Jul 2026 09:39:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yBDE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8f388e-7a17-465e-ae20-27789d430c08_2752x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p>Finance and sales teams often argue about revenue because they are answering different questions with the same number.</p><p>Finance needs closed periods, ledger accuracy, and an audit trail. The sales needs to understand new business, expansion, contraction, churn, and current run-rate.</p><p>Both views are valid. The problem starts when booking, billing, recognition, and cash are mixed in one model or when each dashboard rebuilds the logic differently.</p><p>In this article, I&#8217;ll walk through a framework that keeps Finance and Sales on the same page without compromising business insight or finance auditability. The goal is also to make the logic explicit enough for AI agents to act on safely: every metric has a definition and every case is reconciled.</p><h2>1. Keep four timelines separate</h2><p>A subscription produces four different numbers. Each answers a different question.</p><p>Timeline Question Core measures Primary owner <strong>Booking</strong> What did the customer commit to? MRR, ARR, backlog Sales Ops / FP&amp;A <strong>Billing</strong> What did we invoice or credit? Invoices, credit notes, deferred revenue Finance <strong>Recognition</strong> What did we earn? Recognized revenue Accounting <strong>Cash</strong> What did we collect or refund? Collections, refunds, AR Finance</p><p><strong>Rule:</strong> never use a measure from one timeline to answer a question from another.</p><p>MRR is a contractual run-rate. It must not be derived from recognized revenue, because recognition includes proration and accounting rules that do not represent a change in the recurring base.</p><h3>One contract, four correct answers</h3><p>Take a twelve-month contract signed on January 15:</p><ul><li><p>&#8364;1,200 monthly run-rate</p></li><li><p>&#8364;14,400 billed annually upfront</p></li><li><p>Net-30 payment terms</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!Uu5O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21aa4f13-9017-4b7f-9c6e-7f904eaa3f51_988x460.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!Uu5O!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21aa4f13-9017-4b7f-9c6e-7f904eaa3f51_988x460.png 424w, /__u/substackcdn.com/image/fetch/$s_!Uu5O!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21aa4f13-9017-4b7f-9c6e-7f904eaa3f51_988x460.png 848w, /__u/substackcdn.com/image/fetch/$s_!Uu5O!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21aa4f13-9017-4b7f-9c6e-7f904eaa3f51_988x460.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Uu5O!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21aa4f13-9017-4b7f-9c6e-7f904eaa3f51_988x460.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!Uu5O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21aa4f13-9017-4b7f-9c6e-7f904eaa3f51_988x460.png" width="398" height="185.30364372469634" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21aa4f13-9017-4b7f-9c6e-7f904eaa3f51_988x460.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:460,&quot;width&quot;:988,&quot;resizeWidth&quot;:398,&quot;bytes&quot;:82556,&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://financeshift.substack.com/i/209091796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21aa4f13-9017-4b7f-9c6e-7f904eaa3f51_988x460.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!Uu5O!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21aa4f13-9017-4b7f-9c6e-7f904eaa3f51_988x460.png 424w, /__u/substackcdn.com/image/fetch/$s_!Uu5O!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21aa4f13-9017-4b7f-9c6e-7f904eaa3f51_988x460.png 848w, /__u/substackcdn.com/image/fetch/$s_!Uu5O!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21aa4f13-9017-4b7f-9c6e-7f904eaa3f51_988x460.png 1272w, /__u/substackcdn.com/image/fetch/$s_!Uu5O!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21aa4f13-9017-4b7f-9c6e-7f904eaa3f51_988x460.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><p>No number is wrong. They describe different timelines.</p><h2>2. Record three dates for every event</h2><p>Every revenue event needs three dates:</p><p>Date Meaning Question it answers <strong>Economic period</strong> When the event relates to economically What happened in the business? <strong>Booking period</strong> When the event hits the books or governed report Which closed period owns it? <strong>Known at</strong> When the information entered the system What did we know at close?</p><p>This solves the late-data problem without silently rewriting history.</p><p>If a June churn is received on July 3:</p><pre><code><code>economic_period = June
booking_period = July if June is closed
known_at = July 3</code></code></pre><p>The model can reproduce both June as reported at close and June as understood today.</p><p><strong>Rule:</strong> a closed booking period never changes silently. Every change requires an explicit adjustment or restatement event.</p><h2>3. Use one canonical event model</h2><p>The canonical event model is the shared ledger between source systems, Finance controls, and the semantic layer. Its purpose is not to precompute every dashboard metric. Its purpose is to preserve each business event once, with enough context to derive and reconcile every view.</p><h3>What the model must contain</h3><p>Use one row per source-backed business event:</p><pre><code><code>revenue_event(
  event_id,
  customer_id,
  subscription_id,
  event_type,
  economic_period,
  booking_period,
  known_at,
  currency,
  mrr_delta_local,
  billed_amount_local,
  recognized_amount_local,
  cash_amount_local,
  fx_rate_frozen,
  fx_rate_closing,
  definition_version,
  source_system,
  source_record_id,
  related_event_id,
  adjustment_reason
)
</code></code></pre><p>Each field has one responsibility:</p><ul><li><p><strong>mrr_delta_local</strong> records a contractual change in recurring run-rate.</p></li><li><p><strong>billed_amount_local</strong> records invoices and credit notes.</p></li><li><p><strong>recognized_amount_local</strong> records earned revenue and reversals.</p></li><li><p><strong>cash_amount_local</strong> records collections and refunds.</p></li><li><p><strong>known_at</strong> makes historical reports reproducible.</p></li><li><p><strong>definition_version</strong> makes metric changes traceable.</p></li><li><p><strong>source_system</strong> and source_record_id provide lineage.</p></li><li><p><strong>related_event_id</strong> links reversals, credit notes, and corrections to the original event.</p></li><li><p><strong>adjustment_reason</strong> makes exceptions explicit rather than hiding them in transformations.</p></li></ul><p>Amounts not affected by an event remain zero or null. If one commercial action creates several accounting records, preserve the source-level records and link them through a common business-event identifier.</p><h3>Examples by business event</h3><p>Business event Event type MRR delta Billed Recognized Cash New &#8364;1,200 MRR contract, invoiced annually</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!_rhL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F333eee5d-dcd5-4673-bb45-64f5a4b096dc_1462x814.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!_rhL!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F333eee5d-dcd5-4673-bb45-64f5a4b096dc_1462x814.png 424w, /__u/substackcdn.com/image/fetch/$s_!_rhL!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F333eee5d-dcd5-4673-bb45-64f5a4b096dc_1462x814.png 848w, /__u/substackcdn.com/image/fetch/$s_!_rhL!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F333eee5d-dcd5-4673-bb45-64f5a4b096dc_1462x814.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_rhL!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F333eee5d-dcd5-4673-bb45-64f5a4b096dc_1462x814.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!_rhL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F333eee5d-dcd5-4673-bb45-64f5a4b096dc_1462x814.png" width="1456" height="811" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/333eee5d-dcd5-4673-bb45-64f5a4b096dc_1462x814.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:811,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:188024,&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://financeshift.substack.com/i/209091796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F333eee5d-dcd5-4673-bb45-64f5a4b096dc_1462x814.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!_rhL!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F333eee5d-dcd5-4673-bb45-64f5a4b096dc_1462x814.png 424w, /__u/substackcdn.com/image/fetch/$s_!_rhL!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F333eee5d-dcd5-4673-bb45-64f5a4b096dc_1462x814.png 848w, /__u/substackcdn.com/image/fetch/$s_!_rhL!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F333eee5d-dcd5-4673-bb45-64f5a4b096dc_1462x814.png 1272w, /__u/substackcdn.com/image/fetch/$s_!_rhL!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F333eee5d-dcd5-4673-bb45-64f5a4b096dc_1462x814.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 important distinction is between <strong>capturing events</strong> and <strong>interpreting movements</strong>. The canonical model captures the facts. The semantic layer classifies customer-period movement consistently for every dashboard, analyst, and agent.</p><h2>4. Build reconciliation into the event model</h2><p>Reconciliation is the control framework that validates how canonical events move through the four timelines.</p><p>Each event must retain its source, accounting effect, commercial effect, dates, currency treatment, and links to reversals. That design makes five common distortions:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!ACvp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabcb0d87-eabd-41e0-8e57-28c22cda6a91_1258x954.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!ACvp!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabcb0d87-eabd-41e0-8e57-28c22cda6a91_1258x954.png 424w, /__u/substackcdn.com/image/fetch/$s_!ACvp!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabcb0d87-eabd-41e0-8e57-28c22cda6a91_1258x954.png 848w, /__u/substackcdn.com/image/fetch/$s_!ACvp!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabcb0d87-eabd-41e0-8e57-28c22cda6a91_1258x954.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ACvp!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabcb0d87-eabd-41e0-8e57-28c22cda6a91_1258x954.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!ACvp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabcb0d87-eabd-41e0-8e57-28c22cda6a91_1258x954.png" width="1258" height="954" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abcb0d87-eabd-41e0-8e57-28c22cda6a91_1258x954.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:954,&quot;width&quot;:1258,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:255158,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://financeshift.substack.com/i/209091796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabcb0d87-eabd-41e0-8e57-28c22cda6a91_1258x954.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="/__u/substackcdn.com/image/fetch/$s_!ACvp!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabcb0d87-eabd-41e0-8e57-28c22cda6a91_1258x954.png 424w, /__u/substackcdn.com/image/fetch/$s_!ACvp!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabcb0d87-eabd-41e0-8e57-28c22cda6a91_1258x954.png 848w, /__u/substackcdn.com/image/fetch/$s_!ACvp!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabcb0d87-eabd-41e0-8e57-28c22cda6a91_1258x954.png 1272w, /__u/substackcdn.com/image/fetch/$s_!ACvp!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabcb0d87-eabd-41e0-8e57-28c22cda6a91_1258x954.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><h2>5. Add a governed semantic layer for humans and AI</h2><p>The event model answers <strong>what happened</strong>. The semantic layer defines <strong>how the business talks about it</strong>.</p><p>This is where stakeholders define metrics once and expose them consistently to BI tools, analysts, operational workflows, and AI agents.</p><p>For every governed metric, publish a machine-readable contract:</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!At7f!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8df5c09-b5c7-4452-871b-a341ace27038_958x1082.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!At7f!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8df5c09-b5c7-4452-871b-a341ace27038_958x1082.png 424w, /__u/substackcdn.com/image/fetch/$s_!At7f!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8df5c09-b5c7-4452-871b-a341ace27038_958x1082.png 848w, /__u/substackcdn.com/image/fetch/$s_!At7f!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8df5c09-b5c7-4452-871b-a341ace27038_958x1082.png 1272w, /__u/substackcdn.com/image/fetch/$s_!At7f!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8df5c09-b5c7-4452-871b-a341ace27038_958x1082.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!At7f!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8df5c09-b5c7-4452-871b-a341ace27038_958x1082.png" width="551" height="622.3194154488518" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8df5c09-b5c7-4452-871b-a341ace27038_958x1082.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1082,&quot;width&quot;:958,&quot;resizeWidth&quot;:551,&quot;bytes&quot;:206720,&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://financeshift.substack.com/i/209091796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8df5c09-b5c7-4452-871b-a341ace27038_958x1082.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!At7f!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8df5c09-b5c7-4452-871b-a341ace27038_958x1082.png 424w, /__u/substackcdn.com/image/fetch/$s_!At7f!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8df5c09-b5c7-4452-871b-a341ace27038_958x1082.png 848w, /__u/substackcdn.com/image/fetch/$s_!At7f!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8df5c09-b5c7-4452-871b-a341ace27038_958x1082.png 1272w, /__u/substackcdn.com/image/fetch/$s_!At7f!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8df5c09-b5c7-4452-871b-a341ace27038_958x1082.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>An agent should not infer whether &#8220;revenue&#8221; means bookings, billings, recognized revenue, or cash. The semantic layer must supply the definition, valid dimensions, time policy, and reconciliation status with the data.</p><p>A governed answer should therefore return not only a value, but also its metric version, as-of timestamp, close status, and control status. If the requested slice is not governed or a reconciliation has failed, the agent should say so rather than fabricate a precise answer.</p><h2>6. Run controls for the release</h2><p><strong>Release rule:</strong> if one reconciliation fails above the agreed tolerance, governed metrics and agent answers do not publish.</p><h4>Control 1: MRR bridge</h4><pre><code><code>Opening MRR
+ New and reactivation
+ Expansion
- Contraction
- Churn
= Closing MRR
</code></code></pre><h4>Control 2: Revenue to general ledger</h4><pre><code><code>Recognized revenue by booking period
+/- explicit revenue adjustments
= General ledger revenue
</code></code></pre><h4>Control 3: Deferred revenue</h4><pre><code><code>Opening deferred revenue
+ Invoices creating deferred revenue
- Revenue recognized from deferred balances
- Credit notes applied to deferred balances
+/- FX and explicit adjustments
= Closing deferred revenue</code></code></pre><p>Credit notes do not always affect deferred revenue in the same way. A credit issued before recognition reduces the deferred balance. A credit issued after recognition may reverse revenue, create a refund liability, or affect AR instead. The event must identify the original invoice or recognition entry through <code>related_event_id</code>, and the reconciliation must route the effect according to the accounting treatment.</p><h4>Control 4: AR and cash</h4><pre><code><code>Opening AR
+ Invoices
- Collections
- Credit notes applied to AR
+/- explicit adjustments
= Closing AR
</code></code></pre><p>Minimum automated tests:</p><ul><li><p>Every event has a valid type, source record, economic period, booking period, and known_at timestamp.</p></li><li><p>Source records are unique, or duplicates have an explicit versioning rule.</p></li><li><p>Contract changes explain every MRR delta.</p></li><li><p>A churn classification ends at zero MRR and has a confirmed loss signal.</p></li><li><p>Movement totals equal the change from opening to closing MRR.</p></li><li><p>No event silently posts into a closed booking period.</p></li><li><p>Every credit note or reversal links to the event it corrects.</p></li><li><p>Every FX residual lands on a translation line.</p></li><li><p>Every restatement has a reason, owner, timestamp, and definition version.</p></li><li><p>Revenue, deferred revenue, AR, and cash tie to their authoritative systems within tolerance.</p></li></ul><h2>7. The architecture in one view</h2><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!yBDE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8f388e-7a17-465e-ae20-27789d430c08_2752x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!yBDE!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8f388e-7a17-465e-ae20-27789d430c08_2752x1536.png 424w, /__u/substackcdn.com/image/fetch/$s_!yBDE!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8f388e-7a17-465e-ae20-27789d430c08_2752x1536.png 848w, /__u/substackcdn.com/image/fetch/$s_!yBDE!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8f388e-7a17-465e-ae20-27789d430c08_2752x1536.png 1272w, /__u/substackcdn.com/image/fetch/$s_!yBDE!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8f388e-7a17-465e-ae20-27789d430c08_2752x1536.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!yBDE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8f388e-7a17-465e-ae20-27789d430c08_2752x1536.png" width="1456" height="813" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8b8f388e-7a17-465e-ae20-27789d430c08_2752x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:813,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5506317,&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://financeshift.substack.com/i/209091796?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8f388e-7a17-465e-ae20-27789d430c08_2752x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!yBDE!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8f388e-7a17-465e-ae20-27789d430c08_2752x1536.png 424w, /__u/substackcdn.com/image/fetch/$s_!yBDE!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8f388e-7a17-465e-ae20-27789d430c08_2752x1536.png 848w, /__u/substackcdn.com/image/fetch/$s_!yBDE!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8f388e-7a17-465e-ae20-27789d430c08_2752x1536.png 1272w, /__u/substackcdn.com/image/fetch/$s_!yBDE!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b8f388e-7a17-465e-ae20-27789d430c08_2752x1536.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>The separation of responsibilities is deliberate:</p><ul><li><p><strong>Sources</strong> record operational and accounting facts.</p></li><li><p><strong>The canonical event model</strong> preserves those facts consistently.</p></li><li><p><strong>The reconciliation framework</strong> proves that the model ties to authoritative systems.</p></li><li><p><strong>The semantic layer</strong> turns reconciled facts into governed business concepts.</p></li><li><p><strong>Consumption tools and agents</strong> query governed concepts rather than rebuilding logic.</p></li></ul><h2>Conclusion</h2><p>Trust between Business and Finance is built when both teams can start from the same customer movement and follow it to the same financial outcome.</p><p>When every new contract, expansion, contraction, and churn can be reconciled to revenue, margin, and cash, Finance stops being only the team that validates the past. It can explain <strong>which customers, products, and movements create profitable growth a</strong>nd where the business should invest next.</p><p>That is how finance insight becomes a growth engine through a shared, reconciled model that turns every customer movement into a decision both Business and Finance can trust.</p><div><hr></div><p><em>Finance Shift is a newsletter on the intersection of finance and engineering. If this was useful, share it with someone who want to build its own.</em></p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://financeshift.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Finance Shift! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://financeshift.substack.com/p/a-practical-framework-for-trustworthy?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption"></p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://financeshift.substack.com/p/a-practical-framework-for-trustworthy?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/financeshift.substack.com/p/a-practical-framework-for-trustworthy?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[The Finance Engineer: What CFOs need to know before hiring]]></title><description><![CDATA[Finance is still the least AI-mature function in the enterprise, because no one inside the function owns the automation. Meet the Finance Engineer: the profile CFOs are quietly hiring for, under a dozen different job titles.]]></description><link>https://financeshift.substack.com/p/the-finance-engineer-what-cfos-need</link><guid isPermaLink="false">https://financeshift.substack.com/p/the-finance-engineer-what-cfos-need</guid><dc:creator><![CDATA[Nolwenn Belliard]]></dc:creator><pubDate>Wed, 01 Jul 2026 15:45:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/95cde19a-5496-452d-b326-f6df0f73b7ae_1152x472.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Finance remains the least AI-mature function in the enterprise. That&#8217;s the finding of <a href="https://www.cfoconnect.eu/resources/reports/state-of-ai-in-finance-2026/">CFO Connect&#8217;s </a><strong><a href="https://www.cfoconnect.eu/resources/reports/state-of-ai-in-finance-2026/">State of AI in Finance 2026</a></strong> report:</p><ul><li><p><strong>56%</strong> of finance leaders use AI today (vs. 17% in 2023) </p></li><li><p><strong>68%</strong> of CFOs say they&#8217;re slow to adopt because they don&#8217;t know where to start</p></li></ul><p>This isn&#8217;t a technology problem. It&#8217;s a <strong>skills</strong> problem.</p><div><hr></div><h2>What this role is not</h2><p>In France, &#8220;ing&#233;nieur financier&#8221; refers to a quant: someone who models derivatives, calculates VaR, writes Python to price options. That&#8217;s financial engineering, a discipline born out of mathematics and trading floors.</p><p>The Finance Engineer this article is about has nothing to do with that. This person sits inside your internal finance team. Their mission: build the systems that automate everything your team currently does manually, and keep those systems running continuously.</p><div><hr></div><h2>What made this role possible</h2><p>Tools have evolved faster than org charts. Connecting Claude to a data warehouse via MCP no longer requires a developer. Building a reconciliation workflow in n8n takes a few hours. The barrier between &#8220;understanding financial logic&#8221; and &#8220;encoding that logic into a system&#8221; has nearly disappeared.</p><p>The market confirms it in numbers:</p><ul><li><p><strong>Gartner</strong>: 90% of finance teams will deploy at least one AI solution by the end of 2026</p></li><li><p><strong>Gartner</strong>: embedded AI in cloud ERPs will cut the close cycle by 30% by 2028</p></li><li><p><strong>BCG</strong>: 75% of finance leaders expect agentic AI to be commonplace within 3 years</p></li></ul><p>Job postings follow the trend. Discord&#8217;s 2026 postings call for using AI agents like Claude Code and Codex to automate reporting. MLB Network is hiring a &#8220;Financial Analyst, FP&amp;A and Systems&#8221; whose core mission is building pipelines that connect ERP, reporting, and operational systems. Spring Health has created an official title: <strong>Senior Finance Engineer</strong>, $159,000, reporting to the VP of FP&amp;A.</p><p>The title varies. The need is the same everywhere.</p><div><hr></div><h2>What it costs not to have this profile</h2><p>OpenAI&#8217;s finance team operates with <strong>22% of the headcount</strong> of comparable tech firms. An internal bot reads contracts, applies ASC 606 revenue recognition rules, and generates journal entries. What ten people used to do manually, a system now does continuously.</p><p>The median ROI on AI initiatives in finance sits at <strong>10%</strong> according to BCG, but one team in five already exceeds 20%. The gap between organizations with the right profile and those still waiting is widening.</p><div><hr></div><h2>What the market says</h2><p>In the US market, compensation is settling into three tiers:</p><p>Level US Salary Reference Junior hybrid FP&amp;A + systems $90k &#8211; $100k MLB Network Mid-level, confirmed AI fluency $116k &#8211; $130k Discord Senior, full ownership of the automation stack $159k &#8211; $179k Spring Health</p><p>This isn&#8217;t a finance analyst&#8217;s salary. It&#8217;s an engineer&#8217;s salary. Wolters Kluwer&#8217;s 2025 survey (392 respondents) confirms that <strong>85% of finance leaders consider AI skills important</strong> in their hiring criteria.</p><p>In Europe, the structural gap versus the US runs around 40%. According to Finance Alliance, an FP&amp;A manager earns on average $75,714 in Europe versus $132,500 in North America. For a senior Finance Engineer, this puts the role between &#8364;90k and &#8364;120k depending on the country, with London and Amsterdam at the top and Paris slightly below.</p><p>Proof the role exists in France: <strong>Pigment</strong> posted a <a href="https://letmestart.fr/offre/pigment-finance-systems-engineer">Finance Systems Engineer</a> role in Paris in June 2026. Description: 50% systems architecture (Pigment, NetSuite, Salesforce), 30% AI automation (LLM agents, n8n, APIs). Expected profile: 3 to 6 years in FinOps or RevOps, LLM proficiency, financial fluency.</p><p>In France, the role is still being hired under scattered titles: &#8220;Finance Business Analyst,&#8221; &#8220;FP&amp;A Automation Specialist,&#8221; &#8220;Responsable Outils Finance&#8221; (Finance Tools Manager). There&#8217;s no standardized title yet. <strong>Search by skill set, not by job title.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!EYrR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b45cc4b-2604-4f35-8ecd-c3f11544c6d3_1608x738.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!EYrR!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b45cc4b-2604-4f35-8ecd-c3f11544c6d3_1608x738.png 424w, /__u/substackcdn.com/image/fetch/$s_!EYrR!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b45cc4b-2604-4f35-8ecd-c3f11544c6d3_1608x738.png 848w, /__u/substackcdn.com/image/fetch/$s_!EYrR!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b45cc4b-2604-4f35-8ecd-c3f11544c6d3_1608x738.png 1272w, /__u/substackcdn.com/image/fetch/$s_!EYrR!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b45cc4b-2604-4f35-8ecd-c3f11544c6d3_1608x738.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!EYrR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b45cc4b-2604-4f35-8ecd-c3f11544c6d3_1608x738.png" width="1456" height="668" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b45cc4b-2604-4f35-8ecd-c3f11544c6d3_1608x738.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:668,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:205290,&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://financeshift.substack.com/i/204455972?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b45cc4b-2604-4f35-8ecd-c3f11544c6d3_1608x738.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!EYrR!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b45cc4b-2604-4f35-8ecd-c3f11544c6d3_1608x738.png 424w, /__u/substackcdn.com/image/fetch/$s_!EYrR!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b45cc4b-2604-4f35-8ecd-c3f11544c6d3_1608x738.png 848w, /__u/substackcdn.com/image/fetch/$s_!EYrR!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b45cc4b-2604-4f35-8ecd-c3f11544c6d3_1608x738.png 1272w, /__u/substackcdn.com/image/fetch/$s_!EYrR!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b45cc4b-2604-4f35-8ecd-c3f11544c6d3_1608x738.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><figcaption class="image-caption">Finance System Engineer, Pigment, June 26</figcaption></figure></div><div><hr></div><h2>The two profiles you&#8217;ll encounter</h2><p><strong>Profile 1: The finance person who learned to build</strong></p><ul><li><p>5 to 8 years in FP&amp;A or accounting</p></li><li><p>Got frustrated with existing tools, then moved into automation</p></li><li><p>Has shipped something to production: automated reconciliation, a live dashboard, a KPI alert</p></li><li><p>No computer science degree, but real systems running in production</p></li><li><p><em>Rarer, more expensive, immediately operational</em></p></li></ul><p><strong>Profile 2: The technologist who pivoted into finance</strong></p><ul><li><p>Background in RevOps, analytics engineering, or a data team</p></li><li><p>Understands pipelines, APIs, automation tooling, data transformation </p></li><li><p>Needs training on accounting and audit constraints</p></li><li><p><em>More accessible, longer ramp-up</em></p><p></p></li></ul><div><hr></div><h2>The Finance Engineer&#8217;s skill set</h2><p>In its <em>Finance Engineer Defined</em> report (June 2026), CFO Connect identifies two layers of skills. Both are required.</p><p><strong>Technical layer</strong></p><ul><li><p><strong>LLM proficiency</strong>: orchestrating agents that pull live data, apply logic, and flag exceptions on their own.</p></li><li><p><strong>Workflow automation</strong>: identifying friction points and eliminating them. A data pull that refreshes itself. A weekly reconciliation that surfaces exceptions without manual intervention.</p></li><li><p><strong>Data literacy</strong>: working with SQL, querying a data model without depending on IT, recognizing an incomplete data source before it flows into a downstream system.</p></li><li><p><strong>Systems integration</strong>: connecting tools via API or middleware, understanding how data flows through the ERP. </p></li></ul><p><strong>Behavioral layer</strong></p><p>56% of finance professionals rank workflow automation as the most important AI skill for their career over the next two years <em>(CFO Connect, State of AI in Finance 2026)</em>. But technical skill alone isn&#8217;t enough.</p><p>The Finance Engineer must also be able to:</p><ul><li><p>Explain what they&#8217;re building to non-technical stakeholders</p></li><li><p>Prioritize automations that deliver real value</p></li><li><p>Drive adoption within the team</p></li><li><p>Test new tools without waiting for a complete playbook</p></li></ul><div><hr></div><h2>The decision you&#8217;re making by hiring or not</h2><p>There&#8217;s an apparent alternative. AI vendors are now deploying <strong>Forward Deployed Engineers</strong> directly inside client organizations. OpenAI just acquired Tomoro for 150 of these profiles. Anthropic launched a joint venture with Blackstone, Hellman &amp; Friedman, and Goldman Sachs on the same model.</p><p>The distinction is simple: an FDE brings a mature, proven stack, deployed quickly. A Finance Engineer builds a stack that belongs to your business logic, evolves with your needs, and stays in place after the vendor contract ends. Both have value. Over a two-year horizon, the economics favor the in-house hire.</p><p>Finance remains last among all business functions in AI adoption &#8212; not because the tools are missing, but because no one inside the function owns it. The Finance Engineer is that owner. Specifying what they&#8217;re going to build is your job, before it&#8217;s theirs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!vBRk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1469cbbf-ee69-4c03-a805-b67acce15715_1407x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!vBRk!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1469cbbf-ee69-4c03-a805-b67acce15715_1407x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!vBRk!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1469cbbf-ee69-4c03-a805-b67acce15715_1407x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!vBRk!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1469cbbf-ee69-4c03-a805-b67acce15715_1407x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vBRk!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1469cbbf-ee69-4c03-a805-b67acce15715_1407x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!vBRk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1469cbbf-ee69-4c03-a805-b67acce15715_1407x768.png" width="1407" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1469cbbf-ee69-4c03-a805-b67acce15715_1407x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1407,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:404908,&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://financeshift.substack.com/i/204455972?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1469cbbf-ee69-4c03-a805-b67acce15715_1407x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!vBRk!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1469cbbf-ee69-4c03-a805-b67acce15715_1407x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!vBRk!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1469cbbf-ee69-4c03-a805-b67acce15715_1407x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!vBRk!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1469cbbf-ee69-4c03-a805-b67acce15715_1407x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!vBRk!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1469cbbf-ee69-4c03-a805-b67acce15715_1407x768.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><div><hr></div><p style="text-align: center;"><strong>Happy to hear your thoughts and experience on how to hire for this role &#128071;</strong></p><div><hr></div><p></p><p><em>Finance Shift is a newsletter on the intersection of finance and engineering. If this was useful, share it with someone who want to build its own.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://financeshift.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Finance Shift! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><p><em>Job postings referenced: Spring Health &#183; Discord &#183; MLB Network &#183; Pigment</em></p><p><em>Sources: CFO Connect State of AI in Finance 2026 &#183; CFO Connect Finance Engineer Defined (June 2026) &#183; Gartner (Sept. 2024; Feb. 2026) &#183; BCG How Finance Leaders Can Get ROI from AI (2025) &#183; Wolters Kluwer / CCH Tagetik Survey (May 2025) &#183; Finance Alliance Salary Report 2025 &#183; OpenAI Deployment Company (May 2026) &#183; Anthropic Enterprise AI Services (May 2026)</em></p>]]></content:encoded></item><item><title><![CDATA[4 steps for building reliable financial dashboards with Claude]]></title><description><![CDATA[The dashboard encodes calculations in real code. That is its strength. It is also what makes it hard to audit if you do not prepare well.]]></description><link>https://financeshift.substack.com/p/4-steps-for-building-reliable-financial</link><guid isPermaLink="false">https://financeshift.substack.com/p/4-steps-for-building-reliable-financial</guid><dc:creator><![CDATA[Nolwenn Belliard]]></dc:creator><pubDate>Thu, 25 Jun 2026 12:57:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!syhW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F420a42c9-9d76-4766-9199-a90375eb7ea8_1446x523.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A dashboard generated by Claude has a real advantage over a chat analysis: calculations are encoded in code and applied identically to every data update or consultation. No reinterpretation from one session to the next.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://financeshift.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Finance Shift! 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><p>But that code is not readable. A finance controller cannot open an HTML file and verify whether gross margin was calculated correctly. They see a number, not the rule behind it.</p><p>That is why the quality of a Claude financial dashboard is not determined at generation time. It is determined in the preparation of the prompt, and in what you ask Claude to include to make the result auditable.</p><p>Here are the four steps that make the difference.</p><div><hr></div><h2>1. Document your input data</h2><p>Before writing anything in Claude, prepare a documentation file for your data sources. For each table or file: its name, what it contains, and the definition of each column with its business meaning.</p><p>The best way to maintain this file: a Notion page connected via MCP. Claude can read it directly at the start of each session without copy-pasting. It stays maintained, versioned, and accessible to the whole team.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!q16n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d288898-36a7-40dd-ae8b-0ada6f96a030_1201x880.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!q16n!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d288898-36a7-40dd-ae8b-0ada6f96a030_1201x880.png 424w, /__u/substackcdn.com/image/fetch/$s_!q16n!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d288898-36a7-40dd-ae8b-0ada6f96a030_1201x880.png 848w, /__u/substackcdn.com/image/fetch/$s_!q16n!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d288898-36a7-40dd-ae8b-0ada6f96a030_1201x880.png 1272w, /__u/substackcdn.com/image/fetch/$s_!q16n!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d288898-36a7-40dd-ae8b-0ada6f96a030_1201x880.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!q16n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d288898-36a7-40dd-ae8b-0ada6f96a030_1201x880.png" width="1201" height="880" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d288898-36a7-40dd-ae8b-0ada6f96a030_1201x880.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:880,&quot;width&quot;:1201,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:618933,&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://financeshift.substack.com/i/203417968?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d288898-36a7-40dd-ae8b-0ada6f96a030_1201x880.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!q16n!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d288898-36a7-40dd-ae8b-0ada6f96a030_1201x880.png 424w, /__u/substackcdn.com/image/fetch/$s_!q16n!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d288898-36a7-40dd-ae8b-0ada6f96a030_1201x880.png 848w, /__u/substackcdn.com/image/fetch/$s_!q16n!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d288898-36a7-40dd-ae8b-0ada6f96a030_1201x880.png 1272w, /__u/substackcdn.com/image/fetch/$s_!q16n!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d288898-36a7-40dd-ae8b-0ada6f96a030_1201x880.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><div><hr></div><h2>2. Define every metric without exception</h2><p>In your final prompt, every indicator must be defined. Leave no room for Claude to apply its own formula.</p><p>The simplest way: use Excel dialect. You do not need to know Python or SQL. If you can write a SUMIF, you can specify a calculation for Claude. Transposing it into the execution language of its choice is Claude&#8217;s job.</p><p>Not &#8220;calculate gross profit&#8221;. This:</p><pre><code><code>### Calculations are encoded with Excel dialect 

Net revenue     = SUMIF(AccountNum,"70*",Credit) - SUMIF(AccountNum,"70*",Debit)
                 - SUMIF(AccountNum,"709*",Credit)

Direct costs    = SUMIF(AccountNum,"607*",Debit) - SUMIF(AccountNum,"607*",Credit)

Gross profit    = Net_revenue - Direct_costs - Inventory_variation
</code></code></pre><p>Every dashboard indicator has its own line. No implicit formula, no decision left to the agent.</p><p>These formulas live in the same Notion file as the data documentation from step 1. One reference document: the columns, their meaning, and the calculation rules that apply to them. Every team member, every dashboard, every spreadsheet refers to it as the single source of truth.</p><div><hr></div><h2>3. Have Claude retranscribe what it is about to encode</h2><p>Before generating the dashboard, ask Claude to produce a glossary page: a plain-language display of every calculation it is about to encode.</p><p>This is a verification step, not a validation with domain experts. That was already done in steps 1 and 2. The goal here is simple: read in plain language what Claude understood from your specifications before it writes any code.</p><p>The glossary shows:</p><ul><li><p>Each indicator with its definition restated in plain language</p></li><li><p>The calculation rule line by line as Claude understands it</p></li><li><p>The exclusion conditions it will apply</p></li><li><p>The reconciliation checks it will integrate</p></li></ul><p>If the glossary says something unexpected you fix it before to move to dashboard construction. </p><p>This glossary then becomes a permanent tab in the generated dashboard. When a number is surprising, anyone on the team can open the Methodology tab and read exactly what was calculated and how. The dashboard becomes auditable without opening the code.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!nkHA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca220e22-30db-4576-b638-09118dc845ac_1532x401.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!nkHA!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca220e22-30db-4576-b638-09118dc845ac_1532x401.png 424w, /__u/substackcdn.com/image/fetch/$s_!nkHA!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca220e22-30db-4576-b638-09118dc845ac_1532x401.png 848w, /__u/substackcdn.com/image/fetch/$s_!nkHA!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca220e22-30db-4576-b638-09118dc845ac_1532x401.png 1272w, /__u/substackcdn.com/image/fetch/$s_!nkHA!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca220e22-30db-4576-b638-09118dc845ac_1532x401.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!nkHA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca220e22-30db-4576-b638-09118dc845ac_1532x401.png" width="725" height="189.71497252747253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca220e22-30db-4576-b638-09118dc845ac_1532x401.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:381,&quot;width&quot;:1456,&quot;resizeWidth&quot;:725,&quot;bytes&quot;:233633,&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://financeshift.substack.com/i/203417968?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca220e22-30db-4576-b638-09118dc845ac_1532x401.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!nkHA!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca220e22-30db-4576-b638-09118dc845ac_1532x401.png 424w, /__u/substackcdn.com/image/fetch/$s_!nkHA!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca220e22-30db-4576-b638-09118dc845ac_1532x401.png 848w, /__u/substackcdn.com/image/fetch/$s_!nkHA!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca220e22-30db-4576-b638-09118dc845ac_1532x401.png 1272w, /__u/substackcdn.com/image/fetch/$s_!nkHA!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca220e22-30db-4576-b638-09118dc845ac_1532x401.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div><hr></div><h2>4. Build the dashboard iteratively</h2><p>This is the only step that happens in conversation mode, not as a single prompt. Iterative means: one thing at a time, with validation at each step.</p><p>Start with a simple layout: KPI cards and one chart. Verify the numbers match your glossary. Add the next chart. Verify. Repeat.</p><p>This step-by-step approach lets you catch a discrepancy immediately, before it propagates to ten other indicators. You can also use existing skills to accelerate certain parts, and share screenshots of market tools or Excel files to guide the design.</p><p>At the end of each session, ask Claude to save your specification to memory in a structured way. This lets you resume the project from any specific point without starting from a blank page. The spec should never live only in conversation history.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!syhW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F420a42c9-9d76-4766-9199-a90375eb7ea8_1446x523.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!syhW!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F420a42c9-9d76-4766-9199-a90375eb7ea8_1446x523.png 424w, /__u/substackcdn.com/image/fetch/$s_!syhW!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F420a42c9-9d76-4766-9199-a90375eb7ea8_1446x523.png 848w, /__u/substackcdn.com/image/fetch/$s_!syhW!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F420a42c9-9d76-4766-9199-a90375eb7ea8_1446x523.png 1272w, /__u/substackcdn.com/image/fetch/$s_!syhW!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F420a42c9-9d76-4766-9199-a90375eb7ea8_1446x523.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!syhW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F420a42c9-9d76-4766-9199-a90375eb7ea8_1446x523.png" width="1446" height="523" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/420a42c9-9d76-4766-9199-a90375eb7ea8_1446x523.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:523,&quot;width&quot;:1446,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:240321,&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://financeshift.substack.com/i/203417968?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F420a42c9-9d76-4766-9199-a90375eb7ea8_1446x523.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!syhW!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F420a42c9-9d76-4766-9199-a90375eb7ea8_1446x523.png 424w, /__u/substackcdn.com/image/fetch/$s_!syhW!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F420a42c9-9d76-4766-9199-a90375eb7ea8_1446x523.png 848w, /__u/substackcdn.com/image/fetch/$s_!syhW!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F420a42c9-9d76-4766-9199-a90375eb7ea8_1446x523.png 1272w, /__u/substackcdn.com/image/fetch/$s_!syhW!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F420a42c9-9d76-4766-9199-a90375eb7ea8_1446x523.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><div><hr></div><h2>What this produces</h2><p>The dashboard becomes a commodity. The specification is the real work.</p><p>Once the dashboard is built and validated, you have two durable assets: the code itself, which encodes the rules precisely, and the incoming data documentation. These are the best specifications you can hand to an agent to rebuild or evolve the dashboard.</p><p>The foundational work, documenting the data, formalizing the metrics, validating the glossary, is documentation work. Once done, generating the dashboard becomes the simplest step in the process.</p><div><hr></div><p><em>Finance Shift is a newsletter on the intersection of finance and engineering. If this was useful, share it with someone who want to build its own. </em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://financeshift.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en-gb&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Finance Shift! 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[I applied Anthropic’s self-service analytics methodology to build a finance analytics agent.]]></title><description><![CDATA[Anthropic published an article on how they automated 95% of their internal analytics queries, with ~95% aggregate accuracy. It&#8217;s not the model that makes the difference. It&#8217;s the architecture.]]></description><link>https://financeshift.substack.com/p/i-applied-anthropics-self-service</link><guid isPermaLink="false">https://financeshift.substack.com/p/i-applied-anthropics-self-service</guid><dc:creator><![CDATA[Nolwenn Belliard]]></dc:creator><pubDate>Tue, 16 Jun 2026 15:06:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wQCH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20a5fb28-b1a9-41dd-ac4e-f9edcda63313_905x568.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p>I applied that framework to a concrete finance use case: FEC analysis, the &#8220;Fichier des &#201;critures Comptables&#8221;, the standardized accounting file every French company must produce for a tax audit. Standardized format, well-defined business scope, repetitive use, high need for reliability and traceability. A perfect case.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!wQCH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20a5fb28-b1a9-41dd-ac4e-f9edcda63313_905x568.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!wQCH!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20a5fb28-b1a9-41dd-ac4e-f9edcda63313_905x568.png 424w, /__u/substackcdn.com/image/fetch/$s_!wQCH!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20a5fb28-b1a9-41dd-ac4e-f9edcda63313_905x568.png 848w, /__u/substackcdn.com/image/fetch/$s_!wQCH!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20a5fb28-b1a9-41dd-ac4e-f9edcda63313_905x568.png 1272w, /__u/substackcdn.com/image/fetch/$s_!wQCH!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20a5fb28-b1a9-41dd-ac4e-f9edcda63313_905x568.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!wQCH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20a5fb28-b1a9-41dd-ac4e-f9edcda63313_905x568.png" width="905" height="568" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20a5fb28-b1a9-41dd-ac4e-f9edcda63313_905x568.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:568,&quot;width&quot;:905,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:145294,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://financeshift.substack.com/i/202293840?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20a5fb28-b1a9-41dd-ac4e-f9edcda63313_905x568.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!wQCH!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20a5fb28-b1a9-41dd-ac4e-f9edcda63313_905x568.png 424w, /__u/substackcdn.com/image/fetch/$s_!wQCH!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20a5fb28-b1a9-41dd-ac4e-f9edcda63313_905x568.png 848w, /__u/substackcdn.com/image/fetch/$s_!wQCH!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20a5fb28-b1a9-41dd-ac4e-f9edcda63313_905x568.png 1272w, /__u/substackcdn.com/image/fetch/$s_!wQCH!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20a5fb28-b1a9-41dd-ac4e-f9edcda63313_905x568.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><p></p><h2>The three failure modes every analytics agent runs into</h2><p>Anthropic identifies three root causes behind almost every wrong answer.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!X5KW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f4f9583-5169-483b-9ffb-ffc23f3d655d_1407x477.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!X5KW!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f4f9583-5169-483b-9ffb-ffc23f3d655d_1407x477.png 424w, /__u/substackcdn.com/image/fetch/$s_!X5KW!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f4f9583-5169-483b-9ffb-ffc23f3d655d_1407x477.png 848w, /__u/substackcdn.com/image/fetch/$s_!X5KW!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f4f9583-5169-483b-9ffb-ffc23f3d655d_1407x477.png 1272w, /__u/substackcdn.com/image/fetch/$s_!X5KW!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f4f9583-5169-483b-9ffb-ffc23f3d655d_1407x477.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!X5KW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f4f9583-5169-483b-9ffb-ffc23f3d655d_1407x477.png" width="1407" height="477" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f4f9583-5169-483b-9ffb-ffc23f3d655d_1407x477.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:477,&quot;width&quot;:1407,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:593264,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://financeshift.substack.com/i/202293840?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f4f9583-5169-483b-9ffb-ffc23f3d655d_1407x477.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!X5KW!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f4f9583-5169-483b-9ffb-ffc23f3d655d_1407x477.png 424w, /__u/substackcdn.com/image/fetch/$s_!X5KW!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f4f9583-5169-483b-9ffb-ffc23f3d655d_1407x477.png 848w, /__u/substackcdn.com/image/fetch/$s_!X5KW!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f4f9583-5169-483b-9ffb-ffc23f3d655d_1407x477.png 1272w, /__u/substackcdn.com/image/fetch/$s_!X5KW!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f4f9583-5169-483b-9ffb-ffc23f3d655d_1407x477.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg 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>Concept-entity ambiguity</strong></p><p>The model doesn&#8217;t know which field corresponds to the concept it&#8217;s been given. Without explicit answers, the agent guesses and often guesses wrong.</p><p><strong>Data staleness</strong></p><p>On the FEC, a concrete example: a company switches TVA regime mid-year, moving from standard to reduced rate on part of its revenue. Any pattern built before that change will silently misclassify those entries going forward. The agent keeps running, the numbers keep coming out, and nobody notices until someone checks manually.</p><p>Anthropic measured a drop from ~95% to ~65% accuracy within one month before treating maintenance as an engineering problem.</p><p><strong>Retrieval failure</strong></p><p>The right information exists in the data but the agent can&#8217;t find it and improvises.</p><p>On the FEC, it looks like this: the agent receives the question &#8220;which suppliers have late payments?&#8221; and without structure, it scans through all entries, hesitates between account types, confuses the relevant account classes, and produces an approximate or incorrect answer. The information was there. It didn&#8217;t know where to look.</p><p>You have to give a structured context, explicit routing, and validation at every step. It&#8217;s what we will see across the following method :</p><h2>The method: four layers</h2><h3>Layer 1 : Data foundations</h3><p>The prerequisite for everything else: the data must be in <strong>a computation engine queryable in SQL</strong>. An LLM doesn&#8217;t calculate.</p><p>For the FEC, I chose to load the entries into BigQuery with the official DGFiP schema: JournalCode, EcritureDate, CompteNum, D&#233;bit, Cr&#233;dit, Pi&#232;ceRef. One table, one source, one schema.</p><p>Anthropic&#8217;s core concept here is <strong>canonical datasets</strong>: one governed source per concept. On a FEC, that means one single entries table, not several coexisting partial exports. The more candidates exist, the higher the ambiguity risk.</p><h3>Layer 2 : Sources of truth</h3><p>Once the data is structured and validated, the agent needs the business expertise to interpret it correctly, not just the schema.</p><p><strong>This layer has two components</strong>. First, entity context qualification: sector and size are inferred upfront from the account structure. A weekend cash entry is abnormal in a consulting firm and perfectly normal in a restaurant. All alert thresholds are calibrated from this context before any query runs.</p><p>Second, the 7 reference domains that encode business expertise:</p><ul><li><p><code>validation</code> : structural integrity of the file</p></li><li><p><code>cash</code> : bank balances, cash low point, cash movements</p></li><li><p><code>performance</code> : revenue, expenses, margins, result</p></li><li><p><code>clients</code> : receivables, DSO, concentration, outstanding invoices</p></li><li><p><code>suppliers</code> : payables, DPO, LME compliance, late payments</p></li><li><p><code>anomaly</code> : atypical entries, round amounts, out-of-norm operations</p></li><li><p><code>compliance</code> : VAT, sequence gaps, atypical OD regularizations</p></li></ul><p>Each file encodes the business context, the analysis patterns with their explicit assumptions, and the gotchas specific to the French accounting context. Rather than letting the agent decide what DSO means, the <code>fec-clients</code> domain tells it exactly: which accounts are included, what&#8217;s excluded, how to handle outstanding credit notes.</p><h3>Layer 3 : Progressive disclosure</h3><p>Well-documented domains aren&#8217;t enough if the agent loads everything at once for every question. That&#8217;s the monolithic prompt problem: expensive, noisy, unreliable.</p><p>Anthropic&#8217;s solution is <strong>progressive disclosure</strong>: the agent loads only the context defined in Layer 2 that it needs, when it needs it.</p><p>For the FEC, I built a <strong>router</strong> that classifies each request before loading anything. Here&#8217;s what it looks like concretely:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!acIj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10d8dd90-7783-4c53-ac27-342509cfc5a1_1407x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!acIj!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10d8dd90-7783-4c53-ac27-342509cfc5a1_1407x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!acIj!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10d8dd90-7783-4c53-ac27-342509cfc5a1_1407x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!acIj!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10d8dd90-7783-4c53-ac27-342509cfc5a1_1407x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!acIj!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10d8dd90-7783-4c53-ac27-342509cfc5a1_1407x768.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!acIj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10d8dd90-7783-4c53-ac27-342509cfc5a1_1407x768.png" width="1407" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/10d8dd90-7783-4c53-ac27-342509cfc5a1_1407x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1407,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:687030,&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://financeshift.substack.com/i/202293840?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10d8dd90-7783-4c53-ac27-342509cfc5a1_1407x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!acIj!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10d8dd90-7783-4c53-ac27-342509cfc5a1_1407x768.png 424w, /__u/substackcdn.com/image/fetch/$s_!acIj!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10d8dd90-7783-4c53-ac27-342509cfc5a1_1407x768.png 848w, /__u/substackcdn.com/image/fetch/$s_!acIj!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10d8dd90-7783-4c53-ac27-342509cfc5a1_1407x768.png 1272w, /__u/substackcdn.com/image/fetch/$s_!acIj!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10d8dd90-7783-4c53-ac27-342509cfc5a1_1407x768.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>This is the direct answer to retrieval failure: the agent knows exactly where to look before it starts, within the context defined in Layer 2.</p><h3>Layer 4 : Validation</h3><p>This layer operates across three distinct levels :</p><ul><li><p><strong>Deterministic Quality Checks</strong></p><p>Mechanical verifications on produced results. These are not judgment calls fixed rules that run automatically:</p><ul><li><p>Does the calculated balance match what&#8217;s expected for this period?</p></li><li><p>Is the number of rows returned consistent with the entity&#8217;s size?</p></li></ul></li></ul><p>Exemple</p><ul><li><p><strong>&#931;D&#233;bit = &#931;Cr&#233;dit:</strong> if the file is unbalanced, everything stops. Analyzing a corrupted FEC is more dangerous than producing nothing.</p></li><li><p>Schema completeness: all required columns are present and correctly formatted.</p></li></ul><p>Here&#8217;s what the integrity check actually looks like:</p><pre><code><code>-- If this returns a row, the FEC is unbalanced.
-- The agent stops here. No analysis runs.

SELECT 
    ROUND(SUM(Debit) - SUM(Credit), 2) AS balance_gap
FROM {dataset}.{table}
    HAVING balance_gap &lt;&gt; 0
</code></code></pre><p>If this returns a row, everything stops. No partial report, no approximate results.</p><ul><li><p><strong>Adversarial Review</strong></p><p>An agent acting as <strong>LLM-as-judge</strong> receives the question, the SQL query produced, and the result, and actively challenges every element:</p><ul><li><p><strong>The review</strong> : Was the right filter applied? Is the denominator correct? Is there an interpretation bias?</p></li><li><p><strong>The impact</strong> : Anthropic measured +6% accuracy from this layer.</p></li><li><p><strong>The trade-off</strong> : For accounting analysis, the choice is straightforward: an undetected error in a financial report costs far more than a few extra seconds.</p></li></ul></li><li><p><strong>Auditability</strong></p><p>A figure without provenance is not usable in a professional context. Every result carries the full trace of how it was built:</p><ul><li><p>Domain &#183; Pattern &#183; Human readable SQL translation &#183; Filters &#183; SQL</p></li></ul></li></ul><h2>What this produces</h2><ul><li><p>An agent that takes a raw BigQuery dataset and generates a structured report across all 7 domains, with traceable figures, deterministic controls, adversarial review, and full provenance on every result.</p></li><li><p>Instant answer from the chat.</p></li></ul><h2>Why it&#8217;s replicable</h2><p>&#10024; <strong>The FEC is the application case. The method is generic.</strong></p><p>The four layers apply to any repetitive financial analysis: budget-versus-actual variance, multi-entity consolidation, cash flow forecasting, financial due diligence. The domain changes, the structure stays the same.</p><p>The question Anthropic&#8217;s article reframes isn&#8217;t &#8220;is the model good enough?&#8221; It&#8217;s &#8220;have I built the architecture that lets it be accurate?&#8221;</p><p>In most finance teams, the answer is no. Not from lack of skill. Because this architecture isn&#8217;t yet the norm.</p><p>It should be.</p><div><hr></div><p>If you want me to receive the skill send me a message !</p><div class="directMessage button" data-attrs="{&quot;userId&quot;:442685883,&quot;userName&quot;:&quot;Nolwenn Belliard&quot;,&quot;canDm&quot;:null,&quot;dmUpgradeOptions&quot;:null,&quot;isEditorNode&quot;:true}" data-component-name="DirectMessageToDOM"></div><div><hr></div><p><em>Finance Shift is a newsletter on the intersection of finance and engineering. If this was useful, share it with someone who still thinks the problem is the model.</em></p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://financeshift.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/financeshift.substack.com/subscribe"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Shift in finance roles: from task executor to system builder]]></title><description><![CDATA[Are you ready?]]></description><link>https://financeshift.substack.com/p/shift-in-finance-roles-from-task</link><guid isPermaLink="false">https://financeshift.substack.com/p/shift-in-finance-roles-from-task</guid><dc:creator><![CDATA[Nolwenn Belliard]]></dc:creator><pubDate>Thu, 04 Jun 2026 07:46:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LVUC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49a2e37a-dfda-4da7-b81e-466496b62d24_918x1064.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I was at a meetup last week and someone showed a demo that stuck with the audience.</p><p>Pennylane is great for accounting. But its P&amp;L analytics? Still pretty limited. So instead of waiting for the vendor to ship the feature, they pulled the data via API, mapped it in Excel, fed it to Claude, and built the dashboard they actually wanted. Revenue by category, margins, period comparisons, the view that doesn&#8217;t exist out of the box.</p><p>A few hours to prototype. No dedicated engineer, no BI tool, no extra subscription, just tokens.</p><p>Then a few more to make it reliable: clean definitions, access controls, and checks you can trust.</p><p>The data was always there. The decision was to stop waiting and start building.</p><p>That shift has a name: <strong>Finance Engineering</strong>.</p><p>This isn&#8217;t &#8220;more dashboards.&#8221; It&#8217;s finance teams upgrading the system that produces the numbers.</p><h2>The old model is breaking</h2><p>For most of finance history, the job was to execute with precision. Close the books. Reconcile the accounts. Report the numbers. Do it accurately, do it on time, do it again next month.</p><p>The tools changed: Excel replaced paper, ERPs replaced Excel, but the posture stayed the same. Finance was a consumer of systems built by others.</p><p>That model is breaking.</p><p>Not because finance teams are suddenly hiring engineers. But because the distance between &#8220;I see a problem&#8221; and &#8220;I built a solution&#8221; has collapsed. The same person who closes the books can now build the automation that speeds up the close. The same Controller who runs the reconciliation can build the agent that runs it for them.</p><p>The shift isn&#8217;t about coding. It&#8217;s about ownership. Finance is moving from executing processes to architecting systems.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="/__u/substackcdn.com/image/fetch/$s_!LVUC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49a2e37a-dfda-4da7-b81e-466496b62d24_918x1064.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="/__u/substackcdn.com/image/fetch/$s_!LVUC!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49a2e37a-dfda-4da7-b81e-466496b62d24_918x1064.png 424w, /__u/substackcdn.com/image/fetch/$s_!LVUC!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49a2e37a-dfda-4da7-b81e-466496b62d24_918x1064.png 848w, /__u/substackcdn.com/image/fetch/$s_!LVUC!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49a2e37a-dfda-4da7-b81e-466496b62d24_918x1064.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LVUC!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_webp, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49a2e37a-dfda-4da7-b81e-466496b62d24_918x1064.png 1456w" sizes="100vw"><img src="/__u/substackcdn.com/image/fetch/$s_!LVUC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49a2e37a-dfda-4da7-b81e-466496b62d24_918x1064.png" width="918" height="1064" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/49a2e37a-dfda-4da7-b81e-466496b62d24_918x1064.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1064,&quot;width&quot;:918,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1069668,&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://financeshift.substack.com/i/200579551?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49a2e37a-dfda-4da7-b81e-466496b62d24_918x1064.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="/__u/substackcdn.com/image/fetch/$s_!LVUC!, /__u/financeshift.substack.com/w_424, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49a2e37a-dfda-4da7-b81e-466496b62d24_918x1064.png 424w, /__u/substackcdn.com/image/fetch/$s_!LVUC!, /__u/financeshift.substack.com/w_848, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49a2e37a-dfda-4da7-b81e-466496b62d24_918x1064.png 848w, /__u/substackcdn.com/image/fetch/$s_!LVUC!, /__u/financeshift.substack.com/w_1272, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49a2e37a-dfda-4da7-b81e-466496b62d24_918x1064.png 1272w, /__u/substackcdn.com/image/fetch/$s_!LVUC!, /__u/financeshift.substack.com/w_1456, /__u/financeshift.substack.com/c_limit, /__u/financeshift.substack.com/f_auto, /__u/financeshift.substack.com/q_auto:good, /__u/financeshift.substack.com/fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49a2e37a-dfda-4da7-b81e-466496b62d24_918x1064.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><h2>What a system builder actually does</h2><p>Three things, concretely:</p><p><strong>Structure the data first.</strong> One source of truth. Clear definitions. Consistent mapping across ERP, CRM, payroll, banks. This sounds unglamorous until you&#8217;ve tried to run an AI on messy data and watched it confidently produce garbage. System builders fix the foundation before they build on top of it.</p><p><strong>Turn recurring work into workflows.</strong> Close tasks, reconciliations, approvals, controls, reporting. Everything that runs on a schedule and follows rules is a candidate for automation. Not because headcount needs to shrink but because the team&#8217;s time is worth more than chasing data. A workflow that runs reliably at 2am is better than a task that waits for Monday morning.</p><p><strong>Make AI useful and safe.</strong> Anyone can demo a spreadsheet agent. The system builder makes it production-grade: audit trails, controls baked into the architecture, logic versioned so it can be reviewed. They know the output has to survive an audit. So they build like it will.</p><h2>Why now</h2><p>For years, finance teams wanted to build. They saw the inefficiencies. They had the ideas. But every data pipeline, every API connection, every custom dashboard meant filing a ticket and waiting for engineering to have bandwidth.</p><p>That bottleneck is gone.</p><p>Tools like Claude Code and MCPs let you connect AI directly to your enterprise data. What used to take a sprint and an engineering team now takes a weekend and a terminal.</p><p>The structural barrier that held finance teams back is dissolving. The question now is who moves first.</p><h2>The five dimensions of the shift</h2><p>Not everyone makes this transition the same way. But I&#8217;ve noticed five dimensions that define how far along someone is:</p><p><strong>Data:</strong> Do you understand where a journal entry comes from, how it moves through integrations, where your ERP&#8217;s data model will fight you? This is the foundation. Weak here, nothing else holds.</p><p><strong>Build:</strong> Can you ship an automation into production? Not just prototype it, run it on real data with real consequences.</p><p><strong>Controls:</strong> If a machine is going to touch the ledger, discipline has to be baked in from day one. Audit trails. Versioned logic. Review steps that don&#8217;t disappear because the deadline moved up.</p><p><strong>Stack judgment:</strong> The teams that look smart in two years won&#8217;t be the ones that built the most. They&#8217;ll be the ones that built the right things and bought the rest from vendors who&#8217;ve already solved security and infrastructure at a depth no finance team should try to replicate.</p><p><strong>Accounting intelligence:</strong> You can&#8217;t automate what you don&#8217;t understand, and you can&#8217;t evaluate what an agent built if you wouldn&#8217;t know how to do it yourself. This is what keeps the whole system honest. A Finance Engineer is still, at their core, an accountant.</p><p>No one scores high across all five immediately. The strongest people I&#8217;ve seen are intentional about two or three, and clear-eyed about where they lean on their team or their vendors. Nobody masters all five at once. My strengths are data, controls, and stack. I&#8217;m still pushing on building and accounting.</p><h2>How to start</h2><p>Every Controller I&#8217;ve spoken to says the same thing: <strong>start with one problem you already hate.</strong></p><p>Not a moonshot. A specific, recurring pain that costs you two hours every week. Then try to automate it.</p><p>Use Claude. Connect to your ERP via MCP if you can. Write and compute into your data warehouse. Fail, break things, fix them.</p><p>And if you&#8217;re going to learn one technical concept: understand MCPs. They&#8217;re what connects AI to your actual systems. Once you&#8217;ve connected one, you&#8217;ll immediately see a dozen things you want to build.</p><h2>Why I&#8217;m building Finance Shift</h2><p>I&#8217;ve spent years at the intersection of finance and data. I co-founded Modern Data Network, 1000+ french data leaders, to help Data team to adopt modern data practices.I watched data teams go through the exact same transition finance is going through right now the moment when tools like dbt and Airbyte finally caught up to what data practitioners had always wanted to do: own the entire pipeline, version the logic, and ship without filing a ticket.</p><p>That moment happened fast. Faster than most people expected. But what accelerated it wasn&#8217;t just the tools, it was the community. People sharing what they built, what broke, what worked. The group leveled up together.</p><p>Finance is at that moment now.</p><p>Finance Shift exists because this transition deserves a real community. A place where CFOs, Controllers, FP&amp;A leads, and accountants share what they&#8217;re actually building, learn from each other&#8217;s mistakes, and figure out together what the profession is becoming.</p><p>Data is where I&#8217;ll spend most of my energy educating, because every system builder story I&#8217;ve heard starts the same way: someone finally got their data in order. Then everything else became possible.</p><p><em>If you&#8217;re making this shift, or trying to, Finance Shift is where that conversation is happening.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://financeshift.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/financeshift.substack.com/subscribe"><span>Subscribe now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://financeshift.substack.com/p/shift-in-finance-roles-from-task?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="/__u/financeshift.substack.com/p/shift-in-finance-roles-from-task?utm_source=substack&amp;utm_medium=email&amp;utm_content=share&amp;action=share"><span>Share</span></a></p><p></p>]]></content:encoded></item></channel></rss>