<?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[Wohlig Insights]]></title><description><![CDATA[Explore expert knowledge, trends, and strategies through blogs, case studies, and whitepapers. Empower your business with actionable insights, innovative solutions, and cutting-edge ideas to thrive in today’s ever-evolving digital landscape.]]></description><link>https://insights.wohlig.com</link><image><url>https://substackcdn.com/image/fetch/$s_!gi1N!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0422e5d-868a-41bf-832c-f87efe273344_400x400.png</url><title>Wohlig Insights</title><link>https://insights.wohlig.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 27 Jul 2026 17:03:11 GMT</lastBuildDate><atom:link href="https://insights.wohlig.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Wohlig Transformation Pvt. Ltd.]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[wohlig@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[wohlig@substack.com]]></itunes:email><itunes:name><![CDATA[Chintan Shah]]></itunes:name></itunes:owner><itunes:author><![CDATA[Chintan Shah]]></itunes:author><googleplay:owner><![CDATA[wohlig@substack.com]]></googleplay:owner><googleplay:email><![CDATA[wohlig@substack.com]]></googleplay:email><googleplay:author><![CDATA[Chintan Shah]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Persistent Memory: AI Systems That Remember, Compound, and Improve]]></title><description><![CDATA[Most enterprise AI systems reset to zero after every interaction.]]></description><link>https://insights.wohlig.com/p/persistent-memory-ai-systems-that</link><guid isPermaLink="false">https://insights.wohlig.com/p/persistent-memory-ai-systems-that</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Sun, 19 Jul 2026 14:11:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!sAQt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f3ef223-6ef6-41c5-8b92-5f5c0d55a276_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sAQt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f3ef223-6ef6-41c5-8b92-5f5c0d55a276_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sAQt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f3ef223-6ef6-41c5-8b92-5f5c0d55a276_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!sAQt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f3ef223-6ef6-41c5-8b92-5f5c0d55a276_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!sAQt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f3ef223-6ef6-41c5-8b92-5f5c0d55a276_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!sAQt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f3ef223-6ef6-41c5-8b92-5f5c0d55a276_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sAQt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f3ef223-6ef6-41c5-8b92-5f5c0d55a276_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f3ef223-6ef6-41c5-8b92-5f5c0d55a276_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1623570,&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://insights.wohlig.com/i/207662188?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f3ef223-6ef6-41c5-8b92-5f5c0d55a276_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sAQt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f3ef223-6ef6-41c5-8b92-5f5c0d55a276_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!sAQt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f3ef223-6ef6-41c5-8b92-5f5c0d55a276_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!sAQt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f3ef223-6ef6-41c5-8b92-5f5c0d55a276_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!sAQt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f3ef223-6ef6-41c5-8b92-5f5c0d55a276_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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>Most enterprise AI systems reset to zero after every interaction. They repeat the same mistakes indefinitely, because nothing they learn in one session survives into the next. The frontier trend in 2026 is the fix for exactly that: AI persistent memory &#8212; systems that record what happened, verify it into durable facts, distil those facts into reusable rules, and consult that knowledge the next time round.</p><p>This is self-improvement, and the crucial thing to understand about it is that it&#8217;s a property of the system, not the model.</p><h2>Self-learning is not self-improvement</h2><p>The two terms get used interchangeably, and the confusion is expensive. Self-learning means updating the model weights: retraining or fine-tuning so the underlying network changes. That&#8217;s slow, costly, hard to govern, and rarely what an enterprise actually needs. It also doesn&#8217;t explain how a system gets better between two runs of the same fixed model.</p><p>Self-improvement is different. Here the model stays constant, and the system around it compounds. The intelligence doesn&#8217;t live only in the weights; it lives in what the system has accumulated, written down, and can read back. A frozen model paired with a growing body of verified knowledge outperforms the same model working from a blank slate every time. The lesson for AI leaders is direct: you don&#8217;t have to touch the model to make the system smarter. You have to give it a memory.</p><h2>The memory progression: from failure to rule</h2><p>Persistent memory isn&#8217;t a transcript log. A dump of past conversations is noise, and feeding it back verbatim degrades performance rather than improving it. What compounds is a disciplined progression that turns raw experience into knowledge the system can trust.</p><p>The progression looks like this. First, the system records a failure or a notable event &#8212; something didn&#8217;t work, or worked in a surprising way. Second, it investigates the cause rather than reacting to the symptom. Third, it verifies the finding into a fact, confirming the cause is real and reproducible rather than a one-off coincidence. Fourth, it distils that fact into a rule &#8212; a compact, general statement of what to do or avoid. Fifth, and most important, it consults that rule the next time a similar situation arises.</p><p>Each stage filters signal from noise. A single failure is an anecdote. A verified fact is evidence. A distilled rule is reusable judgement. By the time knowledge reaches the rule stage, it&#8217;s small, general and safe to apply &#8212; which is exactly what keeps the accumulated memory from bloating into an unusable pile.</p><h2>Durable state: read at the start, written at the end</h2><p>For any of this to work, the system needs somewhere to keep what it knows between sessions, and a discipline for using it. We call this durable state: a persistent record of facts, rules and context that survives across runs.</p><p>The operating pattern is simple and strict. Durable state is read at the start of every task, so the system begins already knowing what it learned before, and it&#8217;s written at the end, so anything new is captured before the session closes. Without the read step, the system is amnesiac by default. Without the write step, hard-won lessons evaporate the moment the interaction ends. Getting both halves right is what separates a system that compounds from one that merely appears busy.</p><p>Durable state also needs structure and hygiene. It should be curated, deduplicated and pruned, because stale or contradictory entries actively mislead. Good memory isn&#8217;t the largest memory. It&#8217;s the most trustworthy.</p><h2>Reusable procedures and independent verification</h2><p>Facts and rules are the passive layer of memory. The active layer is reusable procedures: encoded, repeatable ways of doing recurring work, refined every time they run. When a system encounters a task it has solved well before, it shouldn&#8217;t reinvent the approach. It should retrieve the proven procedure, apply it, and improve it if the outcome suggests a better path. Over time the system builds a library of methods that get sharper with use &#8212; compounding in its most tangible form.</p><p>None of this is safe without independent verification. Memory that writes itself unchecked will confidently preserve its own mistakes, and a wrong rule consulted repeatedly is worse than no rule at all. So the promotion of a finding into a durable fact, and a fact into a rule, must be gated by a verification step separate from the step that produced it. The component that checks is not the component that acts. That separation is what keeps a self-improving system honest, and it&#8217;s the difference between compounding knowledge and compounding error.</p><p>Put these pieces together and the headline holds: self-improvement is a property of the system, not the model. The weights never changed. The system got better because it remembered, verified and reused.</p><h2>How Wohlig helps</h2><p>Wohlig Transformations is a Google Cloud transformation and AI partner. We design and build agentic AI systems that carry durable state across sessions, capture verified facts and rules, encode reusable procedures, and gate every promotion with independent verification &#8212; all engineered on Google Cloud so the system genuinely improves the longer it runs.</p><p>If your AI initiatives reset to zero after every interaction, we can help you build systems that remember and compound instead. <a href="https://wohlig.com/">Talk to Wohlig</a> about engineering persistent memory and self-improving AI on Google Cloud.</p>]]></content:encoded></item><item><title><![CDATA[The Paved Road: Building an Internal Developer Platform on Google Cloud]]></title><description><![CDATA[For years, the promise of DevOps was that developers would own their software from commit to production.]]></description><link>https://insights.wohlig.com/p/the-paved-road-building-an-internal</link><guid isPermaLink="false">https://insights.wohlig.com/p/the-paved-road-building-an-internal</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Sun, 19 Jul 2026 14:09:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wb58!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F271adab2-0a6a-42cd-8f27-bca829e92cde_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wb58!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F271adab2-0a6a-42cd-8f27-bca829e92cde_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wb58!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F271adab2-0a6a-42cd-8f27-bca829e92cde_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!wb58!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F271adab2-0a6a-42cd-8f27-bca829e92cde_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!wb58!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F271adab2-0a6a-42cd-8f27-bca829e92cde_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!wb58!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F271adab2-0a6a-42cd-8f27-bca829e92cde_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wb58!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F271adab2-0a6a-42cd-8f27-bca829e92cde_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/271adab2-0a6a-42cd-8f27-bca829e92cde_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1576349,&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://insights.wohlig.com/i/207662004?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F271adab2-0a6a-42cd-8f27-bca829e92cde_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wb58!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F271adab2-0a6a-42cd-8f27-bca829e92cde_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!wb58!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F271adab2-0a6a-42cd-8f27-bca829e92cde_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!wb58!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F271adab2-0a6a-42cd-8f27-bca829e92cde_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!wb58!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F271adab2-0a6a-42cd-8f27-bca829e92cde_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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>For years, the promise of DevOps was that developers would own their software from commit to production. In practice, many teams landed somewhere else: engineers who wanted to launch a service still filed tickets for a cluster, a database, a certificate, a network rule and a set of credentials, then waited days or weeks for each one. Every team reinvented its own pipelines, and the cognitive load moved onto developers rather than away from them.</p><p>Platform engineering is the response to that friction. Instead of expecting every engineer to become an infrastructure expert, a small platform team builds and operates an internal developer platform (IDP): a curated, opinionated layer of self-service capabilities the rest of the organisation consumes. The guiding metaphor is the paved road. You&#8217;re free to go off-road when you have a genuine reason, but the paved road is fast, well-lit and safe, so most teams choose it most of the time. That choice, made willingly and repeatedly, is what turns scattered best practices into consistent outcomes.</p><h2>What a paved road actually looks like</h2><p>An internal developer platform isn&#8217;t a single product you install. It&#8217;s a set of capabilities that work together to remove decisions and delays from the everyday path to production.</p><ul><li><p><strong>Golden-path templates.</strong> A developer starting a new service selects a template and gets a working, opinionated starting point: a service scaffold, a pipeline, health checks, logging and sensible defaults already wired in. The blank page disappears, and so do dozens of small, inconsistent decisions.</p></li><li><p><strong>Self-service, not ticket-service.</strong> Provisioning an environment, a database or a message queue happens through a portal or a command, governed by policy rather than by a human approver in the loop. The platform encodes what&#8217;s allowed, so approval is built in.</p></li><li><p><strong>One identity through single sign-on.</strong> Developers authenticate once, and that identity flows through the tools, environments and cloud resources they&#8217;re entitled to. Access is tied to roles and groups, which makes both onboarding and offboarding fast and auditable.</p></li><li><p><strong>Declarative desired state, reconciled automatically.</strong> Teams describe the state they want in version-controlled configuration, and the platform continuously reconciles the running system toward that state. The desired state is the source of truth, changes are reviewed like any other change, and drift is corrected without manual intervention.</p></li><li><p><strong>Quality gates.</strong> Automated checks for tests, code quality, vulnerabilities and policy compliance run on every change. Progression to production is earned by passing gates, not by informal sign-off.</p></li><li><p><strong>Zero-code observability.</strong> Logs, metrics and traces are collected by default, so a new service is observable the moment it runs, with no manual instrumentation required first.</p></li><li><p><strong>Security by default.</strong> Least-privilege access, managed secrets, encrypted data and hardened baselines are part of the template, not an afterthought bolted on before launch. Doing the secure thing is also the easy thing.</p></li></ul><p>The point of these capabilities isn&#8217;t control for its own sake. It&#8217;s to let a developer go from an idea to a running, observable, secure service in production without stopping to file a request or make a decision someone else has already made well.</p><h2>The developer experience, from idea to production</h2><p>Consider the difference in practice. Without a platform, launching a new service means requesting compute, negotiating network access, standing up a database, wiring credentials, building a pipeline and adding monitoring &#8212; each step often owned by a different team. With an internal developer platform, the same developer chooses a golden-path template, commits code, and the platform takes over: it builds and tests the artifact, runs it through quality and security gates, provisions the declared dependencies, deploys to the target environment, and turns on observability. The developer reviews a merge request and watches the change flow to production.</p><p>The experience is fast because the slow parts are automated, and safe because the guardrails are always on. Crucially, it&#8217;s self-service without being a free-for-all. The platform team decides what good looks like once, encodes it into templates and policy, and every team inherits it. When standards change, they change in one place and propagate outward. This is how platform engineering delivers speed and governance at once, rather than trading one for the other.</p><h2>How Wohlig builds internal developer platforms on Google Cloud</h2><p>Wohlig maps each capability to a managed Google Cloud service, so the platform team spends its time on developer experience rather than on undifferentiated operations.</p><ul><li><p><strong>Managed Kubernetes</strong> provides the runtime for containerised workloads, with autoscaling, hardened defaults and a consistent target for every golden-path template.</p></li><li><p><strong>Managed databases and managed secrets</strong> give teams production-grade data stores and a secure home for credentials, provisioned declaratively and accessed through identity rather than through shared passwords.</p></li><li><p><strong>CI/CD</strong> turns every change into a repeatable, gated journey from commit to deploy, so releases are routine rather than events.</p></li><li><p><strong>GitOps-style continuous delivery</strong> treats version-controlled declarative desired state as the single source of truth. The platform continuously reconciles the live environment toward that state, which makes deployments reviewable, repeatable and easy to roll back.</p></li><li><p><strong>Single sign-on and least-privilege access</strong> unify identity across the platform, and <strong>built-in observability</strong> makes every workload measurable from its first deployment.</p></li></ul><p>We start by understanding how your teams work today, where the friction and the ticket queues live, and what your compliance and security requirements demand. From there we design the golden paths, encode your standards into templates and policy, and build the platform incrementally &#8212; proving value on a first set of services before scaling across the organisation. The result is a paved road that reflects your context rather than a generic blueprint.</p><p>If your engineers are still waiting on infrastructure tickets, and your leaders are still choosing between speed and governance, an internal developer platform can give you both. <a href="https://wohlig.com/">Talk to Wohlig</a> about designing and building a paved road that helps your teams ship faster and more safely on Google Cloud.</p>]]></content:encoded></item><item><title><![CDATA[Data Readiness Is the Real AI Strategy]]></title><description><![CDATA[Most enterprise AI initiatives don&#8217;t fail because the model was too weak.]]></description><link>https://insights.wohlig.com/p/data-readiness-is-the-real-ai-strategy</link><guid isPermaLink="false">https://insights.wohlig.com/p/data-readiness-is-the-real-ai-strategy</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Sun, 19 Jul 2026 14:08:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GOaX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78d762d-4790-44c3-bb13-ee634069a378_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GOaX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78d762d-4790-44c3-bb13-ee634069a378_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GOaX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78d762d-4790-44c3-bb13-ee634069a378_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!GOaX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78d762d-4790-44c3-bb13-ee634069a378_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!GOaX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78d762d-4790-44c3-bb13-ee634069a378_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!GOaX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78d762d-4790-44c3-bb13-ee634069a378_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GOaX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78d762d-4790-44c3-bb13-ee634069a378_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e78d762d-4790-44c3-bb13-ee634069a378_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1661219,&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://insights.wohlig.com/i/207661946?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78d762d-4790-44c3-bb13-ee634069a378_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GOaX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78d762d-4790-44c3-bb13-ee634069a378_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!GOaX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78d762d-4790-44c3-bb13-ee634069a378_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!GOaX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78d762d-4790-44c3-bb13-ee634069a378_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!GOaX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe78d762d-4790-44c3-bb13-ee634069a378_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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>Most enterprise AI initiatives don&#8217;t fail because the model was too weak. They fail because the data feeding the model was never ready. A frontier model can reason brilliantly and still produce confident nonsense when the underlying tables are stale, duplicated, undocumented, or scattered across systems no one fully trusts.</p><p>This is why the conversation has shifted. Through 2026, Google Cloud and other industry leaders have consistently named data readiness and orchestration &#8212; not model choice &#8212; as the real competitive differentiator in enterprise AI. Models are increasingly commoditised and interchangeable. Your data estate is not. It&#8217;s the one asset your competitors can&#8217;t copy, and it&#8217;s also the one most likely to quietly sabotage your AI ambitions.</p><p>For CTOs and data leaders, the strategic question is no longer &#8220;which model should we use.&#8221; It&#8217;s &#8220;is our data ready to be used at all.&#8221;</p><h2>What enterprise data readiness actually means</h2><p>Data readiness isn&#8217;t a single dashboard or a one-time cleanup project. It&#8217;s a set of durable properties your data estate needs to hold, continuously, for AI and analytics to be trustworthy. Five of them matter most.</p><p><strong>Clean, layered models.</strong> Raw data should never be consumed directly by analytics or agents. A disciplined warehouse separates concerns into layers: a raw zone that preserves source data exactly as it arrived, a staging zone where data is cleaned, typed and standardised, and a curated marts layer that exposes business-ready tables with clear definitions. Layering makes transformations transparent, testable and reproducible.</p><p><strong>Freshness and quality checks.</strong> Ready data is data you can date. Every consumer should know how current a table is and whether it passed validation. Automated checks for nulls, duplicates, referential integrity and value ranges catch problems before they reach a model or an executive report.</p><p><strong>Governance and access control.</strong> Readiness includes knowing who can see what. Sensitive fields need to be protected at a granular level, and access needs to follow the principle of least privilege rather than blanket table permissions.</p><p><strong>Discoverability.</strong> If people can&#8217;t find a trusted dataset, they&#8217;ll rebuild it, badly. A catalogue with clear ownership, descriptions and business definitions turns a warehouse from a dumping ground into a usable product.</p><p><strong>Lineage.</strong> When a number looks wrong, you need to trace it back to its source. Lineage that maps how data flows from ingestion through every transformation is what makes debugging, auditing and compliance possible.</p><h2>Why readiness is the precondition for agents and analytics</h2><p>Agentic AI raises the stakes on all of this. A dashboard shows a human a number, and a thoughtful analyst can sanity-check it. An agent acts. It queries your data, reasons over it, and takes steps: drafting responses, triggering workflows, updating records. If the data it reads is wrong or the access it holds is too broad, the mistake propagates at machine speed.</p><p>That means the qualities above stop being nice-to-haves. Freshness determines whether an agent is acting on today&#8217;s reality or last quarter&#8217;s. Quality checks determine whether it inherits your data errors as facts. Access control determines whether an agent can be trusted with a query at all, or whether it might surface data a user was never permitted to see. Lineage determines whether you can explain and defend what the agent did after the fact.</p><p>In short, agents inherit every weakness in your data foundation and amplify it. Readiness is what keeps that amplification working in your favour.</p><h2>Common pitfalls that derail data readiness</h2><p>A few patterns show up again and again in enterprises that struggle:</p><ul><li><p><strong>Treating readiness as a project, not a practice.</strong> Teams do a heroic cleanup, declare victory, and watch quality decay because nothing enforces it going forward.</p></li><li><p><strong>Skipping the layered model.</strong> Pointing reports and agents straight at raw or lightly processed data feels faster but creates fragile, unexplainable pipelines.</p></li><li><p><strong>Governance bolted on last.</strong> Retrofitting access control and column-level security after data is already widely exposed is far harder than designing it in from the start.</p></li><li><p><strong>No single source of truth.</strong> When every team maintains its own definition of &#8220;active customer&#8221; or &#8220;revenue,&#8221; AI outputs become impossible to reconcile.</p></li><li><p><strong>Invisible data.</strong> Without a catalogue and lineage, institutional knowledge lives in a few people&#8217;s heads, and every new use case starts from zero.</p></li></ul><p>None of these are exotic. They&#8217;re the default state of a data estate that grew organically without a foundation designed for it.</p><h2>How Wohlig builds a foundation that makes AI work</h2><p>Wohlig Transformations is a Google Cloud transformation and AI partner. We treat data readiness as the groundwork for everything else we build &#8212; from agentic AI to analytics to internal developer platforms.</p><p>On Google Cloud, that foundation centers on BigQuery. We design a layered warehouse with a clear raw, staging and marts structure, so that source data is preserved, transformations are transparent, and business teams consume trusted, well-defined tables rather than raw feeds. We embed automated data quality checks into the pipeline so freshness and validation are continuous rather than occasional.</p><p>Governance is designed in from the beginning. We use IAM to enforce least-privilege access and column-level security to protect sensitive fields, so the right people and the right agents see only what they should. We build for discoverability and lineage, so datasets have clear owners and definitions and every number can be traced back to its source.</p><p>The result is a data estate where AI isn&#8217;t a gamble. When the foundation is clean, layered, governed and observable, agents and analytics have something solid to stand on, and the model finally becomes the easy part.</p><p>If your AI roadmap is outpacing your data foundation, that gap is where projects quietly stall. <a href="https://wohlig.com/">Talk to Wohlig</a> about assessing your enterprise data readiness and building the foundation your AI strategy actually depends on.</p>]]></content:encoded></item><item><title><![CDATA[The Self-Driving SOC: AI Agents in Security Operations]]></title><description><![CDATA[Ask any security operations leader what keeps their team up at night and, before they mention nation-state actors, they&#8217;ll mention volume.]]></description><link>https://insights.wohlig.com/p/the-self-driving-soc-ai-agents-in</link><guid isPermaLink="false">https://insights.wohlig.com/p/the-self-driving-soc-ai-agents-in</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Sun, 19 Jul 2026 14:07:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DTbY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdab312f2-0f8c-420a-850c-5cc89e53cfa2_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DTbY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdab312f2-0f8c-420a-850c-5cc89e53cfa2_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DTbY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdab312f2-0f8c-420a-850c-5cc89e53cfa2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!DTbY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdab312f2-0f8c-420a-850c-5cc89e53cfa2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!DTbY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdab312f2-0f8c-420a-850c-5cc89e53cfa2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!DTbY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdab312f2-0f8c-420a-850c-5cc89e53cfa2_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DTbY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdab312f2-0f8c-420a-850c-5cc89e53cfa2_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dab312f2-0f8c-420a-850c-5cc89e53cfa2_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1653718,&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://insights.wohlig.com/i/207661847?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdab312f2-0f8c-420a-850c-5cc89e53cfa2_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DTbY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdab312f2-0f8c-420a-850c-5cc89e53cfa2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!DTbY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdab312f2-0f8c-420a-850c-5cc89e53cfa2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!DTbY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdab312f2-0f8c-420a-850c-5cc89e53cfa2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!DTbY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdab312f2-0f8c-420a-850c-5cc89e53cfa2_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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>Ask any security operations leader what keeps their team up at night and, before they mention nation-state actors, they&#8217;ll mention volume. A modern enterprise security operations center (SOC) ingests signals from cloud workloads, endpoints, identity providers, network telemetry and dozens of SaaS tools. The result is a firehose of alerts, most of which are benign, duplicated or low priority.</p><p>In 2026, AI agents are starting to absorb the most repetitive part of that work &#8212; alert triage, enrichment and first-pass investigation &#8212; so human analysts can focus on the judgement calls that matter. But the model only works with strict guardrails: least-privilege read access, human approval for any response action, and a full audit trail.</p><h2>The alert fatigue problem is a people problem</h2><p>Alert fatigue is the predictable outcome of that firehose. When analysts triage hundreds of alerts a shift, attention degrades, real threats get buried in the noise, and the genuinely dangerous signal is more likely to be closed as routine. The cost isn&#8217;t only missed detections. It&#8217;s also burnout, high turnover in a role that&#8217;s already hard to hire for, and slower response when speed matters most.</p><p>The traditional answer was more tooling and more headcount. Neither scales cleanly. Tuning rules reduces some noise but introduces blind spots. Adding people is expensive and slow, and it still leaves skilled analysts doing work that&#8217;s beneath their expertise. This is the gap that AI security operations is built to close.</p><h2>What AI agents actually do in the SOC</h2><p>The useful framing isn&#8217;t that agents replace analysts. It&#8217;s that agents take the first, most repetitive pass so analysts start their work already informed. In practice, that breaks into three jobs.</p><p><strong>Triage.</strong> When an alert fires, an agent can classify it against context the analyst would otherwise gather by hand. Is this asset internet-facing? Is the identity involved privileged? Has this pattern fired a hundred times this week and always resolved as benign? The agent groups related alerts, deduplicates, and assigns a preliminary severity so the queue arrives sorted rather than raw.</p><p><strong>Enrichment.</strong> A raw alert is rarely enough to make a decision. An agent can pull the surrounding context automatically: recent activity for the user or service account, the reputation of an external IP, the configuration of the affected resource, and related events across other tools. What used to be twenty minutes of tab-switching becomes a structured summary attached to the alert.</p><p><strong>First-pass investigation.</strong> For well-understood alert types, an agent can follow the same investigative playbook a junior analyst would &#8212; querying logs, correlating timelines, and forming a hypothesis about whether the activity is malicious. It then hands the analyst a narrative: here&#8217;s what happened, here&#8217;s the evidence, here&#8217;s what I think, and here&#8217;s what I&#8217;m not sure about.</p><p>The through line is that the agent does the reading, gathering and drafting. The human does the deciding.</p><h2>Guardrails are not optional</h2><p>An AI agent with broad access to security systems is itself a serious risk. The value of AI security operations depends entirely on the guardrails around it. Four are mandatory.</p><p><strong>Least-privilege, read-only by default.</strong> Investigation requires reading logs and telemetry, not changing them. Agents should operate with narrowly scoped, governed read access to exactly the data sources their task needs, and nothing more. Access is granted per use case, reviewed, and revocable.</p><p><strong>Human approval for every response action.</strong> Reading is one thing. Acting is another. Isolating a host, disabling an account, or blocking an address can disrupt the business as much as an attacker can. Any response action must be proposed by the agent and approved by a human. The agent recommends, the analyst authorises, and that boundary is enforced by design, not by policy alone.</p><p><strong>Full audit and explainability.</strong> Every query an agent runs, every conclusion it reaches, and every action a human approves must be logged in a tamper-resistant record. When a decision is questioned later &#8212; whether in an incident review or a compliance audit &#8212; the team needs to reconstruct exactly what the agent saw and why it acted. An agent that can&#8217;t show its work doesn&#8217;t belong in the SOC.</p><p><strong>Bounded scope and continuous evaluation.</strong> Agents should be scoped to specific, well-defined tasks with clear success criteria, and their performance should be measured over time. False negatives and overconfident conclusions are tracked and corrected, and humans retain oversight of where and how agents are deployed.</p><p>Treat these as the price of admission. An agent that triages fast but can&#8217;t be governed is a liability, not an asset.</p><h2>Keeping humans in the loop, on purpose</h2><p>&#8220;Human in the loop&#8221; is easy to say and easy to hollow out. If analysts rubber-stamp every agent recommendation because the queue is still overwhelming, the guardrail is theatre. The design goal is to raise the quality of human attention, not just its speed.</p><p>That means agents should surface uncertainty honestly, flag the cases they&#8217;re least confident about, and escalate anything ambiguous rather than forcing a verdict. It means the most consequential decisions &#8212; confirming a breach, taking a production system offline, notifying stakeholders &#8212; always sit with a person who has the context and the authority. The agent compresses the routine so the human has room for the exceptional.</p><h2>How Wohlig helps</h2><p>Wohlig Transformations is a Google Cloud transformation and AI partner, and we build security operations automation the same way we build the rest of our agentic AI work: governed, auditable and human-directed.</p><p>On Google Cloud, we help enterprises bring together posture management, threat detection and vulnerability scanning, then layer agentic workflows on top for triage, enrichment and first-pass investigation. We design least-privilege access models so agents read only what they need, wire in mandatory human approval for response actions, and make the full audit trail a first-class part of the system rather than an afterthought. The outcome is a SOC where analysts spend their time on the calls that require judgement, and the repetitive work runs itself under a watchful eye.</p><p>If you&#8217;re a CISO or security leader looking to reduce alert fatigue without giving up control, <a href="https://wohlig.com/">talk to Wohlig</a> about building AI security operations on Google Cloud, with humans firmly in the loop.</p>]]></content:encoded></item><item><title><![CDATA[Talk to Your Data: Conversational Analytics on BigQuery]]></title><description><![CDATA[In most enterprises, a business question travels a long road before it becomes an answer.]]></description><link>https://insights.wohlig.com/p/talk-to-your-data-conversational</link><guid isPermaLink="false">https://insights.wohlig.com/p/talk-to-your-data-conversational</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Sun, 19 Jul 2026 14:07:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!a1Va!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409aefea-f233-4d1f-b8a5-1543d6609334_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a1Va!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409aefea-f233-4d1f-b8a5-1543d6609334_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a1Va!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409aefea-f233-4d1f-b8a5-1543d6609334_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!a1Va!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409aefea-f233-4d1f-b8a5-1543d6609334_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!a1Va!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409aefea-f233-4d1f-b8a5-1543d6609334_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!a1Va!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409aefea-f233-4d1f-b8a5-1543d6609334_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a1Va!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409aefea-f233-4d1f-b8a5-1543d6609334_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/409aefea-f233-4d1f-b8a5-1543d6609334_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1702388,&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://insights.wohlig.com/i/207661752?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409aefea-f233-4d1f-b8a5-1543d6609334_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!a1Va!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409aefea-f233-4d1f-b8a5-1543d6609334_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!a1Va!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409aefea-f233-4d1f-b8a5-1543d6609334_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!a1Va!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409aefea-f233-4d1f-b8a5-1543d6609334_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!a1Va!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409aefea-f233-4d1f-b8a5-1543d6609334_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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>In most enterprises, a business question travels a long road before it becomes an answer. A stakeholder asks something, an analyst joins a backlog, a dashboard gets scoped, and a week later a report lands that answers a question the business has already moved past. The friction isn&#8217;t the data warehouse itself &#8212; BigQuery scales beautifully. The friction is the queue of humans and tools that sit between the question and the query.</p><p>Conversational analytics removes most of that queue. Instead of standing up heavy BI infrastructure for every new line of inquiry, a person types a question the way they&#8217;d ask a colleague. An AI assistant interprets the intent, writes the SQL, runs it against BigQuery through a governed connector, and returns a live chart, table or interactive widget the person can read immediately. Follow-up questions refine the same thread, so exploration feels like a conversation rather than a series of tickets &#8212; and because the assistant queries through your existing IAM, column-level security and audit logging, you get the speed without loosening control.</p><h2>How conversational BI on BigQuery actually works</h2><p>The pattern has a few moving parts, and none of them ask you to move your data off Google Cloud.</p><p>At the front is a natural-language interface. Someone asks, &#8220;What was revenue by region last quarter, and how did that compare to the quarter before?&#8221; The assistant doesn&#8217;t guess at an answer. It translates the question into SQL grounded in your actual schema, table descriptions and business definitions.</p><p>Behind that sits a connector to BigQuery. The generated query runs as a real BigQuery job, using the caller&#8217;s identity and permissions. The assistant then takes the returned rows and renders them: a bar chart when a comparison is implied, a table when detail matters, or an interactive widget when someone will want to filter and drill down. Because everything happens in one turn, the person can immediately ask the next question, and the assistant carries the context forward.</p><p>The key design principle is that the AI writes and executes queries, but it doesn&#8217;t become a new, ungoverned door into your data. It queries through the same controls you already trust.</p><h2>Governance is the feature, not an afterthought</h2><p>For a CTO or data leader, the first question isn&#8217;t &#8220;Can it answer?&#8221; It&#8217;s &#8220;Can it answer safely?&#8221; Conversational analytics done properly leans on the governance primitives Google Cloud already provides, rather than inventing a parallel security model.</p><p>Identity and access management decides what each person can query. When the assistant runs a query, it runs under a governed identity mapped to the requester, so someone who can&#8217;t see a dataset in BigQuery can&#8217;t see it through the assistant either. Access doesn&#8217;t widen simply because the interface changed.</p><p>Column-level security and data masking mean sensitive fields stay protected regardless of how a question is phrased. If a column is restricted, the assistant can&#8217;t surface it, and no clever prompt reroutes around the policy &#8212; because the policy lives in BigQuery, not in the chat layer.</p><p>Auditability closes the loop. Every query the assistant runs is a logged BigQuery job, visible in Cloud Audit Logs like any other. You can review what was asked, what SQL ran, who it ran as, and what it touched. That record is what turns a convenient tool into one your security and compliance teams can sign off on.</p><h2>The layered data model that makes answers trustworthy</h2><p>Conversational answers are only as good as the data model underneath them. Pointing an AI assistant at raw, inconsistent tables produces fast answers that are quietly wrong. A layered model prevents that.</p><p>The raw layer holds source data as ingested, unchanged, so you always have fidelity to the system of record. The staging layer cleans and standardises: consistent types, deduplicated records, normalised keys and shared naming. The marts layer, or curated layer, shapes data into business-ready models where metrics like revenue, active users or margin are defined once and defined consistently.</p><p>Conversational analytics should query the curated layer by default. When &#8220;revenue&#8221; has a single agreed definition in a mart, every question that mentions revenue resolves to the same logic, whoever asks. This is what keeps two people from getting two different numbers for the same question &#8212; the fastest way to lose trust in any analytics tool. The layered model also gives the assistant clean, well-described tables to reason over, which improves the accuracy of the SQL it generates.</p><h2>Why this collapses time-to-insight</h2><p>The gain isn&#8217;t only speed, though the speed is real. When a self-serve question no longer needs an analyst in the loop, the analyst is freed for the deeper work that genuinely needs a human: modelling, investigation, and building the curated layer everything else depends on. Routine questions get answered in the moment, and complex ones get better attention.</p><p>Adoption widens too. People who would never open a SQL console will ask a question in plain language. That pulls more of the organisation into evidence-based decisions without adding headcount to the data team. And because every answer is governed and audited, broader access doesn&#8217;t translate into broader risk.</p><h2>How Wohlig helps</h2><p>Wohlig Transformations is a Google Cloud transformation and AI partner. We design and build conversational analytics on BigQuery end to end: the layered data model from raw to staging to marts, the governed connector that respects your IAM and column-level security, the audit trail your compliance team needs, and the agentic AI layer that turns plain-language questions into trustworthy, live results.</p><p>If your teams are waiting in report queues while your data warehouse sits underused, let us show you what conversational BI on BigQuery looks like in your environment. <a href="https://wohlig.com/">Reach out to Wohlig</a> to scope a path from question to insight that your data leaders can stand behind.</p>]]></content:encoded></item><item><title><![CDATA[AI Governance Is the New Moat: How Governed Teams Ship More AI to Production]]></title><description><![CDATA[For most of the last two years, the story of enterprise AI has been a story of stalled pilots &#8212; impressive demos that never survived contact with a security review, a compliance question, or a production incident.]]></description><link>https://insights.wohlig.com/p/ai-governance-is-the-new-moat-how</link><guid isPermaLink="false">https://insights.wohlig.com/p/ai-governance-is-the-new-moat-how</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Sun, 19 Jul 2026 14:05:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WDre!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c196910-1da0-42c6-9f54-0d8950053d15_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WDre!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c196910-1da0-42c6-9f54-0d8950053d15_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WDre!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c196910-1da0-42c6-9f54-0d8950053d15_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!WDre!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c196910-1da0-42c6-9f54-0d8950053d15_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!WDre!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c196910-1da0-42c6-9f54-0d8950053d15_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!WDre!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c196910-1da0-42c6-9f54-0d8950053d15_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WDre!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c196910-1da0-42c6-9f54-0d8950053d15_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c196910-1da0-42c6-9f54-0d8950053d15_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1684221,&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://insights.wohlig.com/i/207661623?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c196910-1da0-42c6-9f54-0d8950053d15_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WDre!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c196910-1da0-42c6-9f54-0d8950053d15_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!WDre!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c196910-1da0-42c6-9f54-0d8950053d15_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!WDre!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c196910-1da0-42c6-9f54-0d8950053d15_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!WDre!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c196910-1da0-42c6-9f54-0d8950053d15_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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>For most of the last two years, the story of enterprise AI has been a story of stalled pilots &#8212; impressive demos that never survived contact with a security review, a compliance question, or a production incident. The prototypes were never the problem. The path to production was.</p><p>What changed in 2026 is that governance and security tooling saw the biggest usage uptick across the AI stack, and it&#8217;s no coincidence that organisations with strong governance get many times more AI projects into production. Governance isn&#8217;t a brake on delivery &#8212; it&#8217;s the guardrail system that lets teams move fast without fear.</p><h2>The counterintuitive truth: governance ships more AI</h2><p>Leading teams stopped treating governance as the thing you bolt on after the model works. They treat it as the thing that makes shipping possible at all. When every AI action is identity-aware, auditable and bounded by clear guardrails, the risk conversation moves from &#8220;should we allow this&#8221; to &#8220;here&#8217;s exactly what it can and cannot do.&#8221; That shift is what unblocks approvals. Governed teams don&#8217;t ask for permission to experiment &#8212; they&#8217;ve already answered the questions that used to freeze a project for months.</p><p>The moat isn&#8217;t the model. Frontier models are increasingly a commodity available to everyone. The durable advantage belongs to the organisations that can safely put those models to work on real data, in real workflows, at scale. Governance is what turns a capable model into a trustworthy system, and trust is what production requires.</p><h2>What governance actually looks like in practice</h2><p>Governance is often discussed as an abstraction. In a working AI platform it&#8217;s a set of concrete, engineered controls.</p><p><strong>Identity and least-privilege access.</strong> Every agent, service and workflow runs as a known identity with the narrowest permissions it needs, and nothing more. An AI assistant that reads support tickets shouldn&#8217;t hold the credentials to modify billing records. Scoping access by identity is the single most effective way to contain the blast radius of a mistake or a compromised prompt.</p><p><strong>Human-in-the-loop for high-risk actions.</strong> Not every action should be autonomous. Governance defines which operations require a human to review and approve before execution: issuing a refund, sending an external communication, changing a production configuration. The system proposes, a person disposes, and the boundary between the two is explicit rather than accidental.</p><p><strong>Guardrails on destructive operations.</strong> Certain actions are irreversible or costly, and a governed system treats them differently. Deletes, bulk updates and spend-incurring calls sit behind policy checks, rate limits and confirmation steps. The goal isn&#8217;t to prevent the AI from acting, but to ensure it can&#8217;t act catastrophically.</p><p><strong>Audit trails.</strong> Every decision, input, tool call and output is logged in a way that can be reconstructed later. When a regulator, an auditor or an incident reviewer asks what happened and why, a governed system can answer with evidence rather than speculation.</p><p><strong>Evaluations and observability.</strong> Governance extends to quality. Systematic evaluations measure whether an AI system is accurate, safe and on-task before and after it ships. Observability then tracks quality, latency and cost in production, so degradation is caught early rather than discovered through a customer complaint.</p><p>Each of these controls does double duty. It reduces risk, and it produces the evidence that shortens every future approval.</p><h2>Why guardrails make teams faster, not slower</h2><p>The intuition that governance slows delivery comes from a world where controls were manual, inconsistent and applied late. In that world, governance really was friction: a spreadsheet of open questions, a security review that started from zero every time, a compliance sign-off no one could predict.</p><p>Engineered governance inverts that. When least-privilege access, human-in-the-loop checkpoints and audit logging are built into the platform, they apply automatically to every new use case. A team launching its fifth AI workflow inherits the controls that were proven on the first four. The approval that took three months for the pilot takes days for the next project, because the hard questions have standard answers.</p><p>This is the same lesson the industry learned with continuous integration and automated testing. Teams that invested in the harness shipped more, not less, because they could change things confidently. Governance is that harness for AI. It converts one-off anxiety into repeatable process, and repeatable process is what lets an organisation say yes to the next idea instead of stalling on it.</p><h2>Governance is non-negotiable in regulated industries</h2><p>For enterprises in financial services, healthcare, insurance and the public sector, the case is even sharper. These organisations don&#8217;t have the option of shipping AI they can&#8217;t explain, audit or control. Data residency, access controls and record-keeping aren&#8217;t preferences &#8212; they&#8217;re legal obligations.</p><p>For these teams, governance is the difference between an AI program that reaches production and one that never leaves the lab. The controls that skeptics see as overhead are precisely what allow a bank or a hospital to deploy AI at all. Built well, governance doesn&#8217;t just satisfy the auditor. It gives the business the confidence to use AI where it matters most &#8212; on the sensitive workflows that create the most value.</p><h2>How Wohlig helps</h2><p>Wohlig Transformations is a Google Cloud transformation and AI partner. We build cloud platforms, agentic AI, data and BI systems, and internal developer platforms for enterprises on GCP &#8212; and we build them to be governed from day one.</p><p>That means identity-aware, least-privilege access for every agent and service, human-in-the-loop approval for high-risk actions, guardrails around destructive and costly operations, complete audit trails, structured evaluations, and production observability of AI quality and cost. We design these controls as part of the platform, not as an afterthought, so your teams inherit governance automatically and ship faster with each new use case.</p><p>If you want to move from stalled pilots to AI that runs confidently in production &#8212; especially in a regulated environment &#8212; we&#8217;d like to help. <a href="https://wohlig.com/">Talk to Wohlig</a> about building governed AI on Google Cloud, and turn governance into your durable advantage.</p>]]></content:encoded></item><item><title><![CDATA[Taming the Token Bill: Engineering Cost-Efficient Agentic AI]]></title><description><![CDATA[Something changed when enterprises moved from single-prompt AI features to genuine agents.]]></description><link>https://insights.wohlig.com/p/taming-the-token-bill-engineering</link><guid isPermaLink="false">https://insights.wohlig.com/p/taming-the-token-bill-engineering</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Sun, 19 Jul 2026 14:04:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_TQ5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ca5a20-0452-428e-954a-5dffadd5b712_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_TQ5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ca5a20-0452-428e-954a-5dffadd5b712_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_TQ5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ca5a20-0452-428e-954a-5dffadd5b712_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!_TQ5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ca5a20-0452-428e-954a-5dffadd5b712_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!_TQ5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ca5a20-0452-428e-954a-5dffadd5b712_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!_TQ5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ca5a20-0452-428e-954a-5dffadd5b712_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_TQ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ca5a20-0452-428e-954a-5dffadd5b712_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99ca5a20-0452-428e-954a-5dffadd5b712_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1656657,&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://insights.wohlig.com/i/207661490?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ca5a20-0452-428e-954a-5dffadd5b712_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_TQ5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ca5a20-0452-428e-954a-5dffadd5b712_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!_TQ5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ca5a20-0452-428e-954a-5dffadd5b712_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!_TQ5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ca5a20-0452-428e-954a-5dffadd5b712_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!_TQ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99ca5a20-0452-428e-954a-5dffadd5b712_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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>Something changed when enterprises moved from single-prompt AI features to genuine agents. A chatbot answers once. An agent reasons, calls tools, reflects on the result, calls more tools, and loops until it reaches a goal. Each of those steps is a model invocation, and each invocation carries the full weight of accumulated context. A task that looks like one user request can quietly become dozens of model calls.</p><p>Through 2026 this produced a recognisable pattern that engineers started calling &#8220;tokenmaxxing&#8221;: teams shipping agents that worked beautifully in a demo, then watching monthly spend climb far past forecast once real traffic arrived. The culprit was rarely a single expensive call. It was volume, redundancy, and the habit of routing every step &#8212; however trivial &#8212; to the most capable and most expensive model available.</p><p>The good news is that AI cost optimisation is now a well-understood engineering problem. Costs don&#8217;t spiral because agents are inherently expensive; they spiral because most systems are built without the controls that make cost predictable. The fix is engineering, not restraint. Here&#8217;s how we design those controls.</p><h2>Tiered model routing: match the model to the job</h2><p>The single largest lever is refusing to use one model for everything. Agentic workflows contain a mix of tasks with wildly different difficulty, and paying premium rates for easy work is where budgets quietly bleed.</p><p>A well-architected agent uses a tiered approach. A heavyweight model acts as the orchestrator: it handles planning, decomposition, and the hard reasoning that genuinely needs frontier capability. Lighter, faster models act as workers, executing the well-defined subtasks the orchestrator hands down &#8212; extraction, summarisation, formatting, or straightforward tool calls. And small, inexpensive models act as graders and routers, classifying intent, checking whether an answer meets a bar, or deciding which path a request should take.</p><p>This isn&#8217;t a compromise on quality. Most subtasks in a real workflow don&#8217;t require the strongest model, and using a smaller one often makes them faster as well as cheaper. The orchestrator spends its budget where reasoning is scarce, and the rest of the system runs lean. On Google Cloud, the Vertex AI model families make this practical: you can select the right Gemini tier per task and keep them behind a consistent interface.</p><h2>An AI gateway: quotas, budgets and a single control point</h2><p>You can&#8217;t govern what every service calls independently. When each team wires its own model calls directly, there&#8217;s no place to enforce a limit, no shared view of spend, and no way to react when something goes wrong.</p><p>An AI gateway solves this by routing all model traffic through one managed layer, and that layer becomes where policy lives. It enforces per-team and per-application quotas so a single misbehaving loop can&#8217;t consume a quarter&#8217;s budget overnight. It applies budget thresholds that trigger alerts, throttling or graceful degradation before an invoice becomes a crisis. And it centralises authentication and model selection, so upgrading or swapping a model is a configuration change rather than a code migration across dozens of services.</p><p>On Google Cloud, we build these gateways using Apigee and Cloud Run, integrated with Vertex AI, so that governance, rate limiting and budget enforcement sit in front of every agent. The gateway also becomes the natural home for the next two practices: caching and observability.</p><h2>Caching and right-sizing: stop paying twice</h2><p>A large share of agentic token spend is pure repetition. Agents re-send the same system instructions, the same tool definitions and the same reference context on every call in a loop, and they regenerate answers to questions that were answered minutes ago.</p><p>Two techniques address this directly. Prompt and context caching lets the model reuse the stable portion of a prompt instead of reprocessing it every time, which cuts both cost and latency on the long, unchanging preamble that dominates many agent calls. Response caching, keyed on semantically similar requests, means common queries are served without a model call at all.</p><p>Right-sizing is the discipline that surrounds this. It means trimming context to what a step actually needs rather than passing the entire history forward, setting sensible output limits so the model doesn&#8217;t ramble, and capping the number of reasoning iterations an agent may take before it must return or escalate. Much of the worst spend comes from unbounded loops and bloated context windows, and both are preventable with deliberate limits.</p><h2>Observe cost per feature, not just per month</h2><p>The invoice at the end of the month tells you that you spent too much. It doesn&#8217;t tell you where, why, or whether the spend was worth it. Without granular attribution, every optimisation is guesswork.</p><p>Cost-efficient AI requires observability that ties spend to meaning. That means instrumenting every model call with the feature it served, the team that owns it, the model tier it used, and the token counts it consumed. With that data flowing into your telemetry, cost becomes a first-class metric alongside latency and error rate. You can see cost per feature, cost per user session and cost per completed task &#8212; and watch those numbers move as you tune the system.</p><p>On Google Cloud, we route this telemetry into Cloud Logging and BigQuery, then surface it in dashboards that engineering and finance can read together. That shared view turns AI cost optimisation from an occasional fire drill into a continuous practice, and it lets leaders make honest decisions about which agentic features earn their keep.</p><h2>How Wohlig helps</h2><p>Wohlig Transformations is a Google Cloud transformation and AI partner. We build agentic AI, cloud platforms, data and BI systems, and internal developer platforms for enterprises &#8212; and we design them to be economically sustainable from the start. That means tiered model routing on Vertex AI, an AI gateway built on Apigee and Cloud Run for quotas and budgets, caching and right-sizing baked into the architecture, and cost observability wired into BigQuery so you always know what your agents cost and why.</p><p>If your agent bills are outrunning your forecasts, or you want to launch agentic capabilities without that risk, we can help you engineer for both capability and cost. <a href="https://wohlig.com/">Reach out to Wohlig</a> to design cost-efficient agentic AI on Google Cloud that stays viable as you scale.</p>]]></content:encoded></item><item><title><![CDATA[MCP: The Connective Tissue Between AI and Your Enterprise Systems]]></title><description><![CDATA[For most of the last few years, connecting an AI model to a real system meant writing a custom integration.]]></description><link>https://insights.wohlig.com/p/mcp-the-connective-tissue-between</link><guid isPermaLink="false">https://insights.wohlig.com/p/mcp-the-connective-tissue-between</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Sun, 19 Jul 2026 14:03:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2Ibc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a877eed-f906-4485-974e-44b29e71c42e_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2Ibc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a877eed-f906-4485-974e-44b29e71c42e_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Ibc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a877eed-f906-4485-974e-44b29e71c42e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!2Ibc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a877eed-f906-4485-974e-44b29e71c42e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!2Ibc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a877eed-f906-4485-974e-44b29e71c42e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!2Ibc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a877eed-f906-4485-974e-44b29e71c42e_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Ibc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a877eed-f906-4485-974e-44b29e71c42e_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8a877eed-f906-4485-974e-44b29e71c42e_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1743600,&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://insights.wohlig.com/i/207661345?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a877eed-f906-4485-974e-44b29e71c42e_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2Ibc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a877eed-f906-4485-974e-44b29e71c42e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!2Ibc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a877eed-f906-4485-974e-44b29e71c42e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!2Ibc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a877eed-f906-4485-974e-44b29e71c42e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!2Ibc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8a877eed-f906-4485-974e-44b29e71c42e_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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>For most of the last few years, connecting an AI model to a real system meant writing a custom integration. Every data warehouse, ticketing tool and internal API needed its own glue code, its own auth handling and its own quirks. That work didn&#8217;t compose: a connector built for one model or agent framework rarely transferred to the next.</p><p>The Model Context Protocol (MCP) changes the shape of that problem. It&#8217;s a standard interface that lets AI models talk to your tools, data and systems without bespoke integration for each one. In 2026 it&#8217;s emerging as the default plumbing for enterprise agents &#8212; and the organisations getting value from it treat it as a governed capability, not a science project.</p><h2>What the Model Context Protocol actually is</h2><p>At its simplest, MCP is a standard interface between models and tools. Instead of hand-wiring each model to each system, you expose your systems as MCP servers that describe what they can do in a consistent way. Any MCP-aware client &#8212; an assistant, an agent, or an orchestration layer &#8212; can then discover those capabilities and use them through the same protocol.</p><p>Think of it as a common port that every tool can plug into. The model doesn&#8217;t need to know the internals of your data warehouse or your infrastructure APIs. It only needs to know that a tool exists, what it accepts and what it returns. That separation is why MCP has moved so quickly from an interesting idea to something enterprise teams now ask for by name.</p><h2>Why standardisation matters more than any single tool</h2><p>Standards are rarely exciting on their own, but they&#8217;re what turn scattered capability into leverage. Before a common protocol, every new AI use case carried an integration tax. Teams rebuilt the same connections in slightly different ways, and each rebuild added surface area to maintain and secure.</p><p>A shared protocol collapses that cost. When your systems speak MCP, a tool you expose once becomes available to every agent and assistant that follows the standard. You build a connection to your data warehouse a single time, and it works across use cases you haven&#8217;t even scoped yet.</p><p>For engineering leaders, the practical benefit is reuse: your investment in connecting a system compounds instead of resetting with each new model or framework. For CTOs, the strategic benefit is optionality. Standardised interfaces reduce the cost of switching models or adding new agent capabilities, which keeps you from being locked into a single vendor&#8217;s roadmap.</p><h2>Governance and least-privilege scoping</h2><p>The moment an AI agent can call real tools, it can also take real actions &#8212; and that raises the questions your security and compliance teams will ask first. What can this agent see? What can it change? And how do you prove it later?</p><p>MCP makes those questions answerable because it gives you a clear boundary to govern. Every tool an agent can reach passes through a defined interface, which is exactly the place to apply controls. The right posture is least privilege: an agent should have access only to the specific tools and scopes its task requires, and nothing more. A support agent that files tickets doesn&#8217;t need write access to production infrastructure. A reporting agent that reads the data warehouse doesn&#8217;t need permission to delete anything.</p><p>Practical governance of an MCP estate rests on a few disciplines. Curate a catalogue of approved tools rather than letting connections proliferate ad hoc. Scope credentials tightly and tie them to identity, so actions are attributable. Log every tool call for audit. And separate read-only capabilities from those that mutate state, so the higher-risk actions carry stronger controls and, where appropriate, human approval. These are the same principles that govern any privileged system, applied to a new kind of caller.</p><h2>Real enterprise use cases</h2><p>The value of MCP becomes concrete in the everyday work it unlocks. A few patterns show up repeatedly across enterprises.</p><p><strong>Talk to the data warehouse.</strong> Instead of routing every analytical question through a queue of analysts, teams can ask in natural language and let a governed agent translate that into queries against approved datasets. The agent reads through a scoped, read-only interface and never touches data it shouldn&#8217;t see.</p><p><strong>Inspect infrastructure.</strong> Engineers can ask an agent to check the health of a service, summarise recent changes, or surface the state of a deployment. The agent reads from monitoring and infrastructure systems through MCP tools deliberately limited to observation, keeping diagnosis fast and safe.</p><p><strong>File and update tasks.</strong> When an agent identifies an issue or completes a step, it can create a ticket, update a task, or notify the right channel &#8212; closing the loop between insight and action without a human retyping what the agent already knows.</p><p>What ties these together is that the model provides the reasoning while MCP provides the reach. The intelligence decides what to do, and the protocol gives it a safe, standard way to do it inside your systems.</p><h2>How Wohlig wires governed MCP on Google Cloud</h2><p>Getting to this outcome is less about the protocol itself and more about the discipline around it &#8212; and that&#8217;s the work Wohlig does. We help enterprises design and operate governed MCP tool catalogues on Google Cloud, so your agents can act across your systems with the controls your organisation requires.</p><p>In practice, that means identifying the tools worth exposing, wrapping your data platforms, infrastructure and operational systems as well-scoped MCP servers, and building the identity, permissioning and audit layers around them. We enforce least privilege by default and make every action observable. Because we build natively on Google Cloud, this fits alongside the data platforms, security posture and developer tooling you already run there.</p><p>If you&#8217;re ready to move from AI demos to agents that do useful, governed work, a governed MCP tool catalogue is the foundation. <a href="https://wohlig.com/">Talk to Wohlig</a> about designing yours on Google Cloud.</p>]]></content:encoded></item><item><title><![CDATA[The Agent Harness: Why Teams of Specialized AI Agents Beat One Big Model]]></title><description><![CDATA[For a while, the answer to every hard AI problem was the same: use a bigger model with a longer context window and put everything into a single prompt.]]></description><link>https://insights.wohlig.com/p/the-agent-harness-why-teams-of-specialized</link><guid isPermaLink="false">https://insights.wohlig.com/p/the-agent-harness-why-teams-of-specialized</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Sun, 19 Jul 2026 14:02:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pyCn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab0a3bb-c948-4b92-8661-e4111445e7fb_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pyCn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab0a3bb-c948-4b92-8661-e4111445e7fb_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pyCn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab0a3bb-c948-4b92-8661-e4111445e7fb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!pyCn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab0a3bb-c948-4b92-8661-e4111445e7fb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!pyCn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab0a3bb-c948-4b92-8661-e4111445e7fb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!pyCn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab0a3bb-c948-4b92-8661-e4111445e7fb_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pyCn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab0a3bb-c948-4b92-8661-e4111445e7fb_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ab0a3bb-c948-4b92-8661-e4111445e7fb_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1713153,&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://insights.wohlig.com/i/207661241?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab0a3bb-c948-4b92-8661-e4111445e7fb_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pyCn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab0a3bb-c948-4b92-8661-e4111445e7fb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!pyCn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab0a3bb-c948-4b92-8661-e4111445e7fb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!pyCn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab0a3bb-c948-4b92-8661-e4111445e7fb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!pyCn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab0a3bb-c948-4b92-8661-e4111445e7fb_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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>For a while, the answer to every hard AI problem was the same: use a bigger model with a longer context window and put everything into a single prompt. It&#8217;s an appealing idea, because it&#8217;s simple. In practice, it runs into ceilings that no amount of extra tokens fully removes &#8212; attention degrades, reasoning drifts, and failures are hard to isolate.</p><p>Multi-agent systems take a different approach. They split the work across specialised agents coordinated by an orchestration layer known as an agent harness. In 2026, that harness &#8212; rather than the model itself &#8212; is becoming the center of gravity in agentic AI, because it&#8217;s what turns a promising demo into a system you can actually operate, monitor and defend.</p><h2>The limits of one big context window</h2><p>Cramming an entire enterprise workflow into one model and one giant prompt hits three ceilings, and no amount of extra context fully removes them.</p><p>The first is <strong>attention.</strong> As you fill a context window with instructions, documents, tool outputs and prior conversation, the model&#8217;s ability to weigh the right details reliably tends to degrade. Important facts get buried, and the model can anchor on the wrong ones.</p><p>The second is <strong>role confusion.</strong> A single agent asked to plan, research, write code, check its own work and format the output is switching cognitive modes constantly, and quality suffers at the seams.</p><p>The third is <strong>observability.</strong> When one monolithic prompt produces a wrong answer, it&#8217;s genuinely hard to say which part of its reasoning failed &#8212; which makes the system difficult to debug and even harder to trust in production.</p><p>None of this means large models are the problem. It means a single model instance is the wrong unit of composition for a complex, multi-step business process. The better unit is a team.</p><h2>What an agent harness actually is</h2><p>An agent harness is the coordinating software that turns a collection of model calls into a working system. It&#8217;s the layer that decides which agent runs, what context each one receives, how their outputs are combined, and what happens when something fails. If a single agent is one worker, the harness is the operating model of the whole team: task assignment, hand-offs, quality control and escalation.</p><p>Concretely, a harness manages a few things a raw prompt cannot. It scopes context so each agent sees only what it needs, which keeps reasoning sharp and reduces cost. It enforces structure on inputs and outputs so agents can pass work to each other predictably. It handles retries, timeouts and fallbacks so a single flaky step doesn&#8217;t sink the run. And it produces a trace of what each agent did, which is what makes the system auditable. This coordination layer, rather than the model itself, is where much of the real engineering effort in agentic AI now sits.</p><h2>Patterns that make multi-agent systems work</h2><p>Multi-agent systems aren&#8217;t one architecture &#8212; they&#8217;re a small set of composable patterns. A few carry most of the weight in enterprise settings.</p><p><strong>Orchestrator, workers and verifiers.</strong> An orchestrator agent breaks a goal into subtasks and delegates them to worker agents, each specialised for a narrow job such as retrieval, drafting, calculation, or calling a specific system. A separate verifier agent then checks the workers&#8217; output against the original requirements. The key insight is that the agent producing work shouldn&#8217;t be the only agent judging it. Independent verification catches the confident mistakes that self-review misses.</p><p><strong>Fan-out and synthesise.</strong> For research and analysis, the orchestrator fans a question out to several agents that work in parallel, each exploring a different source, angle or hypothesis. A synthesis agent then reconciles their findings into a single coherent answer, resolving contradictions and noting where evidence is thin. Because the parallel agents run at the same time, this pattern is often faster than a single agent working sequentially, and it covers more ground.</p><p><strong>Scoped context per agent.</strong> Underlying both patterns is a discipline: give each agent a tight, purpose-built context rather than the whole history. A worker fetching a policy document doesn&#8217;t need the full conversation, and a verifier needs the requirements plus the output, not the messy reasoning in between. Scoped context is what lets a team of smaller, cheaper model calls outperform one enormous prompt.</p><p>These patterns compose. A production system might fan out to a set of workers, run each worker&#8217;s result past a verifier, and have an orchestrator decide whether to accept, retry, or escalate to a human. The harness is what holds that whole shape together.</p><h2>Why teams beat one big model in production</h2><p>The advantage of multi-agent systems isn&#8217;t that they&#8217;re clever &#8212; it&#8217;s that they&#8217;re governable. Specialised agents are easier to evaluate, because each one has a narrow job with a clear definition of done. Failures are easier to isolate, because a trace shows exactly which agent went wrong. Costs are easier to control, because you can route simple subtasks to smaller models and reserve the most capable model for the steps that truly need it. And behaviour is easier to improve incrementally, because you can upgrade one agent or one prompt without rewriting the entire system.</p><p>For enterprise leaders, this maps directly onto the things that actually block AI from reaching production: reliability, auditability and cost predictability. A single giant prompt optimises for a good demo. An orchestrated team optimises for a system you can operate, monitor and defend to a risk committee. That difference is why the center of gravity in agentic AI has shifted from picking the biggest model to designing the harness around it.</p><h2>How Wohlig helps</h2><p>Wohlig Transformations is a Google Cloud transformation and AI partner. We design and build orchestrated multi-agent systems on Google Cloud &#8212; from the orchestration and verification layer down to the data platforms, developer tooling and BI that agents depend on. That means we help you choose the right patterns for your workflows, wire agents to your real systems securely, and put the observability and guardrails in place that make agentic AI safe to run at scale.</p><p>If you&#8217;re moving from single-prompt experiments toward production multi-agent systems, we can help you get the harness right. <a href="https://wohlig.com/">Reach out to Wohlig</a> to scope an agentic AI initiative on Google Cloud, and turn a promising demo into a system your teams can rely on.</p>]]></content:encoded></item><item><title><![CDATA[From Copilots to Autonomous Workflows: The Agent Leap Arrives in the Enterprise]]></title><description><![CDATA[For the past few years, AI at work has mostly meant a copilot sitting beside a person: it drafts an email, suggests a code change, summarises a ticket, and waits for a human to accept or reject.]]></description><link>https://insights.wohlig.com/p/from-copilots-to-autonomous-workflows</link><guid isPermaLink="false">https://insights.wohlig.com/p/from-copilots-to-autonomous-workflows</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Sun, 19 Jul 2026 14:00:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hJT-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a97f72-805a-4d25-be67-325a3116227b_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hJT-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a97f72-805a-4d25-be67-325a3116227b_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hJT-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a97f72-805a-4d25-be67-325a3116227b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!hJT-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a97f72-805a-4d25-be67-325a3116227b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!hJT-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a97f72-805a-4d25-be67-325a3116227b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!hJT-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a97f72-805a-4d25-be67-325a3116227b_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hJT-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a97f72-805a-4d25-be67-325a3116227b_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47a97f72-805a-4d25-be67-325a3116227b_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1586583,&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://insights.wohlig.com/i/207661035?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a97f72-805a-4d25-be67-325a3116227b_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hJT-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a97f72-805a-4d25-be67-325a3116227b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!hJT-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a97f72-805a-4d25-be67-325a3116227b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!hJT-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a97f72-805a-4d25-be67-325a3116227b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!hJT-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47a97f72-805a-4d25-be67-325a3116227b_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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>For the past few years, AI at work has mostly meant a copilot sitting beside a person: it drafts an email, suggests a code change, summarises a ticket, and waits for a human to accept or reject. The human is still the engine of the workflow. The AI is a very capable passenger.</p><p>In 2026, that relationship is inverting. Enterprise AI is crossing what Google Cloud calls the agent leap &#8212; the shift from copilots that suggest next steps to agents that carry entire workflows to completion with light human oversight. The opportunity is real, but so is the operational risk. The teams that win start with bounded, high-volume processes, wrap their agents in strong governance, and build on a platform designed for autonomy from day one.</p><h2>What actually changes at the agent leap</h2><p>Autonomous AI workflows invert the copilot relationship. Instead of suggesting a single next step, an agent is given a goal, a set of tools, and a boundary &#8212; and it plans and executes the steps needed to reach an outcome. It can call APIs, query systems of record, chain multiple actions together, react to what it finds, and hand back a finished result rather than a suggestion. The human moves from operator to supervisor, reviewing outcomes and handling the exceptions the agent escalates.</p><p>That&#8217;s the leap. It matters because the value of AI stops being measured in keystrokes saved and starts being measured in whole processes owned. A copilot makes one person faster. An agentic workflow can absorb the routine 80 percent of a process, so your people spend their time on the judgement-heavy remainder.</p><h2>Where the real value shows up</h2><p>The change is most visible in workflows that are repetitive, rule-heavy, and spread across multiple systems. A few patterns recur across enterprises:</p><ul><li><p><strong>Customer operations,</strong> where an agent triages an incoming request, gathers context from your CRM and knowledge base, drafts a resolution, and escalates only the genuinely ambiguous cases.</p></li><li><p><strong>Data and reporting,</strong> where an agent pulls from multiple sources, reconciles the numbers, and assembles a draft report that an analyst reviews rather than builds from scratch.</p></li><li><p><strong>Engineering and platform tasks,</strong> where an agent handles routine provisioning, dependency updates, or first-pass diagnostics inside guardrails set by the team.</p></li><li><p><strong>Back-office processing,</strong> such as invoice matching, document intake, and compliance checks that today consume large amounts of manual effort.</p></li></ul><p>The common thread isn&#8217;t glamour. It&#8217;s volume and structure. The best first candidates are processes your team already understands well enough to describe as a set of steps &#8212; with clear inputs, clear success criteria, and a tolerance for the occasional handoff to a human.</p><h2>What to automate first</h2><p>Choosing the first workflow is where most programs succeed or stall. A practical filter has four parts.</p><p>First, pick something with high frequency and clear economics, so the effort pays back quickly and gives you a real signal. Second, favour workflows with well-defined boundaries, where you can state precisely what the agent may and may not touch. Third, make sure a ground truth exists, so you can measure whether the agent&#8217;s output is correct rather than merely plausible. Fourth, keep a human in the loop at the start, reviewing outcomes before they take effect, and widen the agent&#8217;s autonomy only as its track record earns it.</p><p>Resist the temptation to begin with your most complex, highest-stakes process. Start where a mistake is recoverable, prove the pattern, and expand from a position of evidence.</p><h2>The risks you have to design for</h2><p>Autonomy raises the stakes, because an agent that takes actions can also take wrong actions at scale. The failure modes are different from those of a copilot, and they deserve deliberate design.</p><p>The first is <strong>unbounded action.</strong> An agent with broad permissions and a vague goal can do more damage faster than any single person. The answer is least-privilege access, scoped tools, and hard limits on what any workflow can reach.</p><p>The second is <strong>silent error.</strong> Because the human is no longer watching every step, mistakes can accumulate unseen. This is why observability isn&#8217;t optional: every decision, tool call, and output should be logged and traceable, so you can audit what happened and why.</p><p>The third is <strong>drift and ambiguity.</strong> Real workflows contain edge cases, and an agent that improvises when it should escalate is a liability. Clear escalation paths, confidence thresholds, and human review for consequential decisions keep autonomy accountable.</p><p>The fourth is <strong>governance and data protection.</strong> Agents touch sensitive systems and data, so identity, access control, and compliance need to be built into the platform rather than bolted on afterward. Treat an agent as a first-class actor in your security model, not an exception to it.</p><p>Handled well, these aren&#8217;t reasons to wait. They&#8217;re the design requirements that separate a pilot that survives contact with production from one that doesn&#8217;t.</p><h2>How Wohlig helps</h2><p>Wohlig Transformations is a Google Cloud transformation and AI partner that designs and ships autonomous AI workflows built for the enterprise. We help you identify the right first workflows, ground your agents in your own data through robust data and BI foundations, and build on Google Cloud with security, observability and governance designed in from the start. Because we also build cloud platforms and internal developer platforms, the agents we ship land on infrastructure your teams can operate and trust.</p><p>If your organisation is ready to move from copilots that suggest to workflows that execute, <a href="https://wohlig.com/">talk to Wohlig</a>. We&#8217;ll help you pick a first workflow, prove the value, and scale autonomy safely on Google Cloud.</p>]]></content:encoded></item><item><title><![CDATA[Loop Engineering: Building Software Platforms That Improve Themselves]]></title><description><![CDATA[Most engineering organisations run their software the way they did a decade ago: a scatter of disconnected tools, a human wired into every decision, and a platform that quietly decays the moment nobody is watching it.]]></description><link>https://insights.wohlig.com/p/loop-engineering-building-software</link><guid isPermaLink="false">https://insights.wohlig.com/p/loop-engineering-building-software</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Sun, 19 Jul 2026 13:57:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9ESS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F463e00d8-d47e-4820-a2b0-b48b636c19b4_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9ESS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F463e00d8-d47e-4820-a2b0-b48b636c19b4_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9ESS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F463e00d8-d47e-4820-a2b0-b48b636c19b4_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!9ESS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F463e00d8-d47e-4820-a2b0-b48b636c19b4_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!9ESS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F463e00d8-d47e-4820-a2b0-b48b636c19b4_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!9ESS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F463e00d8-d47e-4820-a2b0-b48b636c19b4_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9ESS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F463e00d8-d47e-4820-a2b0-b48b636c19b4_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/463e00d8-d47e-4820-a2b0-b48b636c19b4_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1689609,&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://insights.wohlig.com/i/207660577?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F463e00d8-d47e-4820-a2b0-b48b636c19b4_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9ESS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F463e00d8-d47e-4820-a2b0-b48b636c19b4_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!9ESS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F463e00d8-d47e-4820-a2b0-b48b636c19b4_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!9ESS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F463e00d8-d47e-4820-a2b0-b48b636c19b4_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!9ESS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F463e00d8-d47e-4820-a2b0-b48b636c19b4_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><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>Most engineering organisations run their software the way they did a decade ago: a scatter of disconnected tools, a human wired into every decision, and a platform that quietly decays the moment nobody is watching it. Planning lives in one tool, code in another, CI somewhere else, deployment somewhere else again, dashboards in a fourth place, cost in a spreadsheet, security in an inbox, and the AI experiments in a browser tab nobody governs. Every one of those seams is a place where work stalls, context is lost, and access has to be granted by hand.</p><p>At Wohlig we&#8217;ve built a different model: a single governed platform that takes an idea all the way from a tracked task to a running service in production, to a dashboard that proves it works, to a suggestion for what to improve next. The part that makes it feel alive is the loop &#8212; not a cron job that does the same thing forever, but an intelligent, continuously running cycle that observes real usage, telemetry, cost and security signals, decides what matters, acts, and then measures whether the action actually moved the number.</p><p>We call the discipline of designing and operating those cycles <strong>Loop Engineering</strong>. It&#8217;s only now becoming genuinely practical, because frontier models such as Fable 5 can reason over many steps, use real tools, and run unattended without falling apart.</p><h2>The problem: a human in every loop</h2><p>Ask an engineering leader where their software lifecycle actually lives and you&#8217;ll get a list, not a place. And all of it depends on a person choosing to look. Someone has to remember to check the cost report, notice the latency creeping up, spot the feature nobody uses, catch the vulnerability that keeps recurring, or find the idle environment burning money over the weekend. When that person is busy, on leave, or simply overwhelmed, the platform stops improving. It doesn&#8217;t fail loudly. It just slowly gets worse.</p><p>The traditional answer is automation, and automation helps &#8212; but classic automation is static. A script does exactly what it was written to do, forever, whether or not that&#8217;s still the right thing. It can&#8217;t read a dashboard and conclude the real problem is somewhere else. It can&#8217;t weigh impact against effort, or write the follow-up task. The judgement stays with the human, and so the bottleneck stays with the human.</p><p>That&#8217;s the gap we set out to close.</p><h2>One governed surface for the whole lifecycle</h2><p>The foundation is an internal developer platform: a single, opinionated surface where a team can plan, build, test, release, operate and improve everything, spanning DevOps, applications, business intelligence and AI. Three ideas hold it together.</p><p><strong>One paved road.</strong> There&#8217;s a sensible, well-lit default path for the common case, with escape hatches for the exceptions. A new service can go from a fresh idea to production without a single manual infrastructure ticket. Developers don&#8217;t assemble their own pipeline every time &#8212; they follow the road, and the road is fast.</p><p><strong>One identity.</strong> Every tool authenticates through the same corporate identity, and access is decided by group membership rather than a separate user list in each tool. Grant someone the right group and they can do the right things everywhere; remove them, and access is revoked everywhere at once. No per-tool cleanup, no forgotten account left behind.</p><p><strong>Desired state is declared, not clicked.</strong> The intended configuration of the platform lives as reviewed, version-controlled declarations rather than ad-hoc changes made by hand in a console. Changes are proposed, reviewed like code, and reconciled automatically. The whole platform stays auditable and reversible: you can always see who changed what, why, and roll back to a known-good state.</p><h3>The lifecycle, stage by stage</h3><p><strong>Plan.</strong> An idea becomes a tracked task on a board, and larger bets land on a roadmap. Nothing gets built that isn&#8217;t visible, owned and prioritised.</p><p><strong>Build.</strong> A new project is scaffolded from a golden template that already has the pipeline, packaging and deployment wiring in place. Secrets never live in code; they&#8217;re pulled at runtime from a managed secret store. Conventions are baked in, so every project looks and behaves the same way.</p><p><strong>Test.</strong> Quality is enforced by the pipeline, not by hope. Unit, integration and end-to-end tests, plus load testing and security scanning, run as gates. A change that fails a gate cannot merge or promote. There&#8217;s no &#8220;we&#8217;ll test it later.&#8221;</p><p><strong>Release.</strong> Promotion from development to staging to production is one-way and driven entirely by the declared desired state. Each promotion has explicit gates: green tests, a load test within the performance budget, a clean soak period, and an approval. Production rollouts are progressive, using canary or blue-green strategies that abort automatically if the service breaches its reliability targets.</p><p><strong>Operate.</strong> Every workload becomes observable without a single line of instrumentation code. A modern, low-level agent captures traces, metrics and logs automatically and streams them into a single observability layer, so there&#8217;s one pane of glass for the health of every service. Security posture, threat detection and vulnerability status sit in a parallel set of views. On-call has runbooks, not guesswork.</p><p><strong>Improve.</strong> This is where the platform stops being a static toolchain and starts being a system that gets better on its own. Real usage data and live telemetry feed a standing improvement cycle that continuously proposes concrete technical work, feeds it back into planning, and closes the loop.</p><h2>Data and AI as first-class operating surfaces</h2><p>Two capabilities are what let the platform be operated conversationally rather than through a dozen consoles.</p><p><strong>Talk to your data.</strong> Instead of standing up heavy BI infrastructure and waiting on a report queue, analysts ask questions in plain language. The AI assistant writes and runs the query against the warehouse through a governed connector, and returns the answer as a live chart, table or interactive widget in the same turn. Access is scoped by the same group membership that governs everything else, sensitive columns are protected, and every query is audited. The distance from question to insight collapses from days to seconds, without giving up governance.</p><p><strong>AI as an operator, not just a chatbot.</strong> The assistant is wired into the platform through a catalogue of governed tool connectors. Through them it can query the warehouse, inspect running infrastructure, read logs and traces, look at product usage, and read or update planning documents &#8212; all with least-privilege scopes and confirmation required for anything destructive. Every action is audited. The output isn&#8217;t a wall of text; it&#8217;s an artifact &#8212; a dashboard, a report, a calculator, a widget &#8212; something a human can actually use and share. A gateway sits in front of the models to manage keys, quotas, budgets and routing, and an observability layer tracks the cost, latency and quality of every AI call.</p><p>Put those together and you have a platform a person can operate by describing what they want, while the system keeps the guardrails on.</p><h2>The big idea: the continuous improvement loop</h2><p>Here&#8217;s the cycle that makes the platform self-improving. It runs continuously, and every turn feeds the next.</p><ol><li><p><strong>Observe.</strong> Pull in the live signals: how features are actually used, how services actually perform, what things actually cost, and what the security posture actually looks like.</p></li><li><p><strong>Detect.</strong> Find what matters in that noise &#8212; an anomaly, a reliability budget burning too fast, a slow code path, a feature nobody touches, waste, a recurring risk.</p></li><li><p><strong>Suggest.</strong> Turn the finding into a concrete, written improvement &#8212; not a vague concern, but a specific proposal.</p></li><li><p><strong>Prioritise.</strong> Weigh impact against effort and pick what to do next.</p></li><li><p><strong>Execute.</strong> The chosen improvement becomes a real, tracked task and ships through the same paved road as everything else.</p></li><li><p><strong>Measure.</strong> Check whether the signal actually moved. Did the change do what it promised? Confirm it, then go back to observing.</p></li></ol><p>For years, every one of those steps except the last needed a person. Someone had to read the dashboards, connect the dots, write the proposal, make the call, and later come back to verify. The loop existed on a whiteboard, but in practice it ran only as often as a human had the time and attention to run it. That&#8217;s the constraint that has now lifted.</p><h2>Loop Engineering: the discipline that runs the loop</h2><p><strong>Loop Engineering is the practice of designing, deploying, governing and observing intelligent loops that run continuously and improve the thing they are watching.</strong></p><p>A loop, in this sense, is not a script. It&#8217;s an AI agent given a job, a cadence or trigger, a set of governed tools, and a definition of done. On each turn it gathers fresh context, reasons about it, decides what to do, does it, and verifies the result before it moves on. The loop is the unit of engineering. You compose loops, chain them, put guardrails around them, and watch them the way you&#8217;d watch any other production system.</p><p>It sits one level above both DevOps and classic automation:</p><ul><li><p><strong>Automation</strong> repeats a fixed action.</p></li><li><p><strong>DevOps</strong> gives humans a fast, safe path to ship changes.</p></li><li><p><strong>Loop Engineering</strong> gives the <em>platform itself</em> the ability to observe, decide and act on a cadence, with humans supervising rather than driving.</p></li></ul><h3>Why now: what Fable 5 changes</h3><p>Loop Engineering has been the dream for a long time. What was missing was a model reliable enough to trust with the loop. An agent that has to run for ten or twenty steps &#8212; or for hours &#8212; unattended, calling real tools against real systems, cannot afford to lose the thread halfway through, invent a command, or quietly do the wrong thing.</p><p>Frontier models in the current Claude generation, and Fable 5 in particular, are what make the loop dependable enough to run without a babysitter. Fable 5 is built for long, autonomous work: it can sustain a multi-stage task over an extended session, verify its own output, and carry out ambitious code and knowledge work with minimal oversight. The qualities that matter for Loop Engineering are:</p><ul><li><p><strong>Long-horizon autonomy.</strong> The model can hold a multi-step task in mind, plan across it, and carry context from the observation at the start of a run all the way to the verification at the end.</p></li><li><p><strong>Real tool use.</strong> It doesn&#8217;t just talk about the systems &#8212; it operates them through governed connectors: querying the warehouse, reading telemetry, inspecting infrastructure, filing tasks.</p></li><li><p><strong>Unattended reliability.</strong> It can run a full cycle end to end without a human prompting each step, which is the entire point of a loop.</p></li><li><p><strong>Self-verification.</strong> It can check its own work, compare a result against the goal, even read a screenshot of a rendered interface and judge it against the design, and decide whether the loop succeeded or needs another pass.</p></li><li><p><strong>Structured, auditable output.</strong> Its actions come out as clean artifacts and structured results that downstream steps, and humans, can rely on.</p></li></ul><p>Put simply: the loop was always a good idea. Fable 5 is the first-class engine that makes it safe to leave running.</p><h3>Self-improving is not self-learning</h3><p>A point worth being precise about, because it&#8217;s where most people get the idea wrong. Self-<em>learning</em> would mean the model rewrites its own weights as it goes. That&#8217;s not what&#8217;s happening, and it&#8217;s not what you want in a governed production system. What Loop Engineering delivers is self-<em>improvement</em>, which is a property of the <strong>system</strong>, not the model.</p><p>The model stays constant. The environment around it sharpens. Every run writes down what it learned, verified facts accumulate, the procedures the loops follow get refined by real edge cases, and the next run starts smarter than the last because it inherits that memory. Nothing about the model changed &#8212; the system compounded. Self-improvement is a property of the system, not the model, so you build the system. That&#8217;s exactly what Loop Engineering is.</p><h3>What actually makes a loop get better</h3><p>Three patterns separate a loop that compounds from one that just repeats. We build all three in.</p><p><strong>Independent verifiers, not self-critique.</strong> A model grading its own work has skin in the game: it tends to bless conclusions consistent with its own reasoning. So the maker and the checker are kept separate. One agent produces the work; a second, independent agent sees only the finished artifact and the rubric &#8212; with no exposure to how it was made &#8212; and returns a verdict. If the verdict fails, the loop iterates. It exits only when an impartial checker passes it. This single design choice is the biggest driver of trustworthy autonomous loops.</p><p><strong>Memory that compounds.</strong> A loop that forgets everything between runs can&#8217;t improve. So each loop follows a memory progression: it records a failure, investigates why it happened, verifies the diagnosis into a checked fact, distils that fact into a general rule, and then consults the rule on the next run instead of re-deriving it. Verified facts and hard-won rules live in durable state that every future run reads at the start and updates before it finishes. Recurring know-how gets promoted into reusable procedures, so a lesson learned once is applied everywhere. Two weeks of disciplined writing produces a system that materially outperforms starting fresh each time.</p><p><strong>Tiered routing for economy.</strong> Not every step needs the most powerful model. A well-engineered loop uses a heavyweight model like Fable 5 as the orchestrator for the long, hard, multi-day work, delegates bounded sub-tasks and high-volume worker jobs to lighter, cheaper models, and uses the smallest, fastest models for simple grading. Matching model power to task difficulty keeps a continuously running fleet of loops economical rather than extravagant.</p><h3>The anatomy of a well-engineered loop</h3><p>Every loop we build shares the same skeleton &#8212; and this is where the &#8220;engineering&#8221; in Loop Engineering lives:</p><ul><li><p><strong>A trigger</strong> &#8212; a schedule, such as every weekday evening, or an event, such as a deploy or an alert.</p></li><li><p><strong>An objective</strong> &#8212; a crisp statement of what the loop is for, narrow enough to be verifiable.</p></li><li><p><strong>Scoped tools</strong> &#8212; only the governed connectors this loop needs, at least privilege. A cost loop can&#8217;t touch production; a reporting loop can&#8217;t delete anything.</p></li><li><p><strong>An independent verifier</strong> &#8212; a separate checker that grades the output against the objective before the loop is allowed to finish.</p></li><li><p><strong>Persistent memory</strong> &#8212; durable state the loop reads at the start and updates at the end, so each run inherits what the last one learned.</p></li><li><p><strong>Guardrails</strong> &#8212; destructive actions require confirmation, high-risk changes stop and ask a human, and everything is logged.</p></li><li><p><strong>A definition of done</strong> &#8212; the signal the loop is supposed to move, so success is measurable rather than assumed.</p></li><li><p><strong>Observability on the loop itself</strong> &#8212; cost, latency and quality of the loop&#8217;s own runs are tracked, because a loop is a production workload.</p></li></ul><p>That last point is the discipline that separates Loop Engineering from &#8220;we let an AI run overnight.&#8221; Loops are supervised, budgeted, audited and measured. They aren&#8217;t magic &#8212; they&#8217;re operated.</p><h3>Loops already running</h3><p>The improvement cycle isn&#8217;t the only loop. The platform runs a family of scheduled AI agents that each own a slice of operational health &#8212; and, crucially, prepare the ground for the humans:</p><ul><li><p>A <strong>weekly cost review loop</strong> pulls spend from the warehouse, finds the waste and the spikes, and produces the report leadership reads on Monday morning.</p></li><li><p>A <strong>usage-to-improvement loop</strong> rolls up product analytics every week and turns real behaviour into candidate improvements, so the improvement log is never empty.</p></li><li><p>An <strong>access-drift loop</strong> compares who <em>should</em> have access against who <em>does</em>, and flags the difference before it becomes an audit finding.</p></li><li><p>A <strong>security-findings loop</strong> digests the day&#8217;s posture and threat signals into a briefing instead of a flood of alerts.</p></li><li><p>A <strong>reliability loop</strong> rolls up service-level performance and error budgets, and surfaces the services trending the wrong way.</p></li></ul><p>Notice the pattern. Each loop does the gathering, the reading and the first draft of the thinking, then hands a human a decision that&#8217;s already framed with the data attached. The meetings that used to start with &#8220;let me pull the numbers&#8221; now start with the numbers already on the table. The humans spend their time deciding, not fetching.</p><h2>What the experience feels like</h2><p><strong>For a developer.</strong> You have an idea. You open a task, scaffold a project from a template that already has everything wired, and push your code. The pipeline runs your tests, load tests and security scans as gates, so you find out immediately if something is wrong &#8212; not in a review three days later. When it&#8217;s green, promotion to production happens through the paved road with no infrastructure ticket. The moment it&#8217;s live, it&#8217;s already observable, already secured, already on the dashboards. You didn&#8217;t configure any of that. You followed the road, and the road did the rest.</p><p><strong>For an SRE.</strong> You&#8217;re not staring at ten consoles hoping to catch a problem. The loops watch continuously. Reliability trends, error budgets and anomalies come to you, framed and prioritised. When something breaks, production rollouts abort themselves on a reliability breach before you even reach for the runbook &#8212; and when you do need to act, the runbook is right there. Your standup and your ops review open with a pre-read a loop already prepared. You spend your attention on the hard calls, not on assembling the picture.</p><p><strong>For an analyst.</strong> You don&#8217;t file a report request and wait. You ask your question in plain language, and the answer comes back as a live chart or interactive widget you can share, in the same conversation. The warehouse is serverless, access is governed by your group membership, and every query is audited. Insight is a sentence away, and governance was never traded for speed.</p><p><strong>For a platform admin.</strong> Day-to-day operation happens conversationally. You ask the AI assistant to inspect a cluster, check a budget, or summarise the week, and it does the work through governed tools and hands you an artifact. Access is a matter of group membership, so onboarding and offboarding are clean and instant. The recurring reviews &#8212; cost, security, access, reliability &#8212; all arrive pre-built by loops. You supervise a system that largely runs itself, and you can prove, at any moment, exactly what it did and why.</p><p><strong>For leadership.</strong> The platform is legible. Every service is visible in one place, every cost is attributable, every access grant is traceable, and the list of proposed improvements is never empty. The organisation isn&#8217;t depending on any single person remembering to look. The looking is engineered in.</p><h2>How it functions under the hood</h2><p>Strip away the narrative and the mechanics are straightforward &#8212; which is the point.</p><p><strong>Cadence and triggers.</strong> Loops fire on schedules or on events. Scheduled loops handle the rhythm of operations: the nightly, weekly and monthly reviews. Event-driven loops react to deploys, alerts and threshold breaches. Between them, the platform is always either watching or acting.</p><p><strong>Governed tool access.</strong> Every loop reaches the systems it needs through a catalogue of connectors, each scoped to least privilege. The loop that reviews cost can&#8217;t change infrastructure; the loop that reports on usage can&#8217;t touch secrets. Scope is the safety mechanism, and it&#8217;s declared, not assumed.</p><p><strong>Observe, act, measure.</strong> Each loop follows the same arc: gather fresh signal, reason, take a bounded action or produce an artifact, and verify against a defined outcome. The verification step is what makes a loop trustworthy, because a loop that can&#8217;t tell whether it succeeded is just noise on a timer.</p><p><strong>Governance and audit.</strong> Destructive operations require confirmation. High-risk decisions escalate to a human. Every action &#8212; by a human or a loop &#8212; is logged and reviewable. A gateway in front of the models enforces budgets and quotas, and an observability layer tracks the cost and quality of every AI call, so the loops themselves stay within their means.</p><p><strong>The human half.</strong> None of this removes people; it repositions them. Short, timeboxed reviews turn the loops&#8217; outputs into decisions, and decisions into owned work. The loops do the gathering and the first-draft thinking. The humans do the judgement, the trade-offs and the accountability. That division is deliberate, and it&#8217;s what keeps the whole system both fast and safe.</p><h2>Why it matters</h2><p>Engineering the loops in, rather than leaving them to human attention, produces a platform with a different set of properties:</p><ul><li><p><strong>It doesn&#8217;t decay when nobody is looking,</strong> because the looking is continuous and automated.</p></li><li><p><strong>It surfaces work instead of hiding it.</strong> The backlog of improvements is generated from real signal, so the team is always working on what actually matters.</p></li><li><p><strong>It compresses the distance from signal to action.</strong> A cost spike, a reliability regression or an unused feature becomes a framed, prioritised, trackable piece of work in hours, not quarters.</p></li><li><p><strong>It stays governed at speed.</strong> Everything runs behind one identity, with least-privilege access and a full audit trail, so moving fast doesn&#8217;t mean losing control.</p></li><li><p><strong>It scales the team&#8217;s judgement, not its toil.</strong> People spend their time deciding and building, while the loops handle the watching, the gathering and the measuring.</p></li></ul><p>This is the shift we&#8217;re putting a name to. DevOps gave us a fast, safe way to ship. Loop Engineering gives the platform the ability to run and improve itself on a cadence, with people supervising rather than driving every step. And it&#8217;s available with today&#8217;s technology, not a someday promise &#8212; because the models are finally reliable enough to trust with the loop.</p><h2>Work with Wohlig</h2><p>Wohlig designs and builds self-improving internal platforms end to end: the paved road from idea to production, the single governed identity layer, the observability and security backbone, the conversational data and AI surfaces, and &#8212; above all &#8212; the engineered loops that keep the whole thing getting better on its own.</p><p>If your engineering organisation is carrying the cost of a scattered toolchain and a platform that only improves when someone finds the time, this is the model that changes the equation. <a href="https://wohlig.com/">Talk to Wohlig</a> about bringing Loop Engineering to your platform.</p>]]></content:encoded></item><item><title><![CDATA[Apollo Hospitals — Four Healthcare AI Use Cases, One Salesforce Backbone]]></title><description><![CDATA[Apollo Hospitals partnered with Wohlig Transformations to deliver four AI use cases on top of its existing Salesforce CRM &#8212; combining Gemini Enterprise conversational analytics, a five-agent Vertex AI ADK geospatial intelligence system, web-search doctor mining, and a custom content-generation agent using]]></description><link>https://insights.wohlig.com/p/apollo-hospitals-four-healthcare</link><guid isPermaLink="false">https://insights.wohlig.com/p/apollo-hospitals-four-healthcare</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Wed, 24 Jun 2026 21:09:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MOE3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa8dea5c-1669-43f3-bcf2-d492e4f626c1_1600x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MOE3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa8dea5c-1669-43f3-bcf2-d492e4f626c1_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MOE3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa8dea5c-1669-43f3-bcf2-d492e4f626c1_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!MOE3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa8dea5c-1669-43f3-bcf2-d492e4f626c1_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!MOE3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa8dea5c-1669-43f3-bcf2-d492e4f626c1_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!MOE3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa8dea5c-1669-43f3-bcf2-d492e4f626c1_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MOE3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa8dea5c-1669-43f3-bcf2-d492e4f626c1_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa8dea5c-1669-43f3-bcf2-d492e4f626c1_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:305001,&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://insights.wohlig.com/i/203466819?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa8dea5c-1669-43f3-bcf2-d492e4f626c1_1600x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MOE3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa8dea5c-1669-43f3-bcf2-d492e4f626c1_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!MOE3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa8dea5c-1669-43f3-bcf2-d492e4f626c1_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!MOE3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa8dea5c-1669-43f3-bcf2-d492e4f626c1_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!MOE3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa8dea5c-1669-43f3-bcf2-d492e4f626c1_1600x900.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><strong>Apollo Hospitals</strong> partnered with <strong>Wohlig Transformations</strong> to deliver four AI use cases on top of its existing <strong>Salesforce CRM</strong> &#8212; combining <strong>Gemini Enterprise</strong> conversational analytics, a five-agent <strong>Vertex AI ADK</strong> geospatial intelligence system, web-search doctor mining, and a custom content-generation agent using <strong>Gemini LLM</strong>, <strong>Nano Banana Pro</strong>, and <strong>Veo 3.1</strong> &#8212; distributed through Salesforce&#8217;s existing email + WhatsApp APIs.</p><h2>Project Overview</h2><p><strong>Apollo Hospitals</strong> runs its field representative operations &#8212; doctor networks, referral partnerships, sales performance, and marketing collateral &#8212; on <strong>Salesforce CRM</strong>, the centralised system of record for everything its reps do in the field. In a PSF-funded, three-week engagement, <strong>Wohlig Transformations</strong> delivered four AI use cases on top of that existing Salesforce instance: <strong>Salesforce Efficiency Analytics</strong> via Gemini Enterprise, <strong>Geospatial Intelligence</strong> on a five-agent Vertex AI ADK system, <strong>Doctor Data Mining</strong>, and <strong>AI-Powered Content Generation</strong>. The governing constraint shaped every design decision: Salesforce itself is never modified. Wohlig consumes CRM data through REST APIs and invokes Apollo&#8217;s pre-configured email and WhatsApp APIs only &#8212; Salesforce stays the source of truth, and AI becomes the productivity layer on top.</p><h2>The Challenge</h2><p><strong>Manual Oversight on Rich Data</strong>: Apollo&#8217;s Salesforce holds operational data across doctors, referrals, and field performance, but resource allocation, growth-zone identification, and content creation all relied on manual analysis rather than the data itself.</p><p><strong>Geographic Blindspots</strong>: Field reps had no unified geospatial view of their territory &#8212; clusters, opportunity zones, visit recency, and route optimisation sat in spreadsheets and in territory managers&#8217; heads.</p><p><strong>Generic Marketing Collateral</strong>: Newsletters and brochures were one-size-fits-all rather than region- or specialty-specific, dampening engagement across Apollo&#8217;s doctor network.</p><p><strong>Untapped Doctor Universe</strong>: Public healthcare directories such as <strong>Practo</strong> and <strong>Lybrate</strong> contain doctor records absent from Apollo&#8217;s CRM, but mining them by hand does not scale.</p><p><strong>RBAC at Scale</strong>: Any AI-on-CRM solution had to mirror Salesforce&#8217;s existing role hierarchy &#8212; field reps must not see territory-manager data, and territory managers must not see leadership-only data.</p><h2>Key Objectives</h2><ul><li><p><strong>Conversational Analytics on Salesforce Data</strong>: Field reps, territory managers, and leadership query their authorised data in plain English via <strong>Gemini Enterprise</strong>.</p></li><li><p><strong>Geospatial Intelligence on BigQuery + Google Maps</strong>: Salesforce ingested into <strong>BigQuery</strong> with a geospatial schema; doctors geocoded; opportunity zones and routes computed by a multi-agent ADK system.</p></li><li><p><strong>Doctor Network Expansion</strong>: A Gemini Enterprise web-search agent mines public healthcare directories with structured output.</p></li><li><p><strong>AI-Generated Region- and Specialty-Specific Content</strong>: A custom ADK agent uses <strong>Gemini LLM</strong>, <strong>Nano Banana Pro</strong>, and <strong>Veo 3.1</strong> to produce newsletters, brochures, and marketing assets at the regional and specialty granularity Apollo&#8217;s territory teams need.</p></li><li><p><strong>Same-Surface Distribution</strong>: Distribution runs through Salesforce&#8217;s existing email and WhatsApp APIs &#8212; no new tools for field reps to learn.</p></li><li><p><strong>RBAC End-to-End</strong>: The Salesforce role hierarchy is mirrored into Gemini Enterprise permissions; each user sees only what their Salesforce role allows.</p></li></ul><h2>The Solution: Four AI Use Cases on a Single Salesforce Backbone</h2><p><strong>Use Case 1A &#8212; Salesforce Efficiency Analytics via Gemini Enterprise</strong>: A <strong>Gemini Enterprise</strong> environment was configured with the <strong>Salesforce</strong> connection as a data source. Salesforce RBAC was mirrored into GE permissions so field reps, territory managers, and leadership each query only their authorised data through the same conversational interface. Delivery included role-based query restrictions, user guides, and UAT validation.</p><p><strong>Use Case 1B &#8212; Geospatial Intelligence</strong> <em>(the technical centerpiece)</em>: Salesforce CRM data is ingested into <strong>BigQuery</strong> under a geospatial schema, then enriched through <strong>Google Maps Platform</strong> &#8212; Geocoding, Routes, and Places Insights. A five-agent <strong>Vertex AI ADK</strong> system does the reasoning: <strong>Data Preparation</strong> cleans and structures the CRM data; <strong>Geospatial Analysis</strong> runs spatial clustering, aggregating doctors by geographic proximity and computing performance metrics at cluster and territory levels; <strong>Route Optimization</strong> plans efficient field-rep travel; <strong>Communication</strong> triggers outreach via Salesforce email and WhatsApp; and <strong>Visualization</strong> renders the outputs. Those outputs are an interactive heatmap on the <strong>Google Maps JavaScript API</strong> &#8212; with multi-layer toggles for specialty, opportunity score, visit recency, and territory, and a mobile-responsive UI for field reps &#8212; alongside <strong>Looker Studio</strong> dashboards tuned for executive, territory-manager, and field-rep personas. Per the SOW success criteria, <strong>&#8805;95%</strong> of doctor addresses are geocoded with valid coordinates.</p><p><strong>Use Case 1C &#8212; Doctor Data Mining via Gemini Enterprise</strong>: Web-search agents mine <strong>Practo</strong>, <strong>Lybrate</strong>, and similar public healthcare directories for doctor data, returning structured records that expand Apollo&#8217;s referral network &#8212; on demand and on schedule.</p><p><strong>Use Case 2 &#8212; AI-Powered Content Generation &amp; Distribution</strong>: A custom <strong>Vertex AI ADK</strong> agent generates region- and specialty-specific newsletters, brochures, and marketing collateral using three Google AI models &#8212; <strong>Gemini LLM</strong> for text, <strong>Nano Banana Pro</strong> for images, and <strong>Veo 3.1</strong> for video &#8212; transforming Apollo&#8217;s existing brand assets. It then distributes through Apollo&#8217;s pre-configured <strong>Salesforce</strong> email and WhatsApp APIs, with targeted filtering by specialty, territory, and engagement criteria.</p><p><strong>Technology Stack</strong> &#8212; <strong>Gemini Enterprise</strong>, <strong>Vertex AI (Agent Builder + ADK)</strong>, <strong>Gemini LLM</strong>, <strong>Nano Banana Pro</strong>, <strong>Veo 3.1</strong>, <strong>BigQuery</strong>, <strong>Cloud Run</strong> + <strong>Docker</strong>, <strong>Google Maps Platform</strong>, <strong>Google Maps JavaScript API</strong>, <strong>Looker Studio</strong>, <strong>GCP IAM</strong> + <strong>Service Accounts</strong> + <strong>Secret Manager</strong>, and <strong>Salesforce REST APIs</strong>.</p><h2>Key Benefits &amp; Results</h2><ul><li><p><strong>Previous</strong>: Manual analysis of Salesforce data. <strong>Our Solution</strong>: Conversational analytics via <strong>Gemini Enterprise</strong> with Salesforce-mirrored RBAC. <strong>Result</strong>: Each user queries their authorised data in plain English &#8212; no SQL, no spreadsheets, no per-role bespoke reports.</p></li><li><p><strong>Previous</strong>: Geographic blindspots. <strong>Our Solution</strong>: A five-agent <strong>Vertex AI ADK</strong> geospatial system on <strong>BigQuery</strong> + <strong>Google Maps Platform</strong>. <strong>Result</strong>: Opportunity zones, hot/cold clusters, route-optimised daily visit plans, and territory-level performance aggregation.</p></li><li><p><strong>Previous</strong>: No interactive map. <strong>Our Solution</strong>: A web-based interactive heatmap on the <strong>Google Maps JavaScript API</strong> with multi-layer toggles and a mobile-responsive UI. <strong>Result</strong>: Field reps explore their territory on their phone.</p></li><li><p><strong>Previous</strong>: Generic marketing collateral. <strong>Our Solution</strong>: A custom ADK agent generating region- and specialty-specific newsletters, brochures, images (<strong>Nano Banana Pro</strong>), and videos (<strong>Veo 3.1</strong>). <strong>Result</strong>: Doctor engagement tailored to specialty and territory.</p></li><li><p><strong>Previous</strong>: Manual referral-network expansion. <strong>Our Solution</strong>: A <strong>Gemini Enterprise</strong> web-search agent mining public healthcare directories. <strong>Result</strong>: Structured doctor records, on demand and scheduled.</p></li><li><p><strong>Previous</strong>: Hand-crafted bulk emails. <strong>Our Solution</strong>: <strong>Salesforce</strong> email + WhatsApp API distribution invoked by the agent. <strong>Result</strong>: Same-surface distribution, with no new tools for field reps.</p></li></ul><h2>Technical Innovation</h2><p><strong>Five-Agent ADK System for Geospatial Intelligence</strong>: Data Preparation, Geospatial Analysis, Route Optimization, Communication, and Visualization &#8212; each agent owns a clear responsibility, and the orchestration is deterministic.</p><p><strong>Salesforce RBAC Mirrored into Gemini Enterprise</strong>: Field rep, territory manager, and leadership roles map cleanly across the analytics surface &#8212; the same chat UI, role-different results.</p><p><strong>Multi-Model Content Generation</strong>: <strong>Gemini LLM</strong>, <strong>Nano Banana Pro</strong>, and <strong>Veo 3.1</strong>, orchestrated by a single ADK agent, produce region- and specialty-tailored newsletters, brochures, images, and videos.</p><p><strong>Zero Salesforce Modification</strong>: The solution consumes Salesforce data and invokes pre-configured Salesforce APIs &#8212; no CRM customisations, no schema changes &#8212; a clean separation that respects Apollo&#8217;s CRM ownership.</p><p><strong>Same-Surface Distribution</strong>: Distribution runs through the email and WhatsApp APIs Apollo already has configured; field reps interact with the system they already use, and AI fades into the background.</p><h2>Wohlig&#8217;s Approach</h2><ol><li><p><strong>Discovery &amp; CRM analysis</strong> &#8212; workshops with Apollo&#8217;s marketing and field operations stakeholders; review of the Salesforce data structure.</p></li><li><p><strong>GCP foundation</strong> &#8212; <strong>BigQuery</strong> (geospatial schema), <strong>Cloud Run</strong>, and <strong>IAM</strong> + <strong>Secret Manager</strong>.</p></li><li><p><strong>Salesforce &#8596; Gemini Enterprise</strong> &#8212; connection setup, RBAC mirroring, and conversational-analytics validation.</p></li><li><p><strong>Geospatial data foundation</strong> &#8212; ETL pipelines for daily Salesforce sync; geocoding via <strong>Google Maps Platform</strong>; spatial clustering; territory aggregation.</p></li><li><p><strong>Multi-agent ADK build</strong> &#8212; five agents for Use Case 1B (Data Prep, Geospatial Analysis, Route Optimization, Communication, Visualization); the web-search agent for Use Case 1C; the content-generation agent for Use Case 2.</p></li><li><p><strong>Heatmap + dashboards + distribution</strong> &#8212; <strong>Google Maps JavaScript API</strong> heatmap, <strong>Looker Studio</strong> dashboards, and Salesforce email + WhatsApp distribution; UAT; documentation and knowledge transfer.</p></li></ol><div><hr></div><h2>About Apollo Hospitals</h2><p><strong>Apollo Hospitals Enterprise Limited</strong> is India&#8217;s premier integrated healthcare platform, headquartered in Hyderabad. Apollo operates a large network of hospitals, clinics, and specialist services across India, supported by a field representative organisation that manages doctor networks, referral partnerships, and sales performance across territories. The organisation uses <strong>Salesforce CRM</strong> as the centralised system of record for all field force activity.</p><h2>About Wohlig Transformations Pvt. Ltd.</h2><p>Founded in 2015, <strong>Wohlig Transformations</strong> specialises in <strong>GenAI</strong> and <strong>DevOps</strong>, with 160+ professionals across India and the UK.</p><div><hr></div><p><strong>Detailed Case Study Presentation : <a href="https://youtu.be/V_PP37zfEI8">https://youtu.be/V_PP37zfEI8</a></strong></p>]]></content:encoded></item><item><title><![CDATA[Hero MotoCorp — 0 RBAC Leaks Across 101 Evaluations: Enterprise Knowledge on Gemini Enterprise with Access Control Reconstructed Inside the Agent]]></title><description><![CDATA[Hero MotoCorp partnered with Wohlig Transformations to build an ADK agent on Vertex AI Agent Engine, surfaced through Gemini Enterprise, that answers natural-language questions over the Hero Wisdom Sphere (HWS) knowledge repository &#8212; with per-user RBAC enforced inside the agent itself, verified by an independent 101-case evaluation:]]></description><link>https://insights.wohlig.com/p/hero-motocorp-0-rbac-leaks-across</link><guid isPermaLink="false">https://insights.wohlig.com/p/hero-motocorp-0-rbac-leaks-across</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Wed, 24 Jun 2026 21:07:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uRUo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15af2805-ceec-4a2a-bdec-07f1590d2147_1602x902.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uRUo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15af2805-ceec-4a2a-bdec-07f1590d2147_1602x902.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uRUo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15af2805-ceec-4a2a-bdec-07f1590d2147_1602x902.png 424w, https://substackcdn.com/image/fetch/$s_!uRUo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15af2805-ceec-4a2a-bdec-07f1590d2147_1602x902.png 848w, https://substackcdn.com/image/fetch/$s_!uRUo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15af2805-ceec-4a2a-bdec-07f1590d2147_1602x902.png 1272w, https://substackcdn.com/image/fetch/$s_!uRUo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15af2805-ceec-4a2a-bdec-07f1590d2147_1602x902.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uRUo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15af2805-ceec-4a2a-bdec-07f1590d2147_1602x902.png" width="1456" height="820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15af2805-ceec-4a2a-bdec-07f1590d2147_1602x902.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:218184,&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://insights.wohlig.com/i/203466546?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15af2805-ceec-4a2a-bdec-07f1590d2147_1602x902.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uRUo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15af2805-ceec-4a2a-bdec-07f1590d2147_1602x902.png 424w, https://substackcdn.com/image/fetch/$s_!uRUo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15af2805-ceec-4a2a-bdec-07f1590d2147_1602x902.png 848w, https://substackcdn.com/image/fetch/$s_!uRUo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15af2805-ceec-4a2a-bdec-07f1590d2147_1602x902.png 1272w, https://substackcdn.com/image/fetch/$s_!uRUo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15af2805-ceec-4a2a-bdec-07f1590d2147_1602x902.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><strong>Hero MotoCorp</strong> partnered with <strong>Wohlig Transformations</strong> to build an <strong>ADK agent on Vertex AI Agent Engine</strong>, surfaced through <strong>Gemini Enterprise</strong>, that answers natural-language questions over the Hero Wisdom Sphere (HWS) knowledge repository &#8212; with per-user RBAC enforced inside the agent itself, verified by an independent 101-case evaluation: <strong>0 real RBAC leaks, 100% tool selection, ~90% accuracy</strong>.</p><h2>Project Overview</h2><p>The Hero Wisdom Sphere (HWS) is Hero&#8217;s institutional knowledge repository &#8212; R&amp;D, manufacturing, and quality documents &#8212; running on a customised <strong>DSpace</strong> instance backed by <strong>PostgreSQL</strong> (<code>cdl_prod</code>) on-premises. A single architectural constraint shaped the entire engagement: the on-prem <strong>MCP</strong> server that fronts the database is client-owned and out of scope for modification, and it exposes one all-powerful tool, <code>query_database</code>, capable of running any read-only SELECT with full read access. Rather than trust the model with that surface, <strong>Wohlig</strong> made the defining design decision to reconstruct per-user access control <em>inside the agent</em> &#8212; the LLM is restricted to four safe tools and never sees raw SQL, while deterministic Python resolves verified identity, applies the HWS <strong>L1-L5 access model</strong>, and builds an access-clamped query before anything reaches the MCP. Employees ask in plain English through <strong>Gemini Enterprise</strong> (Workspace SSO); the answer is grounded, cited, and scoped to their entitlements. An independent 101-case evaluation on the deployed agent confirmed the approach: zero real RBAC leaks, perfect tool selection, and roughly 90% accuracy.</p><h2>The Challenge</h2><p><strong>Single All-Powerful MCP Tool</strong>: The on-prem MCP server exposes one tool &#8212; <code>query_database</code> &#8212; that runs any read-only SELECT with full database read access. Anything attached to the model would inherit that blast radius.</p><p><strong>Client-Owned, Out of Scope</strong>: The MCP server and the <strong>DSpace</strong> instance itself are client-owned; modifying them was explicitly out of scope per the SOW. The fix had to live entirely in the agent layer.</p><p><strong>Native DSpace Permissions Don&#8217;t Isolate</strong>: DSpace&#8217;s native <code>resourcepolicy</code> group 8 (&#8221;Read&#8221;) grants every user READ on every item &#8212; there is no built-in gate to lean on for per-user isolation.</p><p><strong>Hidden Multi-Level Access Model</strong>: The real control is HWS&#8217;s level-driven access model (L1-L5), documented in the client&#8217;s MCP reference &#8212; but it had to be reconstructed in the agent, not inherited from the database.</p><p><strong>Identity at Production Grade</strong>: Verified Workspace identity must flow end-to-end from <strong>Gemini Enterprise</strong> &#8594; <strong>ADK</strong> &#8594; tool calls, and must never be read from model output.</p><h2>Key Objectives</h2><ul><li><p><strong>Surface Through Gemini Enterprise</strong>: Employees ask in plain English; the answer is grounded, cited, and respects their entitlements.</p></li><li><p><strong>Never Expose Raw SQL to the LLM</strong>: Restrict the LLM to a small set of safe tools; deterministic code builds the access-clamped query.</p></li><li><p><strong>Enforce L1-L5 In-Agent</strong>: Reconstruct the access model from the client&#8217;s MCP reference; fail-closed for unknown users and conflicting items.</p></li><li><p><strong>Independent Evaluation</strong>: Prove the design with a 101-case suite using ground truth verified independently from the database.</p></li><li><p><strong>Production-Grade Concurrency</strong>: Cache clients per event loop; scale via instances, not in-process concurrency.</p></li><li><p><strong>Secure On-Prem Connectivity</strong>: <strong>Cloud HA VPN</strong> + <strong>Shared VPC</strong> + <strong>PSC</strong> interface; read-only end to end.</p></li></ul><h2>The Solution: ADK Agent with RBAC Reconstructed in the Agent</h2><ul><li><p><strong>Four Safe Tools</strong> &#8212; <code>search_documents</code>, <code>get_document</code>, <code>browse_documents</code>, and <code>list_knowledge_scope</code>. The raw <code>query_database</code> tool is <strong>never</strong> attached to the LLM; the model can only ever choose among these four narrow capabilities.</p></li><li><p><strong>The L1-L5 Access Model</strong> &#8212; L1 Public / L2 R&amp;D-wide (R&amp;D departments) / L3 Department (owning department) / L4-L5 explicit per-item grants only / Admin bypass (DSpace group 1, directly or via <code>group2groupcache</code>). Most-restrictive level wins on conflicts. Fail-closed throughout.</p></li><li><p><strong>Identity Propagation</strong> &#8212; <strong>Gemini Enterprise</strong> passes the verified Workspace email to the agent as the ADK <code>user_id</code> (empirically confirmed via probe before being relied upon). <code>identity.py</code> reads it from the runtime context; the model is never trusted to provide identity.</p></li><li><p><strong>sql_guard (sqlglot AST validation)</strong> &#8212; single statement, SELECT-only, no CTE, table allow-list, and denial of <code>eperson</code> secret columns (<code>password</code> / <code>salt</code> / <code>digest_algorithm</code>). All literals are escaped, so a malicious keyword becomes an inert string literal.</p></li><li><p><strong>End-to-End Connectivity</strong> &#8212; <strong>Cloud HA VPN</strong> + <strong>Shared VPC</strong> + <strong>PSC</strong> interface &#8594; on-prem MCP server &#8594; <strong>PostgreSQL</strong> <code>cdl_prod</code>. A read-only DB user (<code>hws_mcp</code>) and a SELECT-only MCP keep the path read-only end to end.</p></li><li><p><strong>Technology Stack</strong> &#8212; <strong>Gemini Enterprise</strong>, <strong>Vertex AI Agent Engine</strong>, <strong>Gemini 3 Flash Preview</strong> (Vertex AI global endpoint), <strong>Vertex text-embedding-005</strong>, <strong>Google Agent Development Kit (ADK)</strong>, <strong>MCP</strong> client, <strong>sqlglot</strong>, <strong>Cloud VPN HA</strong>, <strong>Shared VPC</strong>, <strong>PSC</strong> interface, <strong>Cloud IAM</strong>, <strong>Secret Manager</strong>, and <strong>Cloud Logging + Monitoring</strong>.</p></li></ul><h2>Key Benefits &amp; Results</h2><ul><li><p><strong>Previous:</strong> All-powerful single MCP tool. <strong>Our Solution:</strong> 4 safe tools with raw SQL never exposed to the LLM. <strong>Result:</strong> An architectural ceiling on blast radius &#8212; injection or misinstruction cannot widen access.</p></li><li><p><strong>Previous:</strong> DSpace native permissions ineffective (group 8 reads everything). <strong>Our Solution:</strong> L1-L5 model reconstructed in <code>entitlements.py</code> from the client&#8217;s MCP reference. <strong>Result:</strong> Per-user access correctly enforced at the agent layer.</p></li><li><p><strong>Previous:</strong> Model-provided identity is unsafe. <strong>Our Solution:</strong> Verified Workspace email from the ADK runtime context (empirically confirmed). <strong>Result:</strong> Identity never trusted from model output; fail-closed for unknown users.</p></li><li><p><strong>Previous:</strong> Free-form SQL generation risk. <strong>Our Solution:</strong> <strong>sqlglot</strong> AST guard + escaped literals + read-only end to end. <strong>Result:</strong> A malicious keyword becomes an inert string literal; a missing filter cannot occur.</p></li><li><p><strong>Previous:</strong> No production evidence. <strong>Our Solution:</strong> 101-case eval with ground truth from an independent read-only introspection engine. <strong>Result:</strong> 0 real RBAC leaks, 100% tool selection, ~90% accuracy (94% single-turn, 69% multi-turn).</p></li><li><p><strong>Previous:</strong> Concurrency pitfalls (single-global clients raise &#8220;Future attached to a different loop&#8221;). <strong>Our Solution:</strong> Per-event-loop client caching + scaling via instances. <strong>Result:</strong> A production-stable runtime.</p></li></ul><h2>Technical Innovation</h2><p><strong>RBAC Reconstructed in the Agent</strong>: The on-prem MCP server is client-owned and out of scope. The LLM is restricted to 4 safe tools; deterministic Python resolves verified identity, entitlements, and the access predicate before any query reaches the MCP.</p><p><strong>Defence in Depth</strong>: No raw-SQL tool on the model; <strong>sqlglot</strong> AST validation; escaped literals; read-only end to end; <strong>PSC</strong> + <strong>HA VPN</strong>. Five orthogonal layers &#8212; an injected instruction cannot widen scope, and an omitted filter cannot occur.</p><p><strong>Independent Eval Harness</strong>: A 101-case suite plus 10 client-acceptance questions, with ground truth from an independent read-only introspection engine &#8212; not LLM-as-judge. Cross-department L3 and unknown-user requests were correctly denied.</p><p><strong>Per-Event-Loop Client Caching</strong>: The genai client and MCP toolset are cached per event loop (a single global raises concurrency errors in this runtime). Scaling is via instances and <code>container_concurrency=9</code>, not in-process concurrency.</p><p><strong>Transparent Data-Quality Flagging</strong>: Three records with conflicting auth-levels (<code>HWS-DOC-279/0</code>, <code>371/0</code>) and one corrupted record (<code>HWS-DOC-225/0</code>) were surfaced to Hero&#8217;s HWS team &#8212; production hygiene, not silent papering-over.</p><h2>Wohlig&#8217;s Approach</h2><ol><li><p><strong>Discovery &amp; connectivity design</strong> &#8212; workshops with Hero stakeholders; review of the GCP landing zone, IAM policies, and network topology; site-to-site VPN + Shared VPC + PSC design.</p></li><li><p><strong>RBAC + safe-tools architecture</strong> &#8212; reconstruct the L1-L5 access model from the client&#8217;s MCP reference; design the 4 safe tools; design the <code>sql_guard</code> validator.</p></li><li><p><strong>ADK agent build</strong> &#8212; implement <code>identity</code>, <code>entitlements</code>, <code>search</code>, <code>sql_guard</code>, and <code>mcp_client</code>; integrate <strong>Vertex text-embedding-005</strong> for in-agent rerank; cache genai + MCP per event loop.</p></li><li><p><strong>Independent eval harness</strong> &#8212; a 101-case suite plus 10 client-acceptance questions; ground truth from a read-only introspection engine; RBAC, tool-selection, and accuracy judges.</p></li><li><p><strong>Deployment to Vertex AI Agent Engine</strong> &#8212; <code>extra_packages=[app]</code>, PSC network attachment, <code>container_concurrency=9</code>, min/max instances, and resource limits.</p></li><li><p><strong>Gemini Enterprise registration + handover</strong> &#8212; import into <strong>Gemini Enterprise</strong>; validate end-to-end invocation; deliver an architecture document, implementation guide, runbook, and knowledge transfer.</p></li></ol><div><hr></div><h2>About Hero MotoCorp</h2><p><strong>Hero MotoCorp Limited</strong> is the world&#8217;s largest manufacturer of motorcycles and scooters by volume, headquartered in New Delhi with a presence across more than 40 countries. Hero has built a strong reputation for innovation, manufacturing excellence, and customer-centric product design, and is embedding generative + agentic AI into internal workflows as part of its digital transformation programme.</p><h2>About Wohlig Transformations Pvt. Ltd.</h2><p>Founded in 2015, <strong>Wohlig Transformations</strong> specialises in <strong>GenAI</strong> and <strong>DevOps</strong>, with 160+ professionals across India and the UK.</p><div><hr></div><p><strong>Detailed Case Study Presentation : <a href="https://youtu.be/8b9zKWYUc_Q">https://youtu.be/8b9zKWYUc_Q</a></strong></p>]]></content:encoded></item><item><title><![CDATA[Vivriti Capital — When “Genuinely Adopted” Is the Brief: A Gemini Enterprise Rollout at Production Scale]]></title><description><![CDATA[Vivriti Capital partnered with Wohlig Transformations for a production Gemini Enterprise rollout across 425 licensed users in five business departments &#8212; combining a multi-app GE tenant with strict department data segregation, 10 no-code agents, 3 custom ADK agents on]]></description><link>https://insights.wohlig.com/p/vivriti-capital-when-genuinely-adopted</link><guid isPermaLink="false">https://insights.wohlig.com/p/vivriti-capital-when-genuinely-adopted</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Wed, 24 Jun 2026 21:05:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zYeV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abd710b-e792-4e57-b5d4-5cccc8c0dcc0_1598x904.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zYeV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abd710b-e792-4e57-b5d4-5cccc8c0dcc0_1598x904.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zYeV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abd710b-e792-4e57-b5d4-5cccc8c0dcc0_1598x904.png 424w, https://substackcdn.com/image/fetch/$s_!zYeV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abd710b-e792-4e57-b5d4-5cccc8c0dcc0_1598x904.png 848w, https://substackcdn.com/image/fetch/$s_!zYeV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abd710b-e792-4e57-b5d4-5cccc8c0dcc0_1598x904.png 1272w, https://substackcdn.com/image/fetch/$s_!zYeV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abd710b-e792-4e57-b5d4-5cccc8c0dcc0_1598x904.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zYeV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abd710b-e792-4e57-b5d4-5cccc8c0dcc0_1598x904.png" width="1456" height="824" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9abd710b-e792-4e57-b5d4-5cccc8c0dcc0_1598x904.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:824,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:352314,&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://insights.wohlig.com/i/203465870?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abd710b-e792-4e57-b5d4-5cccc8c0dcc0_1598x904.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zYeV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abd710b-e792-4e57-b5d4-5cccc8c0dcc0_1598x904.png 424w, https://substackcdn.com/image/fetch/$s_!zYeV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abd710b-e792-4e57-b5d4-5cccc8c0dcc0_1598x904.png 848w, https://substackcdn.com/image/fetch/$s_!zYeV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abd710b-e792-4e57-b5d4-5cccc8c0dcc0_1598x904.png 1272w, https://substackcdn.com/image/fetch/$s_!zYeV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9abd710b-e792-4e57-b5d4-5cccc8c0dcc0_1598x904.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><strong>Vivriti Capital</strong> partnered with <strong>Wohlig Transformations</strong> for a production <strong>Gemini Enterprise</strong> rollout across <strong>425 licensed users</strong> in five business departments &#8212; combining a multi-app GE tenant with strict department data segregation, 10 no-code agents, 3 custom ADK agents on <strong>Vertex AI Agent Engine</strong>, and a structured change-management programme targeting <strong>50%+ weekly active usage</strong> by Project End + 4 weeks.</p><h2>Project Overview</h2><p><strong>Vivriti Capital</strong> is a diversified financial-services group whose work spans Treasury Operations, Finance, Operations, Credit &amp; Risk, Distribution, and AIF Operations &#8212; each with its own data, its own controls, and its own regulatory weight. Vivriti licensed <strong>Gemini Enterprise</strong> for <strong>425 users</strong> and brought in <strong>Wohlig</strong> to do the part a licence purchase can&#8217;t: stand up Google&#8217;s AI workspace so it is <em>genuinely adopted</em>, not merely deployed. The anchor decision was a <strong>multi-app GE tenant</strong> &#8212; a separate GE app per business department &#8212; layered over Vivriti&#8217;s existing <strong>Microsoft 365</strong> productivity stack. Across a focused <strong>4-week engagement</strong> plus ongoing office hours, the brief was framed around one number that deployment alone never guarantees: weekly active usage.</p><h2>The Challenge</h2><p><strong>Strict Department Data Segregation</strong>: Operations users must not retrieve Treasury data through chat; Finance must not surface Credit &amp; Risk content. For a regulated financial-services organisation, segregation has to be architectural &#8212; enforced by how the platform is built, not by a policy memo or a post-query filter.</p><p><strong>Microsoft 365 as the System of Record</strong>: Vivriti&#8217;s collaboration runs on <strong>OneDrive</strong>, <strong>SharePoint</strong>, and <strong>Outlook</strong>. The rollout had to integrate cleanly with <strong>Microsoft 365</strong> &#8212; federated for user-specific content, ingested for shared content &#8212; rather than asking the organisation to move its working files.</p><p><strong>Fintech-Specific Use Cases</strong>: Generic GE templates don&#8217;t fit a fintech operating model. Trade reconciliation (RupeeVest + NSDL; BSE + NSE), KYC document chat, regulatory document analysis, and mailbox-monitored market intelligence all need purpose-built agents to be useful on day one.</p><p><strong>Self-Sufficiency by Handover</strong>: Vivriti&#8217;s non-technical users needed to build their own no-code agents, and its technical spokes needed to build custom ADK agents and custom connectors &#8212; without Wohlig in the room.</p><p><strong>Licence-to-Usage Gap</strong>: 425 licences are worthless if usage never reaches a meaningful threshold. The brief was explicit &#8212; <strong>50%+ weekly active usage</strong> (~213 users) by Project End + 4 weeks.</p><h2>Key Objectives</h2><ul><li><p><strong>Production GE Tenant, Architecturally Segregated</strong>: A separate GE app per business department, each with its own <strong>Microsoft 365</strong> connector and isolated <strong>Cloud Storage</strong> bucket.</p></li><li><p><strong>Microsoft 365 First-Class</strong>: <strong>SharePoint</strong> (federated + ingestion), <strong>OneDrive</strong>, and <strong>Outlook</strong> connectors configured per department.</p></li><li><p><strong>Fintech No-Code Library</strong>: 10 no-code agents covering the fintech operating patterns Vivriti users actually need.</p></li><li><p><strong>3 Priority Custom ADK Agents</strong>: RupeeVest/NSDL Mapping, BSE/NSE Trades, and Regulatory &amp; Market Intelligence &#8212; built on <strong>Vertex AI Agent Engine</strong>.</p></li><li><p><strong>Custom Connector Reference</strong>: One demonstration custom connector to show Vivriti&#8217;s technical spokes how to extend the platform themselves.</p></li><li><p><strong>50%+ Weekly Active Usage</strong>: A structured enablement and change-management programme aimed at the adoption number, not just the deployment milestone.</p></li></ul><h2>The Solution: Multi-App Gemini Enterprise Tenant + Custom Agents + Adoption Programme</h2><ul><li><p><strong>Multi-App GE Tenant</strong> &#8212; Roughly <strong>5 separate GE app instances</strong>, one per business department (Treasury Operations, Finance, Operations, Credit &amp; Risk, Distribution; more as identified during kickoff). Each app has its own department-level <strong>Microsoft 365</strong> connector, authenticated via distribution-list-level tenant configuration, and its own isolated <strong>Cloud Storage</strong> bucket. Segregation is enforced by tenant architecture &#8212; not by an application-layer filter.</p></li><li><p><strong>Microsoft 365 Connectors</strong> &#8212; <strong>SharePoint</strong> runs in federated mode for user-specific sites and in data-ingestion mode for shared sites (legal templates, KYC repositories, report templates). <strong>Outlook</strong> handles inbound email access and designated mailbox monitoring. <strong>OneDrive</strong> covers personal files across every department app.</p></li><li><p><strong>10 No-Code Agent Demo Library</strong> &#8212; Document summarisation, email triage, simple reconciliation, report generation, regulatory document analysis, KYC document chat, expense queries, calendar management, meeting summaries, and internal policy Q&amp;A. The library is documented in a Vivriti <strong>SharePoint</strong> knowledge base for users to reference, copy, and adapt.</p></li><li><p><strong>3 Custom ADK Agents on Vertex AI Agent Engine</strong> &#8212; RupeeVest and NSDL Mapping; BSE and NSE Trades (with <strong>Vivriti Invest 2.0</strong> read-only access for distributor master and commission-rule lookups); and Regulatory and Market Intelligence (designated mailbox monitoring via the <strong>Outlook</strong> connector).</p></li><li><p><strong>One Demonstration Custom Connector</strong> &#8212; A <strong>Microsoft Graph API</strong> integration built during the technical training stream as the reference pattern Vivriti&#8217;s technical spokes can replicate indefinitely.</p></li><li><p><strong>Enablement &amp; Change Management</strong> &#8212; Non-technical training (online, org-wide); technical training (<strong>ADK</strong> + custom connectors); customer enablement and change management; named champions per cohort; weekly adoption metric review with corrective action; and three-weekly post-engagement office hours.</p></li><li><p><strong>Technology Stack</strong> &#8212; <strong>Gemini Enterprise</strong> (multi-app), <strong>Vertex AI Agent Engine</strong>, <strong>Google Agent Development Kit (ADK)</strong> for Python, <strong>Google Cloud Identity</strong> (SSO), <strong>Cloud Storage</strong>, <strong>Cloud IAM</strong>, <strong>Microsoft 365</strong> (<strong>OneDrive</strong> + <strong>SharePoint</strong> + <strong>Outlook</strong>), <strong>Microsoft Graph API</strong> (custom connector), and <strong>Vivriti Invest 2.0</strong> (read-only).</p></li></ul><h2>Key Benefits &amp; Results</h2><ul><li><p><strong>Previous</strong>: A single shared tenant risks cross-department exposure. <strong>Our Solution</strong>: A multi-app GE tenant with department-isolated apps, <strong>Cloud Storage</strong> buckets, and <strong>Microsoft 365</strong> connectors. <strong>Result</strong>: Architectural segregation &#8212; Operations cannot reach Treasury data; Finance cannot reach Credit &amp; Risk content.</p></li><li><p><strong>Previous</strong>: Generic GE templates with no fintech relevance. <strong>Our Solution</strong>: 10 fintech-specific no-code agents plus 3 custom ADK agents on <strong>Vertex AI Agent Engine</strong>. <strong>Result</strong>: Day-one relevance for Vivriti&#8217;s operating model.</p></li><li><p><strong>Previous</strong>: Off-the-shelf connectors only. <strong>Our Solution</strong>: <strong>SharePoint</strong> federated + ingestion modes, <strong>Outlook</strong> mailbox monitoring, and a demonstration custom connector via <strong>Microsoft Graph API</strong>. <strong>Result</strong>: <strong>Microsoft 365</strong> treated as first-class, with a clear path to extend.</p></li><li><p><strong>Previous</strong>: &#8220;We hope users open it.&#8221; <strong>Our Solution</strong>: Structured non-technical + technical training, named champions per cohort, weekly adoption metric review, and three-weekly office hours. <strong>Result</strong>: <strong>50%+ weekly active usage</strong> as the explicit success criterion.</p></li><li><p><strong>Previous</strong>: Dependency on an external partner after deployment. <strong>Our Solution</strong>: Self-sufficiency by handover &#8212; non-technical users build no-code agents; technical spokes build custom ADK agents and custom connectors. <strong>Result</strong>: Vivriti owns the platform&#8217;s growth post-engagement.</p></li></ul><h2>Technical Innovation</h2><p><strong>Multi-App GE Tenant for Department Data Segregation</strong>: A separate GE app per business department, each with its own department-level <strong>Microsoft 365</strong> connector authenticated via distribution-list-level tenant configuration. Segregation by tenant architecture &#8212; not by an application-layer filter or a post-query check.</p><p><strong>Microsoft 365 in Two Connector Modes</strong>: <strong>SharePoint</strong> federated for user-specific content, plus <strong>SharePoint</strong> data ingestion for shared content (legal templates, KYC repositories). <strong>Outlook</strong> for both inbound access and designated mailbox monitoring.</p><p><strong>Custom Connector as a Training Artefact</strong>: Rather than building every custom connector Vivriti might ever want, Wohlig built one demonstration custom connector during the technical training stream as the reference &#8212; Vivriti&#8217;s technical spokes can replicate the pattern indefinitely.</p><p><strong>Adoption as a Success Criterion</strong>: The engagement is scored on weekly active usage, not on deployment. Named champions per cohort, weekly metric review, corrective action, and post-engagement office hours operationalise that commitment.</p><p><strong>Transparent Phased Identity Plan</strong>: <strong>Workforce Identity Federation</strong> with <strong>Microsoft Entra ID</strong> is deferred to a subsequent phase &#8212; this engagement uses <strong>Google Cloud Identity</strong> for SSO. Planned, not omitted.</p><h2>Wohlig&#8217;s Approach</h2><ol><li><p><strong>Kickoff &amp; discovery</strong> &#8212; Sponsorship engagement; department workshops (Asset Management, AIF Operations, Treasury, Distribution, and others); use-case discovery.</p></li><li><p><strong>Multi-app architecture design</strong> &#8212; Roughly 5 GE app instances; department-level <strong>Microsoft 365</strong> connector configuration; isolated <strong>Cloud Storage</strong> buckets.</p></li><li><p><strong>Implementation</strong> &#8212; Multi-app tenant + <strong>Microsoft 365</strong> connectors + 10 no-code agents + 3 ADK agents + 1 demonstration custom connector.</p></li><li><p><strong>Enablement</strong> &#8212; Non-technical training (online, org-wide); technical training (<strong>ADK</strong> + custom connectors); customer enablement + change management.</p></li><li><p><strong>Adoption operations</strong> &#8212; Named champions per cohort; weekly adoption metric review; corrective action where any cohort lags.</p></li><li><p><strong>Project closeout + ongoing office hours</strong> &#8212; Handover; documentation; three-weekly post-engagement office hours to sustain adoption.</p></li></ol><div><hr></div><h2>About Vivriti Capital</h2><p><strong>Vivriti Capital</strong> is a diversified financial-services group with functions spanning asset management, AIF Operations, Treasury, Distribution, Credit &amp; Risk, and Finance. Vivriti operates on <strong>Microsoft 365</strong> for collaboration and on <strong>Vivriti Invest 2.0</strong> for its internal investment platform.</p><h2>About Wohlig Transformations Pvt. Ltd.</h2><p>Founded in 2015, <strong>Wohlig Transformations</strong> specialises in <strong>GenAI</strong> and <strong>DevOps</strong>, with 160+ professionals across India and the UK.</p><div><hr></div><p><strong>Detailed Case Study Presentation : <a href="https://youtu.be/lGSE-zqW6QY">https://youtu.be/lGSE-zqW6QY</a></strong></p>]]></content:encoded></item><item><title><![CDATA[IKS Health — Azure AI to Google Cloud AI Migration for the Stacks AI ML Engine]]></title><description><![CDATA[IKS Health partnered with Wohlig Transformations to optimize the Stacks AI ML Engine &#8212; its AI-powered healthcare document-processing platform &#8212; across the OCR, Search, and LLM layers on Google Cloud, achieving $0.00557 per page (5.4&#215; better than the SOW&#8217;s <3&#162;/page target) and a]]></description><link>https://insights.wohlig.com/p/iks-health-azure-ai-to-google-cloud</link><guid isPermaLink="false">https://insights.wohlig.com/p/iks-health-azure-ai-to-google-cloud</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Mon, 01 Jun 2026 06:55:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7XkE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F350023f7-7324-41f2-84a2-30f341f8f523_1600x902.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7XkE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F350023f7-7324-41f2-84a2-30f341f8f523_1600x902.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7XkE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F350023f7-7324-41f2-84a2-30f341f8f523_1600x902.png 424w, https://substackcdn.com/image/fetch/$s_!7XkE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F350023f7-7324-41f2-84a2-30f341f8f523_1600x902.png 848w, https://substackcdn.com/image/fetch/$s_!7XkE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F350023f7-7324-41f2-84a2-30f341f8f523_1600x902.png 1272w, https://substackcdn.com/image/fetch/$s_!7XkE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F350023f7-7324-41f2-84a2-30f341f8f523_1600x902.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7XkE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F350023f7-7324-41f2-84a2-30f341f8f523_1600x902.png" width="1456" height="821" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/350023f7-7324-41f2-84a2-30f341f8f523_1600x902.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:821,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:278594,&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://insights.wohlig.com/i/200082777?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F350023f7-7324-41f2-84a2-30f341f8f523_1600x902.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7XkE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F350023f7-7324-41f2-84a2-30f341f8f523_1600x902.png 424w, https://substackcdn.com/image/fetch/$s_!7XkE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F350023f7-7324-41f2-84a2-30f341f8f523_1600x902.png 848w, https://substackcdn.com/image/fetch/$s_!7XkE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F350023f7-7324-41f2-84a2-30f341f8f523_1600x902.png 1272w, https://substackcdn.com/image/fetch/$s_!7XkE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F350023f7-7324-41f2-84a2-30f341f8f523_1600x902.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><strong>IKS Health</strong> partnered with <strong>Wohlig Transformations</strong> to optimize the <strong>Stacks AI ML Engine</strong> &#8212; its AI-powered healthcare document-processing platform &#8212; across the OCR, Search, and LLM layers on Google Cloud, achieving <strong>$0.00557 per page</strong> (5.4&#215; better than the SOW&#8217;s &lt;3&#162;/page target) and a <strong>15-percentage-point gain</strong> in multi-page document matching accuracy in a 3-week sprint.</p><h2>Project Overview</h2><p>As part of a wider cloud modernization initiative, <strong>IKS Health</strong> moved its <strong>Stacks AI ML Engine</strong> &#8212; the document-intelligence platform that processes patient records, dates of service, providers, medical images, and multi-page clinical reports &#8212; from a multi-vendor <strong>Azure AI Search + Azure OCR + OpenAI GPT-4o</strong> stack to a unified Google Cloud AI stack built on <strong>Vertex AI Search</strong>, <strong>Document AI</strong>, and <strong>Gemini 2.5 Flash</strong>. IKS Health had rebuilt the codebase on a five-service <strong>Cloud Run</strong> architecture before engaging Wohlig; our mandate was to tune the OCR, Search, and LLM layers and hand back a production-ready cutover plan. The work ran as a three-week optimization sprint (Apr 6 &#8211; Apr 24, 2026) plus cutover preparation into early May, with every artefact delivered to IKS Health&#8217;s ML and Server teams.</p><h2>The Challenge</h2><p><strong>Multi-Vendor Complexity.</strong> AI workflows were split across <strong>Azure AI Search</strong>, <strong>Azure OCR</strong>, and <strong>OpenAI GPT-4o</strong> &#8212; three vendors, three SLAs, three cost models sitting in front of a single clinical workflow.</p><p><strong>Healthcare Document Complexity.</strong> Production traffic includes multi-page clinical reports, MRI / X-ray imaging, mixed document types per batch, and multiple patients per submission &#8212; healthcare-grade accuracy is required on both single-page and multi-page workflows.</p><p><strong>Large-File Processing Failures.</strong> High-resolution or high-page-count documents failed inside the initial pipeline even when on-disk file size was modest &#8212; a system-capacity issue, not a simple size threshold.</p><p><strong>Cost-per-Page Target.</strong> The SOW set a hard ceiling of <strong>under 3 cents per page</strong> across the combined OCR + Search + LLM pipeline &#8212; end-to-end optimization, not single-component tuning.</p><p><strong>Production-Grade Cutover.</strong> First-time go-live with no prior production to roll back to &#8212; every Go/No-Go gate had to be defensible.</p><h2>Key Objectives</h2><ul><li><p><strong>Unified Cloud AI Stack</strong>: Migrate from Azure + OpenAI to <strong>Vertex AI Search</strong> + <strong>Document AI</strong> + <strong>Gemini 2.5 Flash</strong> without regressing on accuracy or relevance.</p></li><li><p><strong>Sub-3&#162;-per-Page Pipeline</strong>: Hit the SOW&#8217;s cost target across OCR + Search + LLM combined, on real benchmarked workloads.</p></li><li><p><strong>Multi-Page Accuracy Lift</strong>: Improve document grouping and field-level extraction on multi-page healthcare reports.</p></li><li><p><strong>Reusable AI Agent</strong>: Package the optimized engine as a self-contained, modular service IKS Health can drop into future projects.</p></li><li><p><strong>Production Cutover Plan</strong>: Go/No-Go gates, runbook, acceptance tests, and live-monitoring checks so first-time go-live behaves like a controlled deploy.</p></li></ul><h2>The Solution: Optimized Five-Service Cloud Run Pipeline</h2><p><strong>Five-Service Cloud Run Architecture.</strong> The engine runs as five independently-scaled <strong>Cloud Run</strong> services &#8212; <code>chunk-coordinator</code> &#8594; <code>conversion-service</code> (small + large) &#8594; <code>ai-processing</code> &#8594; <code>status-notifier</code>. CPU, memory, concurrency, timeout, and gunicorn workers are configured per service to match the workload.</p><p><strong>The conv-large Split (Wohlig-introduced).</strong> We split <code>conversion-service</code> into two pools. Small jobs stay at 4 CPU / 16 GiB / concurrency 8. A new <strong>conversion-service-large</strong> runs at <strong>8 CPU / 32 GiB, concurrency 1, timeout 3600s</strong> &#8212; a dedicated worker for high-resolution and high-page-count documents that isolates the long-tail without slowing the hot path.</p><p><strong>OCRTEXT Pipeline Mode.</strong> We switched <code>LLM_INPUT_TYPE</code> from <code>IMAGE</code> to <code>OCRTEXT</code> &#8212; <strong>Gemini 2.5 Flash</strong> now consumes <strong>Document AI</strong>&#8216;s clean OCR text instead of raw PNG buffers from every page. Smaller payloads, faster prompts, fewer hallucinations on tables and dates &#8212; the single change that lifted both accuracy and cost together.</p><p><strong>Gemini 2.5 Flash (fine-tuned).</strong> Replaces OpenAI GPT-4o at the LLM stage. Cross-model benchmarking across <strong>GPT-4o</strong>, <strong>Gemini Pro</strong>, and <strong>Gemini 2.5 Flash</strong> drove the selection on unit cost, latency, and field-level accuracy; Gemini Pro stays available as a fallback for harder document classes.</p><p><strong>Technology Stack.</strong> <strong>Vertex AI Search</strong>, <strong>Document AI</strong>, <strong>Gemini 2.5 Flash</strong>, <strong>Cloud Run</strong>, <strong>GKE</strong>, <strong>BigQuery</strong>, <strong>Cloud Storage</strong>, <strong>Cloud Build</strong>, <strong>Terraform</strong>, <strong>Cloud Monitoring</strong>, <strong>Cloud IAM</strong>, <strong>Secret Manager</strong>.</p><h2>Key Benefits &amp; Results</h2><ul><li><p><strong>Previous</strong>: $0.00689 per page on the Azure + OpenAI baseline. <strong>Our Solution</strong>: OCRTEXT mode + fine-tuned Gemini 2.5 Flash + per-service Cloud Run sizing. <strong>Result</strong>: <strong>$0.00557 per page &#8212; 5.4&#215; better than the SOW&#8217;s &lt;3&#162; target</strong>; total run cost $7.736 &#8594; $6.223 on the same 1,118-page benchmark (<strong>&#8722;19.56%</strong>).</p></li><li><p><strong>Previous</strong>: Multi-page document matching at 65%. <strong>Our Solution</strong>: conv-large split + chunking + OCRTEXT pipeline. <strong>Result</strong>: <strong>80% multi-page matching (+15 percentage points)</strong>.</p></li><li><p><strong>Previous</strong>: Files Fully Matched at 67.60%. <strong>Our Solution</strong>: Optimized end-to-end pipeline. <strong>Result</strong>: <strong>78.10% (+10.50 pp)</strong>.</p></li><li><p><strong>Previous</strong>: Field-level accuracy on the Azure baseline. <strong>Our Solution</strong>: Field-specific prompts + OCRTEXT mode. <strong>Result</strong>: PatientDOB <strong>82.09% &#8594; 89.94% (+7.85 pp)</strong>, PatientName <strong>95.06% &#8594; 97.69%</strong>, DateOfService <strong>66.10% &#8594; 70.00%</strong>, Provider <strong>55.75% &#8594; 58.78%</strong>.</p></li><li><p><strong>Previous</strong>: Large-file processing failures on high-resolution / high-page-count documents. <strong>Our Solution</strong>: New conversion-service-large (8 CPU / 32 GiB / concurrency 1 / 3600s). <strong>Result</strong>: Mitigated and tracked through cutover gate G5.</p></li><li><p><strong>Previous</strong>: No production cutover discipline. <strong>Our Solution</strong>: <strong>11 Go/No-Go gates + 14-step runbook + 6 acceptance tests + 8 live-monitoring checks</strong>. <strong>Result</strong>: Production-grade first-time go-live readiness, handed to the ML and Server teams.</p></li></ul><h2>Technical Innovation</h2><p><strong>OCRTEXT Pipeline Mode.</strong> Switching Gemini&#8217;s input from raw PNG buffers to <strong>Document AI</strong> OCR text simultaneously lifted accuracy and dropped cost &#8212; a single change with two-axis impact.</p><p><strong>conv-large Service Split.</strong> A dedicated Cloud Run service for high-resolution and high-page-count documents (<strong>8 CPU / 32 GiB / concurrency 1</strong>), without sacrificing throughput on the small / fast documents that route to conv-small.</p><p><strong>Tuned Per-Service Sizing.</strong> Each of the five Cloud Run services is configured independently &#8212; CPU, memory, concurrency, timeout, gunicorn workers and threads &#8212; for the workload it actually handles.</p><p><strong>Production Cutover Discipline.</strong> 11 Go/No-Go gates, a 14-step runbook, 6 acceptance tests, and 8 live-monitoring checks. Open production-readiness items (large-file, high-page-count, bulk-load) are tracked transparently as gates G5&#8211;G7.</p><p><strong>Reusable AI Agent Packaging.</strong> The optimized stack ships as a self-contained, modular agent that IKS Health can drop into future document-intelligence workflows without re-architecting the OCR / Search / LLM layer.</p><h2>Wohlig&#8217;s Approach</h2><ol><li><p><strong>Discovery &amp; migration assessment</strong> &#8212; audit existing <strong>Azure AI Search</strong>, <strong>Azure OCR</strong>, and <strong>OpenAI GPT-4o</strong> integrations; document baselines, token usage, and the per-page cost scoreboard.</p></li><li><p><strong>Vertex AI Search optimization</strong> &#8212; tune data stores, schemas, and ingestion pipelines; validate content and embedding parity with the Azure baseline.</p></li><li><p><strong>Document AI OCR integration</strong> &#8212; configure processors for IKS Health&#8217;s document types; switch the pipeline to <strong>OCRTEXT</strong> mode.</p></li><li><p><strong>Gemini LLM optimization &amp; prompt re-engineering</strong> &#8212; re-engineer prompts for Gemini&#8217;s instruction format and 1M-token context window; fine-tune <strong>Gemini 2.5 Flash</strong> for stable field-level extraction.</p></li><li><p><strong>Code refactoring &amp; reusable agent packaging</strong> &#8212; factor the orchestration into a modular, agent-based service IKS Health can reuse across future projects.</p></li><li><p><strong>Cross-model benchmarking, system testing, cutover plan</strong> &#8212; <strong>GPT-4o vs Gemini Pro vs Gemini Flash</strong> on the same workload; an 11-scenario test pass (single-page, multi-page grouping, improper sequence, mixed document types, missing fields, fuzzy matching, exact-match DOB / DOS, case insensitivity, MRI / X-ray imaging, low-quality OCR, multi-patient batches); production cutover plan with <strong>11 Go/No-Go gates</strong>, <strong>14-step runbook</strong>, <strong>6 acceptance tests</strong>, and <strong>8 live-monitoring checks</strong>.</p></li></ol><h2>About IKS Health</h2><p><strong>IKS Health</strong> is a leading US-focused healthcare solutions company providing revenue cycle management, clinical documentation improvement, and IT services to hospitals and physician groups. By combining clinical expertise with intelligent automation, IKS Health reduces administrative burdens so clinicians can focus on delivering quality patient care.</p><h2>About Wohlig Transformations Pvt. Ltd.</h2><p>Founded in 2015, <strong>Wohlig Transformations</strong> specialises in <strong>GenAI</strong> and <strong>DevOps</strong>, with 160+ professionals across India and the UK.</p><p><strong>Detailed Case Study : <a href="https://youtu.be/Su_aMgb5o5Q">https://youtu.be/Su_aMgb5o5Q</a></strong></p>]]></content:encoded></item><item><title><![CDATA[Mahindra & Mahindra — From a 90-Spec Benchmarking Agent to a 207-Spec Vehicle Development Platform]]></title><description><![CDATA[Mahindra & Mahindra partnered with Wohlig Transformations to build an AI-powered Vehicle Development, Benchmarking, and Product Planning Platform on Google Agent Development Kit (ADK) + Gemini 3 Flash, evolving from a 90-spec MVP into a production platform analysing]]></description><link>https://insights.wohlig.com/p/mahindra-and-mahindra-from-a-90-spec</link><guid isPermaLink="false">https://insights.wohlig.com/p/mahindra-and-mahindra-from-a-90-spec</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Mon, 01 Jun 2026 06:48:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bKBs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c39db89-e8f6-49ff-b2f6-142bddf11f0a_1600x902.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bKBs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c39db89-e8f6-49ff-b2f6-142bddf11f0a_1600x902.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bKBs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c39db89-e8f6-49ff-b2f6-142bddf11f0a_1600x902.png 424w, https://substackcdn.com/image/fetch/$s_!bKBs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c39db89-e8f6-49ff-b2f6-142bddf11f0a_1600x902.png 848w, https://substackcdn.com/image/fetch/$s_!bKBs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c39db89-e8f6-49ff-b2f6-142bddf11f0a_1600x902.png 1272w, https://substackcdn.com/image/fetch/$s_!bKBs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c39db89-e8f6-49ff-b2f6-142bddf11f0a_1600x902.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bKBs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c39db89-e8f6-49ff-b2f6-142bddf11f0a_1600x902.png" width="1456" height="821" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c39db89-e8f6-49ff-b2f6-142bddf11f0a_1600x902.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:821,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:262933,&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://insights.wohlig.com/i/200081168?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c39db89-e8f6-49ff-b2f6-142bddf11f0a_1600x902.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bKBs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c39db89-e8f6-49ff-b2f6-142bddf11f0a_1600x902.png 424w, https://substackcdn.com/image/fetch/$s_!bKBs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c39db89-e8f6-49ff-b2f6-142bddf11f0a_1600x902.png 848w, https://substackcdn.com/image/fetch/$s_!bKBs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c39db89-e8f6-49ff-b2f6-142bddf11f0a_1600x902.png 1272w, https://substackcdn.com/image/fetch/$s_!bKBs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c39db89-e8f6-49ff-b2f6-142bddf11f0a_1600x902.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><strong>Mahindra &amp; Mahindra</strong> partnered with <strong>Wohlig Transformations</strong> to build an AI-powered Vehicle Development, Benchmarking, and Product Planning Platform on <strong>Google Agent Development Kit (ADK)</strong> + <strong>Gemini 3 Flash</strong>, evolving from a 90-spec MVP into a production platform analysing <strong>207 specs per car</strong> across three integrated functions.</p><h2>Project Overview</h2><p><strong>Mahindra &amp; Mahindra</strong>&#8216;s R&amp;D, product-planning, and competitive-intelligence teams partnered with <strong>Wohlig Transformations</strong> to put AI at the centre of how vehicle decisions get made. The engagement began in February 2026 with a focused 3-week SOW: an <strong>ADK</strong>-powered automotive benchmarking agent covering 90 car specs, car-only competitor analysis, and integration with Mahindra&#8217;s existing ChatAI on <strong>Google Cloud</strong>. The MVP proved the approach quickly &#8212; and on the strength of that impact, Mahindra expanded the scope substantially. The production platform now covers <strong>207 specs per car</strong> across three integrated functions &#8212; Vehicle Development, Benchmarking, and Product Planning &#8212; with a custom <strong>React.js</strong> UI/UX, <strong>ADK</strong> exposed as the REST API backend, user RBAC (admin / analyst / viewer), custom views per spec or spec group, chat history across sessions, and multi-file upload for document intelligence. A multi-source data layer &#8212; <strong>Google Custom Search API</strong>, web scraping, <strong>YouTube Data API v3</strong>, and PDF document intelligence &#8212; feeds <strong>Gemini 3 Flash</strong> agents, all deployed on <strong>Google Cloud</strong>.</p><h2>The Challenge</h2><p><strong>Single-Function Bottleneck</strong>: The original ChatAI integration only supported competitor benchmarking &#8212; but Mahindra&#8217;s R&amp;D teams needed an AI workstation spanning vehicle development, benchmarking, <strong>and</strong> product planning, not a point tool.</p><p><strong>Limited Spec Coverage</strong>: 90 car specs was the right scope to validate an MVP, but production decisions across SUVs, pickups, commercial vehicles, and tractors demand far richer analytical depth.</p><p><strong>Multi-Source Data Sprawl</strong>: Vehicle insights live across official automotive sites, expert review portals, YouTube channels, and OEM PDF brochures &#8212; no single source covers it all, and stitching them together manually doesn&#8217;t scale.</p><p><strong>RBAC + Custom Views</strong>: Admins, analysts, and viewers each need different surfaces &#8212; and analysts often need bespoke spec groupings that a default schema can&#8217;t anticipate.</p><p><strong>Conversational Continuity</strong>: One-off queries weren&#8217;t enough; teams needed chat history that preserved investigation context across multi-day workflows.</p><h2>Key Objectives</h2><ul><li><p><strong>Expand Spec Coverage</strong>: Grow from 90 to 207 specs per car to support deep R&amp;D decisions.</p></li><li><p><strong>Three Integrated Functions</strong>: Unify Vehicle Development + Benchmarking + Product Planning in one platform.</p></li><li><p><strong>Custom React UI/UX</strong>: Replace the existing-ChatAI integration with a purpose-built frontend driven by <strong>ADK</strong> as a REST API.</p></li><li><p><strong>RBAC + Custom Views</strong>: Admin / analyst / viewer tiers plus per-user custom views of individual specs or spec groups.</p></li><li><p><strong>Multi-Source Data Integration</strong>: Combine web scraping, <strong>Google Custom Search API</strong>, <strong>YouTube Data API v3</strong>, and PDF document intelligence with RAG.</p></li><li><p><strong>Production Security</strong>: <strong>Cloud IAM</strong>, <strong>Secret Manager</strong>, <strong>API Gateway</strong>, end-to-end encryption, and VPC isolation.</p></li></ul><h2>The Solution: AI-Powered Vehicle Development + Benchmarking + Product Planning Platform</h2><p><strong>V1 &#8212; The 3-Week MVP (Feb&#8211;Mar 2026)</strong>: An <strong>ADK</strong>-powered benchmarking agent covering 90 car specs and car-only competitor analysis, integrated with Mahindra&#8217;s existing ChatAI. A <strong>Python</strong> backend on <strong>Google Cloud</strong>, with RBAC, interactive dashboards, and exportable reports (PDF / Excel / PPT) &#8212; delivered in three weeks.</p><p><strong>V2 &#8212; The Expanded Production Platform</strong>: 207 specs per car across three integrated functions &#8212; Vehicle Development, Benchmarking, and Product Planning. A custom <strong>React.js</strong> UI/UX with <strong>ADK</strong> as the REST API backend, RBAC plus custom views per spec or spec group, chat history across sessions, and multi-file upload with document intelligence (OCR + RAG).</p><p><strong>Multi-Source Data Layer</strong>: <strong>Google Custom Search API</strong> (domain-whitelisted to curated automotive sources) + web-scraping pipelines + <strong>YouTube Data API v3</strong> (video reviews, expert opinions, sentiment) + PDF brochure ingestion &#8594; OCR &#8594; vector embeddings &#8594; RAG corpus.</p><p><strong>AI Core</strong>: <strong>Vertex AI Gemini 3 Flash</strong> agents orchestrated by <strong>ADK</strong> in a multi-agent pipeline &#8212; competitor data extraction &#8594; spec normalisation &#8594; RAG &#8594; comparative insights &#8594; report drafting.</p><p><strong>Technology Stack</strong>: <strong>Vertex AI</strong>, <strong>Gemini 3 Flash</strong>, <strong>Agent Development Kit (ADK)</strong>, <strong>React.js</strong>, <strong>Python</strong>, <strong>FastAPI</strong>, <strong>Google Custom Search API</strong>, <strong>YouTube Data API v3</strong>, <strong>Cloud Run</strong>, <strong>Cloud Storage</strong>, <strong>BigQuery</strong>, <strong>Cloud IAM</strong>, <strong>Secret Manager</strong>, <strong>API Gateway</strong>, and <strong>Cloud Operations Suite</strong>.</p><h2>Key Benefits &amp; Results</h2><ul><li><p><strong>Previous</strong>: 90 specs, car-only benchmarking. <strong>Our Solution</strong>: 207-spec, 3-function platform (Vehicle Development + Benchmarking + Product Planning). <strong>Result</strong>: 2.3&#215; analytical depth and coverage of the full R&amp;D decision lifecycle.</p></li><li><p><strong>Previous</strong>: Integration with existing ChatAI (limited UX flexibility). <strong>Our Solution</strong>: Custom <strong>React.js</strong> UI/UX with <strong>ADK</strong> as REST API. <strong>Result</strong>: Frontend and backend evolve independently &#8212; a future-proofed architecture.</p></li><li><p><strong>Previous</strong>: RBAC tiers only. <strong>Our Solution</strong>: RBAC + per-user custom views per spec or spec group. <strong>Result</strong>: Analysts and product planners get bespoke surfaces without admin intervention.</p></li><li><p><strong>Previous</strong>: Stateless queries. <strong>Our Solution</strong>: Chat history across sessions. <strong>Result</strong>: Investigation context preserved across multi-day workflows.</p></li><li><p><strong>Previous</strong>: Single PDF upload. <strong>Our Solution</strong>: Multi-file upload. <strong>Result</strong>: Document intelligence across multiple brochures and reports in one session.</p></li><li><p><strong>Previous</strong>: Single-source competitor data. <strong>Our Solution</strong>: Multi-source integration (Custom Search + Web Scraping + YouTube + Document RAG). <strong>Result</strong>: Richer, cross-validated insights for product decisions.</p></li><li><p><strong>Previous</strong>: Manual report drafting. <strong>Our Solution</strong>: AI-generated comparative reports. <strong>Result</strong>: Exportable PDF / Excel / PPT outputs ready for stakeholder review.</p></li></ul><h2>Technical Innovation</h2><p><strong>ADK as REST API + React Frontend</strong>: A modular architecture where Google&#8217;s <strong>Agent Development Kit</strong> is exposed as a backend microservice and the frontend is a custom <strong>React.js</strong> application. Frontend and backend evolve independently &#8212; Mahindra can change UX patterns without touching agent logic, and Wohlig can swap models or pipelines without touching the UI.</p><p><strong>207-Spec Schema with Custom Views</strong>: A full automotive specification schema (engine, safety, comfort, infotainment, dimensions, performance, and more) at 207 fields per car, with user-defined custom views that let analysts pivot on any combination of specs or spec groups.</p><p><strong>Multi-Source AI Pipeline</strong>: <strong>Google Custom Search API</strong> (domain-whitelisted to curated automotive sources) + web scraping + <strong>YouTube Data API v3</strong> + PDF document intelligence with OCR + RAG &#8212; four orthogonal data streams unified by <strong>ADK</strong> orchestration and <strong>Gemini 3 Flash</strong> insight generation.</p><p><strong>RBAC + Chat History + Multi-File Upload</strong>: Production-grade experience features &#8212; admin / analyst / viewer tiers, persistent chat history, and multi-document upload with RAG &#8212; layered on top of the agent, and uncommon in MVP-stage automotive AI tools.</p><p><strong>Continuous Scope Expansion</strong>: A 3-week SOW MVP that grew into a sustained production engagement. The V1 &#8594; V2 jump &#8212; 90 &#8594; 207 specs, single &#8594; three functions, integration &#8594; custom UI &#8212; demonstrates Wohlig&#8217;s ability to evolve a product alongside client adoption.</p><h2>Wohlig&#8217;s Approach</h2><ol><li><p><strong>Architecture &amp; setup</strong> &#8212; GCP project setup, access finalization, and platform integration scoping.</p></li><li><p><strong>AI &amp; data pipeline development</strong> &#8212; Web scraping + <strong>Google Custom Search API</strong> + <strong>YouTube Data API v3</strong> integrations, <strong>Gemini 3 Flash</strong> workflows, and <strong>ADK</strong> orchestration.</p></li><li><p><strong>Visualization &amp; reporting</strong> &#8212; Interactive dashboards, report templates, and multi-format export (PDF / Excel / PPT).</p></li><li><p><strong>V1 deployment &amp; UAT</strong> &#8212; <strong>Cloud Run</strong> deployment, <strong>Cloud IAM</strong> + RBAC, monitoring, and Mahindra UAT.</p></li><li><p><strong>V2 scope expansion</strong> &#8212; 207-spec schema; three functions (Vehicle Development + Benchmarking + Product Planning); <strong>React.js</strong> UI/UX rebuild; <strong>ADK</strong> as REST API; custom views; chat history; multi-file upload.</p></li><li><p><strong>Continuous iteration</strong> &#8212; Documentation, training, knowledge transfer, and ongoing optimization with Mahindra&#8217;s R&amp;D and product-planning teams.</p></li></ol><h2>About Mahindra &amp; Mahindra</h2><p><strong>Mahindra &amp; Mahindra Ltd.</strong> is one of India&#8217;s largest multinational automotive corporations, headquartered in Mumbai. Part of the globally diversified Mahindra Group, its portfolio spans SUVs, pickup trucks, commercial vehicles, tractors, and emerging mobility solutions across India, South Africa, Australia, and Latin America. Mahindra&#8217;s R&amp;D and product-planning functions are leading AI adoption to accelerate vehicle development and competitive intelligence.</p><h2>About Wohlig Transformations Pvt. Ltd.</h2><p>Founded in 2015, <strong>Wohlig Transformations</strong> specialises in <strong>GenAI</strong> and <strong>DevOps</strong>, with 160+ professionals across India and the UK.</p><p><strong>Detailed Case Study : <a href="https://youtu.be/EQiKatjFpKI">https://youtu.be/EQiKatjFpKI</a></strong></p>]]></content:encoded></item><item><title><![CDATA[Dr. Reddy's Laboratories: From a GenAI Workshop to an AI-Powered Patent Intelligence Platform]]></title><description><![CDATA[Project Overview]]></description><link>https://insights.wohlig.com/p/dr-reddys-laboratories-from-a-genai</link><guid isPermaLink="false">https://insights.wohlig.com/p/dr-reddys-laboratories-from-a-genai</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Fri, 29 May 2026 09:29:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!DwtA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd81f1b2-83fa-438f-8b44-44116ca02229_1600x902.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DwtA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd81f1b2-83fa-438f-8b44-44116ca02229_1600x902.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DwtA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd81f1b2-83fa-438f-8b44-44116ca02229_1600x902.png 424w, https://substackcdn.com/image/fetch/$s_!DwtA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd81f1b2-83fa-438f-8b44-44116ca02229_1600x902.png 848w, https://substackcdn.com/image/fetch/$s_!DwtA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd81f1b2-83fa-438f-8b44-44116ca02229_1600x902.png 1272w, https://substackcdn.com/image/fetch/$s_!DwtA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd81f1b2-83fa-438f-8b44-44116ca02229_1600x902.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DwtA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd81f1b2-83fa-438f-8b44-44116ca02229_1600x902.png" width="1456" height="821" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd81f1b2-83fa-438f-8b44-44116ca02229_1600x902.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:821,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:240929,&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://insights.wohlig.com/i/199716577?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd81f1b2-83fa-438f-8b44-44116ca02229_1600x902.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DwtA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd81f1b2-83fa-438f-8b44-44116ca02229_1600x902.png 424w, https://substackcdn.com/image/fetch/$s_!DwtA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd81f1b2-83fa-438f-8b44-44116ca02229_1600x902.png 848w, https://substackcdn.com/image/fetch/$s_!DwtA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd81f1b2-83fa-438f-8b44-44116ca02229_1600x902.png 1272w, https://substackcdn.com/image/fetch/$s_!DwtA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd81f1b2-83fa-438f-8b44-44116ca02229_1600x902.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><h3>Project Overview</h3><p>Dr. Reddy&#8217;s Laboratories (DRL) partnered with Wohlig Transformations in a two-phase engagement &#8212; starting with a 1-week Google Cloud GenAI workshop and continuing into an ongoing engineering engagement building Project Cognito, DRL&#8217;s AI-powered drug prioritization platform. The first production pillar shipped is the IP (Intellectual Property) Pillar &#8212; a multi-model patent-landscape analysis pipeline (Gemini extracts, Claude judges) running across four analytical dimensions.</p><p>DRL&#8217;s R&amp;D, Manufacturing, Quality, and Biologics functions &#8212; led by Nishit Mittal as Data Science Lead &#8212; engaged Wohlig to accelerate GenAI adoption across drug-development decision-making. The work followed a deliberate Workshop &#8594; Production arc: a 1-week capability demonstration first, then a continuous production-engineering relationship. In that second phase, Wohlig is building Project Cognito, DRL&#8217;s umbrella platform for drug prioritization and research automation, delivered as discrete production pillars. The first to ship is the IP Pillar, a multi-model pipeline that pairs Gemini for extraction with Claude as a judge across four analytical dimensions, runs on 10 parallel Cloud Run instances, retrieves from a ChromaDB vector store, and refreshes automatically on a bi-weekly schedule.</p><div><hr></div><h3>The Challenge</h3><p>Capability Demonstration</p><p>Before committing to a long-term AI engineering engagement, DRL&#8217;s R&amp;D leadership needed to see Wohlig build production-grade patterns end-to-end on real pharma use cases &#8212; not slideware.</p><p>Patent Landscape Complexity</p><p>A drug&#8217;s IP exposure spans composition-of-matter, formulation, device, and process patents &#8212; each with different inclusion logic, jurisdictional nuances, and litigation history.</p><p>Multi-Source Data Sprawl</p><p>Patent data lives across Espacenet, Google Patents, and the Indian Patent Database (IPD); clinical evidence spans 6+ international registries. Each source has its own schema, latency, and gaps.</p><p>LLM Fragility</p><p>Single-model patent analysis hallucinates classifications, misses contextual Tier-3 matches, and produces malformed JSON &#8212; none of which is acceptable in a system informing real drug-investment decisions.</p><p>Production Scale</p><p>A bi-weekly refresh across hundreds of drugs requires parallel compute, retry strategies, incremental processing, and cost discipline &#8212; far beyond what a notebook prototype provides.</p><div><hr></div><h3>Key Objectives</h3><ul><li><p>Workshop-First Demonstration: Build all three workshop modules end-to-end on Google Cloud (ADK + Vertex AI + Document AI + Vector Search + Cloud Run).</p></li><li><p>Multi-Model Verification: Use Gemini for extraction and Claude as judge to catch hallucinations on every field.</p></li><li><p>Tiered Patent Inclusion: Codify a Tier 1 / Tier 2 / Tier 3 taxonomy that surfaces every relevant patent, including non-obvious contextual matches.</p></li><li><p>Multi-Source Coverage: Index every relevant patent and clinical-trial source (Espacenet, Google Patents, IPD, ClinicalTrials.gov, PubMed, ChiCTR, EU CTR, CTRI India, JRCT Japan).</p></li><li><p>Production Compute: Parallel Cloud Run pipelines, Cloud Scheduler refresh, BigQuery storage, and an AlloyDB migration path.</p></li><li><p>Continuous Optimization: Cost monitoring, per-dimension evaluation metrics, and knowledge transfer to DRL.</p></li></ul><div><hr></div><h3>The Solution: Two-Phase GenAI Engagement</h3><h4>Phase 1: 1-Week Workshop</h4><p>A Google Cloud GenAI workshop delivered three hands-on modules end-to-end.</p><p>Module 1 was a multi-agent Intelligent Chatbot built on four ADK agents (Structured Data, Unstructured Data, Web Search, and a Response Aggregator) with custom RAG on Vertex AI Vector Search.</p><p>Module 2 was a Document Intelligence pipeline for FDA Complete Response Letter (CRL) analysis using Document AI plus four specialized agents (Checklist, Summary, Metadata, Cross-Reference).</p><p>Module 3 was an MCP (Model Context Protocol) server giving a natural-language interface to BigQuery and Cloud SQL, containerised on Cloud Run.</p><h4>Phase 2: Project Cognito</h4><p>In the ongoing engagement, Wohlig built Project Cognito&#8217;s IP Pillar end-to-end, scaling the workshop&#8217;s proven patterns into a production system.</p><h4>IP Pillar Architecture</h4><p>Gemini extracts, Claude judges; 10 parallel Cloud Run instances per run; a ChromaDB vector store with k=12 KNN cosine similarity; sliding-window overlap with section-aware chunking; a metadata pre-filter (year, jurisdiction, patent type, assignee); Cloud Scheduler bi-weekly refresh; and all evaluation fields stored in BigQuery.</p><h4>Tier 1 / Tier 2 / Tier 3 Patent Inclusion</h4><p>Drug-name, brand, and Orange Book references resolve to Tier 1; chemical-structure matches to Tier 2; and assignee plus device, formulation, and process signals with a product-specific link to Tier 3.</p><h4>Multi-Source Data Integration</h4><p>Espacenet and Google Patents are pre-fetched in parallel, a reverse-engineered IPD fetcher fills the Indian Patent Database gap, and six clinical trial registries are indexed.</p><h4>Technology Stack</h4><p>Vertex AI, Gemini, Claude, Agent Development Kit (ADK), Document AI, Vertex AI Vector Search, BigQuery, Cloud Run, Cloud Scheduler, Firestore, Cloud Storage, Secret Manager, ChromaDB (&#8594; AlloyDB planned), FastAPI, and Python.</p><div><hr></div><h3>Key Benefits &amp; Results</h3><p><strong>Previous:</strong> One-shot single-model LLM patent analysis with high hallucination risk.</p><p><strong>Our Solution:</strong> Gemini extracts and Claude judges with parallel verification.</p><p><strong>Result:</strong> Every field is cross-checked; failed checks trigger correction with confidence recalculation.</p><p><strong>Previous:</strong> Tier-1-only patent search that misses contextual matches.</p><p><strong>Our Solution:</strong> Tier 1 / Tier 2 / Tier 3 taxonomy.</p><p><strong>Result:</strong> Captures composition-of-matter, formulation, device, process, and dosing patents that assignee-only or direct-mention search misses.</p><p><strong>Previous:</strong> Single patent source coverage gaps.</p><p><strong>Our Solution:</strong> Parallel Espacenet + Google Patents pre-fetch plus a reverse-engineered IPD fetcher.</p><p><strong>Result:</strong> Patent data normally requiring millions in third-party fees, now in-house.</p><p><strong>Previous:</strong> Tavily API cost for web search.</p><p><strong>Our Solution:</strong> Migrated to the Vertex AI Google Search tool with domain restriction and keyword match.</p><p><strong>Result:</strong> Lower cost, better coverage.</p><p><strong>Previous:</strong> Sequential pipeline runs and slow refresh.</p><p><strong>Our Solution:</strong> 10 parallel Cloud Run instances with CLOUD_RUN_TASK_INDEX work distribution and Cloud Scheduler automation.</p><p><strong>Result:</strong> Production-ready bi-weekly refresh across hundreds of drugs.</p><p><strong>Previous:</strong> Notebook prototypes only (Phase 1).</p><p><strong>Our Solution:</strong> Production deployment on Cloud Run with BigQuery storage and monitoring.</p><p><strong>Result:</strong> Workshop patterns scaled into a real production system in Phase 2.</p><div><hr></div><h3>Technical Innovation</h3><h4>Gemini + Claude Multi-Model Judging</h4><p>Gemini extracts patent data; Claude evaluates and verifies every field in batches of 10 across 8 parallel API calls. Failed checks trigger correction with confidence recalculation &#8212; removing single-model hallucination risk entirely.</p><h4>Tier 1 / Tier 2 / Tier 3 Patent Inclusion Logic</h4><p>An explicit, codified taxonomy for direct drug, brand, and code mentions, chemical-structure matches, and contextual assignee plus product-type matches. It catches the Tier 3 patents most pipelines miss.</p><h4>Mandatory Blocking Category Classification</h4><p>Every patent receives a non-empty classification (composition_of_matter, formulation, device, and more), read directly from the patent claims rather than the title or abstract. This drives downstream dimension routing.</p><h4>Reverse-Engineered IPD Fetcher</h4><p>Replaces a third-party service that charges millions for Indian Patent Database fields. Built in-house, it was immediately cost-positive in operation.</p><h4>Parallel Cloud Run Compute</h4><p>10 instances per pipeline run with CLOUD_RUN_TASK_INDEX work distribution, exponential-backoff retries for Gemini and Claude rate limits, and incremental processing (insert new, skip unchanged) &#8212; production scale, not POC scale.</p><div><hr></div><h3>Wohlig&#8217;s Approach</h3><ol><li><p>Workshop &amp; capability demonstration &#8212; a 1-week hands-on build of three modules covering the agentic chatbot, document intelligence, and MCP-server data-lake access.</p></li><li><p>Kickoff &amp; architectural design &#8212; defining the multi-pillar Project Cognito architecture, with the IP Pillar selected as Pillar 1.</p></li><li><p>Multi-model pipeline engineering &#8212; Gemini + Claude judge integration, ChromaDB retrieval, tiered inclusion logic, and Blocking Category Classification.</p></li><li><p>Multi-source data integration &#8212; Espacenet, Google Patents, and the reverse-engineered IPD fetcher; plus ClinicalTrials.gov, PubMed, ChiCTR, EU CTR, CTRI India, and JRCT Japan.</p></li><li><p>Production compute engineering &#8212; 10 parallel Cloud Run instances, Cloud Scheduler bi-weekly refresh, and BigQuery evaluation storage.</p></li><li><p>Evaluation framework &amp; continuous iteration &#8212; per-dimension metrics (faithfulness, context precision, answer relevancy, cross-dimension coherence), knowledge transfer, the planned AlloyDB migration for production scale, and the upcoming Medical Potential, API Complexity, and Complexity Pillars.</p></li></ol><div><hr></div><h3>About Dr. Reddy&#8217;s Laboratories</h3><p>Dr. Reddy&#8217;s Laboratories Limited (DRL) is a Hyderabad-headquartered global pharmaceutical company specialising in generics, biosimilars, and proprietary products. Its R&amp;D, Manufacturing, Quality, and Biologics functions are leading AI adoption across drug-development decision-making, regulatory document processing, and patent-landscape analysis.</p><h3>About Wohlig Transformations Pvt. Ltd.</h3><p>Founded in 2015, Wohlig Transformations specialises in GenAI and DevOps, with 160+ professionals across India and the UK.</p><div><hr></div><p>Detailed Case Study : <a href="https://youtu.be/i1rsUJcgeow">https://youtu.be/i1rsUJcgeow</a></p>]]></content:encoded></item><item><title><![CDATA[KreditBee: AI-First AWS-to-Google Cloud Migration in Just 3 Days]]></title><description><![CDATA[Project Overview]]></description><link>https://insights.wohlig.com/p/kreditbee-ai-first-aws-to-google</link><guid isPermaLink="false">https://insights.wohlig.com/p/kreditbee-ai-first-aws-to-google</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Fri, 29 May 2026 09:22:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-IpL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a2e110e-6fa7-4978-8114-a9cc735d4443_1596x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-IpL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a2e110e-6fa7-4978-8114-a9cc735d4443_1596x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-IpL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a2e110e-6fa7-4978-8114-a9cc735d4443_1596x900.png 424w, https://substackcdn.com/image/fetch/$s_!-IpL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a2e110e-6fa7-4978-8114-a9cc735d4443_1596x900.png 848w, https://substackcdn.com/image/fetch/$s_!-IpL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a2e110e-6fa7-4978-8114-a9cc735d4443_1596x900.png 1272w, https://substackcdn.com/image/fetch/$s_!-IpL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a2e110e-6fa7-4978-8114-a9cc735d4443_1596x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-IpL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a2e110e-6fa7-4978-8114-a9cc735d4443_1596x900.png" width="1456" height="821" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2a2e110e-6fa7-4978-8114-a9cc735d4443_1596x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:821,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:349523,&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://insights.wohlig.com/i/199716070?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a2e110e-6fa7-4978-8114-a9cc735d4443_1596x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-IpL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a2e110e-6fa7-4978-8114-a9cc735d4443_1596x900.png 424w, https://substackcdn.com/image/fetch/$s_!-IpL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a2e110e-6fa7-4978-8114-a9cc735d4443_1596x900.png 848w, https://substackcdn.com/image/fetch/$s_!-IpL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a2e110e-6fa7-4978-8114-a9cc735d4443_1596x900.png 1272w, https://substackcdn.com/image/fetch/$s_!-IpL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2a2e110e-6fa7-4978-8114-a9cc735d4443_1596x900.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><h3>Project Overview</h3><p>KreditBee partnered with Wohlig Transformations to validate a Google Cloud migration path for its AWS-native application stack &#8212; using an AI-assisted development workflow to compress the core migration into 2&#8211;3 days and dedicate the remaining engagement to end-to-end testing and standards definition.</p><p>KreditBee runs its core application stack on AWS &#8212; Lambda (Go), API Gateway, SNS/SQS, S3, and RDS MySQL. As part of its cloud strategy, KreditBee engaged Wohlig to evaluate Google Cloud Platform as a potential migration target. This Google Cloud DAF-funded proof-of-concept migrated the application development environment to GCP, validated the technical feasibility of the equivalent GCP stack, and established the standards that will drive the eventual production migration.</p><p>Using an AI-first approach, the engagement delivered 18 Cloud Run Functions, 11 Dockerfiles, 7 Apigee API proxies, and more than 50 Pub/Sub topics while documenting reusable patterns for future production rollout.</p><div><hr></div><h3>The Challenge</h3><h4>Multi-Service AWS Footprint</h4><p>A core stack spanning Lambda, API Gateway, SNS/SQS, S3, RDS MySQL, Fargate crons, and Secrets Manager required credible Google Cloud equivalents rather than a simple lift-and-shift approach.</p><h4>Compressed POC Window</h4><p>The project had a 10-day implementation budget to validate migration feasibility without sacrificing quality, governance, or testing rigor.</p><h4>Terraform Provider Switch</h4><p>Existing AWS Terraform configurations needed to be translated to the Google Cloud provider across modules, resources, variables, and deployment workflows.</p><h4>Delayed Messaging Semantics</h4><p>AWS SQS delayed-message patterns do not map directly to Pub/Sub and required a different architectural approach to preserve business behavior.</p><h4>Production-Path Standards</h4><p>The proof of concept needed to establish reusable naming conventions, infrastructure standards, containerization patterns, and API governance models suitable for production scale.</p><div><hr></div><h3>Key Objectives</h3><ul><li><p>AI-First Migration: Accelerate conversion using AI-assisted development while maintaining human review and testing.</p></li><li><p>End-to-End Equivalence: Validate every AWS-to-GCP service mapping through integration testing.</p></li><li><p>Terraform-Managed Infrastructure: Deploy all resources as code with no manually configured infrastructure.</p></li><li><p>Delayed Messaging Support: Recreate SQS delayed-message behavior using native Google Cloud services.</p></li><li><p>Production Standards: Define scalable architecture, deployment, and governance patterns for future migrations.</p></li></ul><div><hr></div><h3>The Solution: AI-Assisted AWS to GCP Migration</h3><h4>Service Mapping</h4><p>AWS ServiceGoogle Cloud EquivalentAPI GatewayApigeeLambda (Go)Cloud Run FunctionsSNS / SQSPub/SubS3Cloud Storage (GCS)RDS MySQLSelf-managed MySQL on Compute EngineFargate (Cron Jobs)GKE Pilot / Cloud Run JobsCloudWatch / EventBridgeCloud SchedulerSecrets ManagerSecret ManagerDelayed SQS MessagesCloud Tasks</p><h4>AI-Assisted Migration Workflow</h4><p>The migration leveraged AI across three complementary approaches.</p><p><strong>Inline IDE Assistance</strong></p><p>Used for bulk Lambda-to-Cloud Run Function conversion, replacing AWS SDK integrations with Google Cloud client libraries and generating boilerplate code.</p><p><strong>Agentic Migration</strong></p><p>Handled Terraform provider translation, complex stateful functions, and messaging pattern conversions from SNS/SQS to Pub/Sub.</p><p><strong>Model-Level Pattern Review</strong></p><p>Provided reusable migration templates, architecture consistency checks, and QA reviews for AI-generated outputs.</p><p>Every workload followed a structured process:</p><p>Analyse &#8594; Generate &#8594; Human Review &#8594; Test &#8594; Commit</p><p>No function was deployed without human validation.</p><h4>Landing Zone</h4><p>A production-aligned Google Cloud foundation was established consisting of:</p><ul><li><p>1 Organization</p></li><li><p>1 Folder</p></li><li><p>3 Projects (Network Host, Application, Shared Services)</p></li><li><p>Shared VPC</p></li><li><p>IAM controls</p></li><li><p>Organization Policies</p></li><li><p>Billing integration</p></li></ul><h4>Application Architecture</h4><p>Apigee serves as the API gateway layer in front of Cloud Run Functions developed in Go.</p><p>Pub/Sub and Cloud Tasks manage asynchronous messaging workloads.</p><p>Cloud Storage handles object storage requirements.</p><p>MySQL runs on Compute Engine behind a bastion host.</p><p>Cloud Scheduler orchestrates cron-based processes, while Secret Manager stores application credentials.</p><h4>CI/CD</h4><p>Existing GitHub Actions pipelines were migrated to Google Cloud using Workload Identity Federation (WIF) for keyless authentication and Terraform-managed deployments.</p><h4>Technology Stack</h4><p>Cloud Run Functions, Apigee, Pub/Sub, Cloud Tasks, Cloud Storage, Cloud Scheduler, Secret Manager, Compute Engine, MySQL, Workload Identity Federation (WIF), Terraform, and GitHub Actions.</p><div><hr></div><h3>Key Benefits &amp; Results</h3><h4>Faster Function Migration</h4><p><strong>Previous:</strong> Multi-week Lambda-by-Lambda migration.</p><p><strong>Solution:</strong> AI-assisted conversion pipeline with engineering oversight.</p><p><strong>Result:</strong> 18 Lambda functions migrated to Cloud Run Functions in 2&#8211;3 days.</p><h4>Infrastructure-as-Code Modernization</h4><p><strong>Previous:</strong> AWS-specific Terraform dependencies.</p><p><strong>Solution:</strong> AI-assisted Terraform provider conversion.</p><p><strong>Result:</strong> Complete GCP Terraform module suite covering networking, databases, identity, storage, scheduling, messaging, and API management.</p><h4>API Modernization</h4><p><strong>Previous:</strong> AWS-native API routing.</p><p><strong>Solution:</strong> Apigee implementation.</p><p><strong>Result:</strong> 7 API proxies supporting custom domains, CORS policies, and load balancing.</p><h4>Messaging Modernization</h4><p><strong>Previous:</strong> SNS/SQS architecture.</p><p><strong>Solution:</strong> Pub/Sub combined with Cloud Tasks.</p><p><strong>Result:</strong> More than 50 Pub/Sub topics with preserved delayed-message functionality.</p><h4>Repeatable Deployments</h4><p><strong>Previous:</strong> Console-configured infrastructure.</p><p><strong>Solution:</strong> Fully Terraform-managed resources.</p><p><strong>Result:</strong> Version-controlled, repeatable, and code-reviewed deployments.</p><h4>Production Readiness</h4><p><strong>Previous:</strong> Temporary proof-of-concept implementations.</p><p><strong>Solution:</strong> Standards-first architecture and documentation.</p><p><strong>Result:</strong> Production-ready Terraform modules, naming standards, containerization patterns, and Apigee governance guidelines.</p><div><hr></div><h3>Technical Innovation</h3><h4>AI-First Migration Framework</h4><p>A combination of IDE assistance, agentic workflows, and model-driven review accelerated migration timelines while maintaining engineering quality controls.</p><h4>Cloud Tasks for Delayed Messaging</h4><p>Because SQS delayed messages do not directly map to Pub/Sub, Cloud Tasks was introduced alongside Pub/Sub to preserve delayed-delivery behavior without changing business logic.</p><h4>Workload Identity Federation Everywhere</h4><p>GitHub Actions and inter-service communication relied on keyless authentication using Workload Identity Federation, eliminating long-lived service account keys.</p><h4>Inverted Timeline Allocation</h4><p>Traditional migrations often spend weeks on code conversion and days on validation.</p><p>This project completed conversion in 2&#8211;3 days and dedicated the majority of the engagement to integration testing and quality assurance.</p><h4>Production-Scale Standards</h4><p>All validated patterns&#8212;including Terraform modules, naming conventions, containerization approaches, and Apigee configurations&#8212;were designed for future production adoption rather than temporary proof-of-concept use.</p><div><hr></div><h3>Wohlig&#8217;s Approach</h3><ol><li><p>Catalogued and classified every Lambda function, trigger, environment variable, and AWS dependency.</p></li><li><p>Established the Google Cloud landing zone, Shared VPC, IAM model, organizational hierarchy, and billing foundation.</p></li><li><p>Used AI-assisted development to migrate 18 critical Lambda functions and convert Terraform configurations to Google Cloud equivalents.</p></li><li><p>Implemented supporting services including Pub/Sub, Cloud Tasks, Apigee, GitHub Actions migration, and Workload Identity Federation.</p></li><li><p>Performed end-to-end validation covering onboarding flows, messaging systems, database connectivity, scheduled jobs, and API routing.</p></li><li><p>Delivered migration runbooks, production recommendations, and knowledge-transfer sessions to the KreditBee engineering team.</p></li></ol><div><hr></div><h3>About KreditBee</h3><p>KreditBee, operated by Krazybee Services Limited, is a Bengaluru-based fintech company providing digital lending solutions for salaried and self-employed professionals across India. Founded in 2016, the company is an RBI-registered systemically important Non-Banking Financial Company (NBFC).</p><h3>About Wohlig Transformations Pvt. Ltd.</h3><p>Founded in 2015, Wohlig Transformations specializes in GenAI and DevOps, with more than 160 professionals across India and the United Kingdom.</p><div><hr></div><p>Detailed Case Study : <a href="https://youtu.be/M9V5tYhfShc">https://youtu.be/M9V5tYhfShc</a></p>]]></content:encoded></item><item><title><![CDATA[Meesho Memory: Building an Enterprise Document Intelligence Platform with Google Workspace, Gemini Enterprise & ADK]]></title><description><![CDATA[Project Overview]]></description><link>https://insights.wohlig.com/p/meesho-memory-building-an-enterprise</link><guid isPermaLink="false">https://insights.wohlig.com/p/meesho-memory-building-an-enterprise</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Fri, 29 May 2026 09:18:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NnQ-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb6d305d-f6ea-4b8f-b56a-00009fd6e011_1600x902.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NnQ-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb6d305d-f6ea-4b8f-b56a-00009fd6e011_1600x902.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NnQ-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb6d305d-f6ea-4b8f-b56a-00009fd6e011_1600x902.png 424w, https://substackcdn.com/image/fetch/$s_!NnQ-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb6d305d-f6ea-4b8f-b56a-00009fd6e011_1600x902.png 848w, https://substackcdn.com/image/fetch/$s_!NnQ-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb6d305d-f6ea-4b8f-b56a-00009fd6e011_1600x902.png 1272w, https://substackcdn.com/image/fetch/$s_!NnQ-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb6d305d-f6ea-4b8f-b56a-00009fd6e011_1600x902.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NnQ-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb6d305d-f6ea-4b8f-b56a-00009fd6e011_1600x902.png" width="1456" height="821" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb6d305d-f6ea-4b8f-b56a-00009fd6e011_1600x902.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:821,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:354155,&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://insights.wohlig.com/i/199715325?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb6d305d-f6ea-4b8f-b56a-00009fd6e011_1600x902.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NnQ-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb6d305d-f6ea-4b8f-b56a-00009fd6e011_1600x902.png 424w, https://substackcdn.com/image/fetch/$s_!NnQ-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb6d305d-f6ea-4b8f-b56a-00009fd6e011_1600x902.png 848w, https://substackcdn.com/image/fetch/$s_!NnQ-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb6d305d-f6ea-4b8f-b56a-00009fd6e011_1600x902.png 1272w, https://substackcdn.com/image/fetch/$s_!NnQ-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb6d305d-f6ea-4b8f-b56a-00009fd6e011_1600x902.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><h3>Project Overview</h3><p>Meesho partnered with Wohlig Transformations to build an end-to-end Document Intelligence platform spanning three key pillars: Google Workspace for document authoring and governance, Gemini Enterprise for conversational access and retrieval, and a custom ADK agent running on Vertex AI Agent Engine to provide depth-aware, fully cited enterprise search.</p><p>Meesho operates using a BHAG (Big Hairy Audacious Goals) framework across functions such as Pricing, Monetisation, CPDO, Ranking, and Growth. These teams continuously generate strategic documents including R2R reviews, PFS sessions, working sessions, and KR documents. As the organization scaled, these artifacts became fragmented across individual Google Drive accounts, creating challenges around governance, discoverability, and organizational alignment.</p><p>To address this, Wohlig delivered a two-phase platform on Google Cloud.</p><p>Phase 1 focused on document governance and ingestion across Google Workspace.</p><p>Phase 2 introduced an AI-powered ADK agent integrated into Gemini Enterprise, enabling employees to query organizational knowledge through natural language while preserving document-level access controls.</p><div><hr></div><h3>The Challenge</h3><h4>Inconsistent Document Quality</h4><p>There was no standardized process to enforce document quality before storage. Teams used different templates, resulting in incomplete and inconsistent documentation.</p><h4>No Central Repository</h4><p>BHAG documents were distributed across individual Google Drive accounts, making enterprise-wide knowledge sharing difficult.</p><h4>Zero AI Discoverability</h4><p>Employees had no way to search organizational knowledge using natural language.</p><h4>Incomplete Retrieval Results</h4><p>The Gemini Enterprise Drive connector returned document snippets rather than complete content, often exposing only a fraction of the available information.</p><h4>Retrieval API Limitations</h4><p>The Discovery Engine :answer endpoint permanently rejected custom GCP OAuth implementations, preventing adoption of the intended retrieval architecture.</p><h4>Service Account Restrictions</h4><p>Workspace datastore retrieval returned HTTP 403 errors when accessed through service account credentials, requiring an alternative authentication approach.</p><div><hr></div><h3>Key Objectives</h3><ul><li><p>Enforce document quality before documents enter the repository.</p></li><li><p>Create a centralized and permission-safe knowledge repository.</p></li><li><p>Improve compliance through proactive governance and automated reminders.</p></li><li><p>Provide deterministic retrieval depth independent of LLM behavior.</p></li><li><p>Ensure complete citation coverage for every answer.</p></li><li><p>Eliminate incremental AI inference costs by leveraging existing Gemini Enterprise licenses.</p></li></ul><div><hr></div><h3>The Solution: Two-Phase Document Intelligence Platform</h3><h4>Phase 1: Document Governance &amp; Ingestion System</h4><p>Phase 1 introduced ten integrated components governing the entire document lifecycle within Google Workspace.</p><h4>Custom Template Governance</h4><p>A Custom Google Template Gallery combined with a Chrome Extension ensured that employees could only access Meesho-approved document templates while hiding Google&#8217;s default templates.</p><h4>8-Rule Audit Engine</h4><p>An Apps Script Add-on embedded directly into Google Docs validated documents against predefined compliance rules stored in Google Sheets.</p><p>The engine:</p><ul><li><p>Scored each document section from 0&#8211;100%</p></li><li><p>Evaluated compliance automatically</p></li><li><p>Prevented submission until all required sections passed validation</p></li></ul><h4>Submit-to-Meesho-Memory Workflow</h4><p>Documents that passed compliance checks were automatically submitted into the central repository.</p><p>The workflow:</p><ul><li><p>Used the author&#8217;s Google Drive token</p></li><li><p>Applied repository labels</p></li><li><p>Sent confirmation notifications</p></li><li><p>Preserved ownership and permissions</p></li></ul><h4>Governance &amp; Adoption Automation</h4><p>Several automated governance mechanisms were introduced:</p><ul><li><p>In-document nudge notifications</p></li><li><p>Meeting invite monitoring</p></li><li><p>Daily compliance reminders</p></li><li><p>Escalation workflows to managers</p></li><li><p>Organization-wide document audits</p></li></ul><p>The backend architecture was later migrated from Apps Script to Cloud Run, with Cloud Scheduler replacing all scheduled triggers.</p><h4>Keyless Domain-Wide Delegation</h4><p>JWT signing was performed through the IAM Credentials API, eliminating the need for service account JSON keys.</p><div><hr></div><h3>Phase 2: ADK Agent Inside Gemini Enterprise</h3><p>The second phase introduced a custom ADK agent registered within Gemini Enterprise Agent Space.</p><p>Employees could access organizational knowledge directly from the Gemini Enterprise chat interface they already used daily.</p><p>The solution evolved through six architectural versions:</p><ul><li><p>v1: SequentialAgent baseline</p></li><li><p>v2: Parallel per-document extraction</p></li><li><p>v3: Wiki-based retrieval</p></li><li><p>v4: StreamAssist proof of concept</p></li><li><p>v5: Batched parallel StreamAssist architecture</p></li><li><p>v6: Production Zero-Vertex Pipeline</p></li></ul><h4>Depth-Aware Retrieval Architecture</h4><p>The production architecture routes queries based on requested depth.</p><h5>Small Queries</h5><p>Handled through a single StreamAssist request with suggested follow-up questions.</p><h5>Medium, Detailed &amp; Exhaustive Queries</h5><p>A three-stage pipeline executes:</p><ol><li><p>Identify</p><ul><li><p>Selects the most relevant documents from a candidate pool of up to 91 documents.</p></li><li><p>Generates focused extraction prompts.</p></li></ul></li><li><p>Batched Parallel StreamAssist</p><ul><li><p>Retrieves information from multiple documents simultaneously.</p></li><li><p>Executes 5&#8211;10 concurrent retrieval operations for exhaustive searches.</p></li></ul></li><li><p>Merge</p><ul><li><p>Synthesizes results into a single answer.</p></li><li><p>Produces 3&#8211;15 citations.</p></li><li><p>Generates follow-up recommendations.</p></li></ul></li></ol><h4>OPT-5 Speculative Prefetch</h4><p>Candidate retrieval begins in parallel with intent classification, eliminating a complete retrieval round-trip and improving response latency.</p><h4>Wiki Builder</h4><p>A Claude-powered wiki generation process consolidates information across multiple documents while preserving inline citations.</p><div><hr></div><h3>Technology Stack</h3><h4>Phase 1</h4><ul><li><p>Cloud Run</p></li><li><p>Google Apps Script Add-on</p></li><li><p>Chrome Extension (Manifest V3)</p></li><li><p>Cloud Scheduler</p></li><li><p>Google Drive API</p></li><li><p>Google Sheets API</p></li><li><p>Drive Labels API</p></li><li><p>IAM Credentials API</p></li><li><p>Gmail SMTP (Nodemailer)</p></li></ul><h4>Phase 2</h4><ul><li><p>Gemini Enterprise</p></li><li><p>Gemini Enterprise Agent Space</p></li><li><p>StreamAssist API</p></li><li><p>Google ADK 1.30.0</p></li><li><p>Vertex AI Agent Engine</p></li><li><p>Discovery Engine API</p></li><li><p>Gemini 3.1 Pro Preview</p></li><li><p>Gemini 3 Flash Preview</p></li></ul><div><hr></div><h3>Security &amp; Access Control</h3><p>The solution preserves Google Workspace permissions by injecting the end user&#8217;s Gemini Enterprise Drive OAuth bearer token into every retrieval request.</p><p>This ensures:</p><ul><li><p>Workspace ACL compliance</p></li><li><p>User-level permission enforcement</p></li><li><p>No unauthorized document exposure</p></li></ul><p>Keyless Domain-Wide Delegation uses IAM Credentials API signing, eliminating service account key storage entirely.</p><div><hr></div><h3>Key Benefits &amp; Results</h3><h4>Standardized Documentation</h4><p><strong>Previous:</strong> No document template standards.</p><p><strong>Solution:</strong> Custom Template Gallery and Chrome Extension.</p><p><strong>Result:</strong> Only approved templates available organization-wide.</p><h4>Centralized Knowledge Repository</h4><p><strong>Previous:</strong> Documents scattered across personal drives.</p><p><strong>Solution:</strong> Audit engine and submission workflow.</p><p><strong>Result:</strong> Centralized repository with compliance enforcement.</p><h4>Governance Visibility</h4><p><strong>Previous:</strong> Limited awareness of document compliance.</p><p><strong>Solution:</strong> Automated scans, nudges, and escalation workflows.</p><p><strong>Result:</strong> Organization-wide compliance monitoring.</p><h4>Improved Retrieval Quality</h4><p><strong>Previous:</strong> Snippet-only search results.</p><p><strong>Solution:</strong> StreamAssist retrieval using dataStoreSpecs.</p><p><strong>Result:</strong> Complete document access with ACL enforcement.</p><h4>Deterministic Search Depth</h4><p><strong>Previous:</strong> LLM-driven retrieval limitations.</p><p><strong>Solution:</strong> Python-based parallel retrieval orchestration.</p><p><strong>Result:</strong> Search depth enforced through code rather than model behavior.</p><h4>Retrieval API Workaround</h4><p><strong>Previous:</strong> Discovery Engine answer endpoint restrictions.</p><p><strong>Solution:</strong> StreamAssist API adoption.</p><p><strong>Result:</strong> Fully functional enterprise retrieval.</p><h4>Authentication Reliability</h4><p><strong>Previous:</strong> Service account authentication failures.</p><p><strong>Solution:</strong> Per-user OAuth bearer token injection.</p><p><strong>Result:</strong> Zero authorization failures.</p><h4>Full Citation Coverage</h4><p><strong>Previous:</strong> Flash model responses without citations.</p><p><strong>Solution:</strong> Gemini Pro retrieval with text grounding metadata.</p><p><strong>Result:</strong> 3&#8211;15 citations per answer.</p><h4>Zero Incremental AI Cost</h4><p><strong>Previous:</strong> Per-token Vertex AI inference costs.</p><p><strong>Solution:</strong> All retrieval and synthesis workloads executed through Gemini Enterprise licensing.</p><p><strong>Result:</strong> &#8377;0 incremental AI cost per query regardless of usage volume.</p><div><hr></div><h3>Technical Innovation</h3><h4>Two-Layer Document Intelligence Architecture</h4><p>Phase 1 ensures document quality and governance.</p><p>Phase 2 makes organizational knowledge discoverable through conversational AI.</p><h4>AppScript-to-Cloud-Run Migration</h4><p>The backend was re-platformed during development without service interruption while improving scalability and operational control.</p><h4>Keyless Domain-Wide Delegation</h4><p>JWT signing through Google&#8217;s IAM Credentials API eliminated the need for service account JSON keys.</p><h4>StreamAssist-First Retrieval</h4><p>StreamAssist replaced Discovery Engine&#8217;s blocked answer endpoint and became the primary retrieval mechanism.</p><h4>OPT-5 Speculative Prefetch</h4><p>Parallel candidate retrieval and intent classification reduced overall query latency.</p><h4>Zero-Vertex Pipeline</h4><p>All retrieval, classification, evaluation, and synthesis workloads execute through Gemini Enterprise rather than Vertex LLM agents.</p><h4>Pro and Flash Model Strategy</h4><p>Gemini Pro handles retrieval and citation generation.</p><p>Gemini Flash handles intent classification for lower latency and cost.</p><div><hr></div><h3>Wohlig&#8217;s Approach</h3><ol><li><p>Defined requirements and designed the governance platform architecture.</p></li><li><p>Built the governance ecosystem, including templates, audit workflows, Chrome extensions, and submission processes.</p></li><li><p>Migrated the backend from Apps Script to Cloud Run.</p></li><li><p>Implemented adoption and governance automation, including nudges, meeting monitoring, escalation workflows, and domain-wide delegation.</p></li><li><p>Completed user acceptance testing and production rollout for Phase 1.</p></li><li><p>Diagnosed limitations of no-code Gemini Enterprise agents, including Discovery Engine restrictions and citation limitations.</p></li><li><p>Iteratively evolved the ADK architecture through six versions before arriving at the production-ready Zero-Vertex Pipeline.</p></li><li><p>Deployed the solution on Vertex AI Agent Engine, registered the ADK agent in Gemini Enterprise Agent Space, and completed organization-wide rollout.</p></li></ol><div><hr></div><h3>About Meesho</h3><p>Meesho is India&#8217;s leading social commerce platform, enabling millions of small businesses to sell online. Its BHAG-driven operating model generates a large volume of strategic planning documents, making enterprise knowledge discovery and governance critical to operational effectiveness.</p><h3>About Wohlig Transformations Pvt. Ltd.</h3><p>Founded in 2015, Wohlig Transformations specializes in GenAI and DevOps solutions, with more than 160 professionals serving clients across India and the United Kingdom.<br><br>Detailed Case Study : <strong><a href="https://youtu.be/3lcqvWgBiCc">https://youtu.be/3lcqvWgBiCc</a></strong></p>]]></content:encoded></item><item><title><![CDATA[Meesho Talk to Data: Achieving 100% Effective Accuracy in BigQuery Conversational Analytics]]></title><description><![CDATA[Project Overview]]></description><link>https://insights.wohlig.com/p/meesho-talk-to-data-achieving-100</link><guid isPermaLink="false">https://insights.wohlig.com/p/meesho-talk-to-data-achieving-100</guid><dc:creator><![CDATA[Wohlig]]></dc:creator><pubDate>Fri, 29 May 2026 09:13:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!D_79!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b0e6fe-8d7f-4189-9040-00ebfe739b29_1596x898.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D_79!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b0e6fe-8d7f-4189-9040-00ebfe739b29_1596x898.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D_79!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b0e6fe-8d7f-4189-9040-00ebfe739b29_1596x898.png 424w, https://substackcdn.com/image/fetch/$s_!D_79!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b0e6fe-8d7f-4189-9040-00ebfe739b29_1596x898.png 848w, https://substackcdn.com/image/fetch/$s_!D_79!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b0e6fe-8d7f-4189-9040-00ebfe739b29_1596x898.png 1272w, https://substackcdn.com/image/fetch/$s_!D_79!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b0e6fe-8d7f-4189-9040-00ebfe739b29_1596x898.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D_79!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b0e6fe-8d7f-4189-9040-00ebfe739b29_1596x898.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9b0e6fe-8d7f-4189-9040-00ebfe739b29_1596x898.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:380930,&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://insights.wohlig.com/i/199714382?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b0e6fe-8d7f-4189-9040-00ebfe739b29_1596x898.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!D_79!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b0e6fe-8d7f-4189-9040-00ebfe739b29_1596x898.png 424w, https://substackcdn.com/image/fetch/$s_!D_79!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b0e6fe-8d7f-4189-9040-00ebfe739b29_1596x898.png 848w, https://substackcdn.com/image/fetch/$s_!D_79!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b0e6fe-8d7f-4189-9040-00ebfe739b29_1596x898.png 1272w, https://substackcdn.com/image/fetch/$s_!D_79!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9b0e6fe-8d7f-4189-9040-00ebfe739b29_1596x898.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><h3>Project Overview</h3><p>Meesho partnered with Wohlig Transformations to build a BigQuery Conversational Analytics agent for its Fulfilment &amp; Experience (FnE) team, achieving 100% effective accuracy on 40 held-out evaluation prompts with every result manually verified row-by-row.</p><p>The Fulfilment &amp; Experience (FnE) team at Meesho manages end-to-end operations for India&#8217;s largest social-commerce platform using a 10-table mercury dataset in BigQuery, comprising more than 224 columns and 64 defined business metrics.</p><p>Wohlig developed a BigQuery Conversational Analytics agent, published as FnE_v2_14Apr in BigQuery Studio&#8217;s Agent Catalog, enabling business users to ask natural-language questions and receive SQL queries, BigQuery jobs, result tables, auto-generated visualizations, plain-English insights, and knowledge-source references.</p><p>The engagement was executed in two phases. Round 1 achieved 89% effective accuracy across 57 evaluation queries, while Round 2 achieved 100% effective accuracy across 40 held-out evaluation prompts after a dataset quality improvement initiative and complete re-engineering of the knowledge base.</p><div><hr></div><h3>The Challenge</h3><h4>SQL Dependency Across Business Operations</h4><p>The mercury dataset contained 10 tables, 64 metrics, and 68 business rules. Operational questions around refund clearance, LDR breaches, RTO percentages, NPS, and dispatch performance required analysts to manually write SQL.</p><h4>Dataset Quality Constraints</h4><p>The initial implementation reached 89% effective accuracy. Investigation showed that the remaining performance gap stemmed primarily from inconsistencies within the underlying dataset rather than limitations of the conversational analytics agent.</p><h4>Evaluation Trustworthiness</h4><p>Enterprise-grade analytics systems cannot rely on LLM-generated evaluation. Every output needed verification at the data level through direct comparison against trusted reference outputs.</p><h4>Spark-to-BigQuery Conversion Challenges</h4><p>During migration and reconciliation, 11 Spark normalization issues were discovered and corrected before outputs could be trusted as ground truth.</p><h4>Overfitting Risk</h4><p>A critical requirement was ensuring that evaluation prompts remained completely separate from training and verification datasets to avoid artificially inflated results.</p><div><hr></div><h3>Key Objectives</h3><ul><li><p>Enable natural-language access to operational data without requiring SQL expertise.</p></li><li><p>Validate outputs through row-by-row and cell-by-cell verification.</p></li><li><p>Maintain complete separation between verified training queries and evaluation prompts.</p></li><li><p>Ground responses in schema definitions, glossary terms, joins, and business rules.</p></li><li><p>Create a repeatable methodology capable of scaling across future datasets.</p></li></ul><div><hr></div><h3>The Solution: Two-Round Conversational Analytics Program</h3><h4>Round 1: Initial Dataset Evaluation</h4><p>The first version of the agent was evaluated against 57 reference queries and achieved 89% effective accuracy, consisting of:</p><ul><li><p>21 MATCH</p></li><li><p>30 ACCEPTABLE</p></li><li><p>6 genuine failures</p></li></ul><p>Analysis revealed that remaining inaccuracies were driven by dataset quality issues rather than agent logic.</p><h4>Round 2: FnE Cleaned Dataset</h4><p>After Meesho engineered a cleaned version of the dataset, Wohlig rebuilt the schema understanding, instructions, glossary, and verified query set.</p><p>The updated agent achieved:</p><ul><li><p>31 MATCH (77.5%)</p></li><li><p>5 NEAR_MATCH (12.5%)</p></li><li><p>4 ACCEPTABLE (10%)</p></li><li><p>0 NOT_MATCH</p></li></ul><p>Resulting in 100% effective accuracy across all 40 held-out evaluation prompts.</p><h4>Schema and Knowledge Foundation</h4><p>The solution incorporated:</p><ul><li><p>10 table descriptions</p></li><li><p>8 join relationships</p></li><li><p>88 glossary terms</p></li><li><p>225 documented columns</p></li><li><p>20+ critical field recommendations</p></li></ul><p>The glossary included detailed formula definitions and denominator disambiguation to eliminate ambiguity in business metrics.</p><h4>Structured Instruction Framework</h4><p>The agent was governed by:</p><ul><li><p>83 MUST/NEVER rules</p></li><li><p>21 instruction categories</p></li><li><p>14 BAD/GOOD examples</p></li><li><p>Mandatory filters</p></li><li><p>Bucket-metric and date-anchor mappings</p></li></ul><p>This transformed loosely defined business rules into deterministic operational behavior.</p><h4>Verified Query Set</h4><p>A set of 73 verified queries was created:</p><ul><li><p>57 queries from the MIA Metric List</p></li><li><p>16 supplementary patterns</p></li></ul><p>The verified query set maintained zero overlap with evaluation prompts.</p><h4>Three-Way Validation Framework</h4><p>Outputs were validated across:</p><p>Spark on Dataproc &#8596; BigQuery Conversion &#8596; Agent SQL</p><p>This process achieved:</p><ul><li><p>97/97 functional parity</p></li><li><p>40/40 evaluation queries validated</p></li><li><p>57/57 golden queries validated</p></li></ul><h4>Technology Stack</h4><ul><li><p>BigQuery Conversational Analytics API</p></li><li><p>BigQuery Studio (Agents Preview)</p></li><li><p>Dataplex</p></li><li><p>Dataproc</p></li><li><p>BigQuery Mercury Dataset</p></li><li><p>Gemini</p></li></ul><div><hr></div><h3>Key Benefits &amp; Results</h3><h4>Reliable Evaluation</h4><p><strong>Previous:</strong> LLM-as-judge evaluation.</p><p><strong>Solution:</strong> Cell-by-cell manual verification.</p><p><strong>Result:</strong> Every evaluation verdict was based on actual output data.</p><h4>Accuracy Improvement</h4><p><strong>Previous:</strong> 89% effective accuracy.</p><p><strong>Solution:</strong> Cleaned dataset and rebuilt knowledge framework.</p><p><strong>Result:</strong> 100% effective accuracy on 40 held-out evaluation prompts.</p><h4>Reference Consistency</h4><p><strong>Previous:</strong> Spark and BigQuery output drift.</p><p><strong>Solution:</strong> Three-way validation methodology.</p><p><strong>Result:</strong> 97/97 functional parity and 11 normalization issues identified.</p><h4>Reduced Hallucinations</h4><p><strong>Previous:</strong> Risk of invented fields and incomplete logic.</p><p><strong>Solution:</strong> 88-term glossary, 83 instruction rules, and worked examples.</p><p><strong>Result:</strong> Zero genuine logic failures.</p><h4>Evaluation Integrity</h4><p><strong>Previous:</strong> Risk of training/evaluation overlap.</p><p><strong>Solution:</strong> Strict separation between verification and evaluation datasets.</p><p><strong>Result:</strong> Production-safe and auditable evaluation process.</p><h4>Improved User Experience</h4><p><strong>Previous:</strong> Manual SQL creation for every business question.</p><p><strong>Solution:</strong> Conversational Analytics Agent in BigQuery Studio.</p><p><strong>Result:</strong> SQL generation, execution, visualization, insights, and follow-up recommendations delivered through a single interface.</p><div><hr></div><h3>Technical Innovation</h3><h4>Three-Way Validation Methodology</h4><p>Every output was validated through direct reconciliation across Spark, BigQuery, and generated SQL before the agent was evaluated.</p><h4>Manual Row-Level Verification</h4><p>No LLM-as-judge approach was used. Outputs were evaluated through direct row, column, and cell comparisons. Every NEAR_MATCH and ACCEPTABLE verdict was documented with written justification.</p><h4>Deterministic Operating Framework</h4><p>The solution incorporated:</p><ul><li><p>88 glossary terms</p></li><li><p>83 MUST/NEVER rules</p></li><li><p>14 worked examples</p></li><li><p>Fixed data windows</p></li><li><p>1.5 TB query scan limits</p></li></ul><p>This established a predictable and controlled operational environment.</p><h4>Repeatable Methodology</h4><p>The same methodology that identified dataset limitations in Round 1 enabled 100% effective accuracy after data improvements in Round 2, demonstrating repeatability across evolving datasets.</p><div><hr></div><h3>Wohlig&#8217;s Approach</h3><ol><li><p>Collected and audited six input artifacts including tables, metrics, business rules, dimensions, and evaluation prompts.</p></li><li><p>Performed Spark-to-BigQuery conversion with detailed parity validation and correction of normalization issues.</p></li><li><p>Developed schema documentation, glossary definitions, join mappings, and column descriptions.</p></li><li><p>Created structured instruction frameworks, business logic rules, and worked examples.</p></li><li><p>Built a verified query repository with complete separation from evaluation datasets.</p></li><li><p>Trained, evaluated, and published the final agent in BigQuery Studio while delivering full evaluation reports to Meesho and Google for independent review.</p></li></ol><div><hr></div><h3>About Meesho</h3><p>Meesho is India&#8217;s leading social-commerce platform, enabling millions of small businesses to sell online. Its Fulfilment &amp; Experience (FnE) organization manages the end-to-end customer journey from order placement through delivery, claims, returns, customer support, and post-sale operations.</p><h3>About Wohlig Transformations Pvt. Ltd.</h3><p>Founded in 2015, Wohlig Transformations specializes in GenAI and DevOps solutions, with more than 160 professionals serving clients across India and the United Kingdom</p><p>.Detailed Case Study : <strong><a href="https://youtu.be/OuRF7hlSNNc">https://youtu.be/OuRF7hlSNNc</a></strong></p>]]></content:encoded></item></channel></rss>