<?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"><channel><title><![CDATA[UiPath Maestro Case - Use Case]]></title><description><![CDATA[Hands-on agentic automation builds on UiPath Maestro: AI agents, human approval, RPA and governed AI, shown end to end with architecture and real screens.]]></description><link>https://jobinthekkekarajoy.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6ac73d58dc4868fd4c90ed98/2f12d841-9a02-4f70-a112-65d60955e750.png</url><title>UiPath Maestro Case - Use Case</title><link>https://jobinthekkekarajoy.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 16 Oct 2026 17:02:42 GMT</lastBuildDate><atom:link href="https://jobinthekkekarajoy.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[The Customer Who Never Complained]]></title><description><![CDATA[How I designed an agentic control plane that finds every customer a pricing change overcharged, repays them through a legacy screen, and proves it — with a person approving every dollar.



Fig. 1. Ou]]></description><link>https://jobinthekkekarajoy.hashnode.dev/the-customer-who-never-complained</link><guid isPermaLink="true">https://jobinthekkekarajoy.hashnode.dev/the-customer-who-never-complained</guid><category><![CDATA[uipath]]></category><category><![CDATA[Agentic Automation]]></category><category><![CDATA[agentic AI]]></category><category><![CDATA[uipath-maestro]]></category><category><![CDATA[Intelligent Automation]]></category><category><![CDATA[rpa]]></category><category><![CDATA[boat]]></category><category><![CDATA[process orchestration]]></category><dc:creator><![CDATA[Jobin Thekkekara Joy]]></dc:creator><pubDate>Thu, 08 Oct 2026 23:50:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/e939f7d1-1101-409f-9814-3af05b89bc7e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>How I designed an agentic control plane that finds every customer a pricing change overcharged, repays them through a legacy screen, and proves it — with a person approving every dollar.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/feff8a9d-1fc9-44c3-87ca-0eba7248ee40.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 1. OutcomeGuard: agentic customer-outcome assurance, orchestrated on UiPath Maestro.</p>
</blockquote>
<p>Oliver Grant holds two policies with the same insurer — home and motor. That entitles him to a 10% multi-policy discount on his home premium. In September his home invoice came to <strong>1,660.00 NZD</strong>. It should have been <strong>1,494.00</strong>.</p>
<p>Oliver didn't notice. He never called, never emailed, never complained. And in most insurers today, that is where the story ends. Remediation usually starts with the customers who speak up. The quiet ones stay overcharged.</p>
<p>This article walks through one real run of <strong>OutcomeGuard</strong>, a control plane I designed and built on UiPath. A different customer's complaint starts a case. The case investigates across six business systems, works out who else the same defect reached, calculates exactly what each person is owed from the systems of record, asks a person to decide, pays through the legacy billing screen, checks the payment independently, and seals the evidence. Then it does the same for Oliver — who never asked.</p>
<p>Unless a caption says otherwise, every screenshot comes from a single recording of that run.</p>
<p><a href="https://www.youtube.com/watch?v=wkoExGFbzNg">https://www.youtube.com/watch?v=wkoExGFbzNg</a></p>
<blockquote>
<p>OutcomeGuard is a prototype built on synthetic data. Hana, Oliver and Alex are fictional customers of a fictional insurer. The orchestration, the agent, the human decisions, the robot, the refunds (in the synthetic billing system) and the evidence are all real.</p>
</blockquote>
<h2><strong>1. The problem nobody owns</strong></h2>
<p>Insurers rarely let customers down on purpose. They let them down through change. A pricing rule is reconfigured, a release goes out, and a calculation that was right yesterday is quietly wrong today. Billing keeps producing invoices. Nothing crashes. No alarm goes off.</p>
<p>Then a few customers notice. Each complaint is handled on its own: someone checks the invoice, issues a credit, closes the ticket. What rarely happens is the obvious next question — <em>who else did this reach?</em> — answered with the same care, for every affected customer, with proof.</p>
<p>Regulators have noticed this gap. In New Zealand, the conduct regime for financial institutions, in force since 31 March 2025, requires firms to treat customers fairly through a fair conduct programme. In Australia, ASIC's Regulatory Guide 277 on consumer remediation expects firms to find everyone affected and put them back where they should have been. The direction is clear: <strong>remediation is a population problem, not a complaints problem</strong> — and it needs evidence. (Context only, not legal advice.)</p>
<p>The hard part isn't any single step. It's that the truth is spread across systems. Policy knows the correct price. Billing knows what was charged. Operations knows about the incident. Complaints knows who spoke up. No one system can answer the question that matters: <em>who was harmed, by how much, and have we actually fixed it?</em></p>
<h2><strong>2. One rule for every component</strong></h2>
<p>I designed OutcomeGuard around a single principle, and every part of the system is held to it:</p>
<blockquote>
<p><em>AI investigates. Code decides what's true. People decide. Robots execute. Something independent proves it.</em></p>
</blockquote>
<p>An AI agent is very good at reading a messy situation and forming a hypothesis. It is not a source of financial truth, and it should never move money. So in OutcomeGuard the agent may only <em>suspect</em>. Deterministic code is the only thing allowed to <em>calculate</em>. A person is the only one allowed to <em>approve</em>. A robot is the only thing allowed to <em>pay</em>. And a separate check is the only thing allowed to say the payment <em>happened</em>.</p>
<p>That last sentence is the heart of the design. In a regulated process, the most important question about AI isn't how clever it is. It's where its authority ends.</p>
<h2><strong>3. Day one: what the business can see</strong></h2>
<p>The fictional insurer runs six business systems: Customer, Policy, Billing, Claims, Complaints, and Incident &amp; Change. On day one, this is the picture.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/7c93eb72-f120-483f-a2f4-47e32541a433.png" alt="Day one. A pricing change, an incident with customer impact still unknown, the discount rule, and three qualifying customers. Oliver has no complaint on file." style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 2. Day one. A pricing change, an incident with customer impact still unknown, the discount rule, and three qualifying customers. Oliver has no complaint on file.</p>
</blockquote>
<p>On 16 September a configuration change, <code>CHG-2026-0017</code>, updated the Home multi-policy discount rule. Operations raised incident <code>INC-2026-0042</code> — <em>Billing discount calculation anomaly</em> — and marked customer impact as <strong>unknown</strong>. The rule itself, <code>RULE-DISC-001</code>, is simple: 10% off Home Comprehensive for customers holding two or more active policies.</p>
<p>Three customers qualify. <strong>Alex</strong> complained in September and has already been refunded. <strong>Hana</strong> has just complained: <em>"My September home insurance invoice is higher than I expected. I have my car insured with you too, so I thought I got a multi-policy discount."</em> <strong>Oliver</strong> has said nothing.</p>
<p>Behind that briefing sit real systems of record. I call them the Synthetic Enterprise — six services, each owning its own data, with its own database.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/4afb8157-d468-4adf-809e-9eef8bf8c738.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 3. A test-harness view I built to stage and check the scenario. It isn't a business tool: on day one, no system the business uses shows this comparison. Producing it, with evidence, is what OutcomeGuard does.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/261cf4b8-8c74-44ce-bfec-1b067147517f.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 4. The complaints system holds Hana's complaint, CMP-30004. A complaint is a signal, not proof.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/a0a421fb-34fb-4db8-b091-9a0f351bac29.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 5. Six business systems, a database and a gateway, each running as its own service.</p>
</blockquote>
<p>One detail matters for everything that follows: a complaint is <strong>a signal, not proof</strong>. Hana believes she was overcharged. OutcomeGuard has to establish whether she was — from the systems that actually own the truth.</p>
<h2><strong>4. The architecture on one page</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/cb4fed28-0c41-44a9-83a2-839ca2db8423.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 6. OutcomeGuard reference architecture. The numbered badges follow one case from signal to closure.</p>
</blockquote>
<p>Read the diagram top to bottom, from people and signals down to the systems of record.</p>
<ul>
<li><p><strong>Orchestration.</strong> A UiPath Maestro <strong>Case</strong> holds the lifecycle: 11 stages and 20 tasks — Intake, Investigation, Impact Determination, Risk Review, Approval, Remediation, Verification, Population Review and Closure, plus two exception stages that end a case cleanly when a signal is invalid or evidence is missing.</p>
</li>
<li><p><strong>Reasoning.</strong> One <strong>agent</strong> investigates, governed by the UiPath <strong>AI Trust Layer</strong>: centralized guardrails check every model request and response, and every call goes through the LLM gateway.</p>
</li>
<li><p><strong>Deterministic truth.</strong> Ten <strong>Coded Functions</strong> (Python, no LLM) own every exact decision — validating the trigger, calculating impact, sizing the population, rating risk and conduct, closing the case, opening a programme and building the evidence pack. Every rule set is versioned.</p>
</li>
<li><p><strong>Integration.</strong> Three <strong>API Workflows</strong> read the systems of record through a <strong>read-only gateway</strong> that accepts HTTP GET and nothing else.</p>
</li>
<li><p><strong>Execution.</strong> One unattended <strong>RPA robot</strong> is the only component that writes to Billing — through the same legacy screen a clerk would use.</p>
</li>
<li><p><strong>Decisions.</strong> Two human gates in <strong>Action Center</strong>, built as custom Coded Action Apps.</p>
</li>
<li><p><strong>State and evidence.</strong> <strong>Data Fabric</strong> holds the signals, the live case record and a durable case ledger; a storage bucket holds each case's sealed evidence pack.</p>
</li>
</ul>
<p>The red dashed line is the <strong>trust boundary</strong>. The cloud can read the systems of record, but it can never write to them. The only write path is the on-premises robot, through the legacy UI, carrying an approved amount.</p>
<h2><strong>5. The case plan</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/9ec05ca2-9255-4f58-b9e2-3bbd51c231b7.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 7. The Maestro case plan. Required stages run every time; conditional stages run only when the rules call for them; exception stages end a case cleanly.</p>
</blockquote>
<p>A case-management model fits this problem better than a fixed flowchart. The route depends on what the evidence shows and what people decide. A case with nothing to repay skips Approval, Remediation and Verification. A rejected approval skips the refund. And one case can start another.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/0f86ae98-8060-45df-8df0-9fe41fdb34b1.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 8. Deterministic gates. A stage completes only when a validated fact says so — for example <code>evidenceComplete === true</code>.</p>
</blockquote>
<p>Every gate is a rule on a deterministic output. Investigation can complete only when the evidence is complete. Impact Determination completes only when the calculation is valid. The agent's opinion never opens a gate.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/d99758fb-f87d-4b04-8817-1a90191bc5d1.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 9. Everything the case runs, in one Orchestrator folder: ten functions, three API workflows, one agent and one robot.</p>
</blockquote>
<h2><strong>6. Hana's case, step by step</strong></h2>
<p>Here is one complete run. Each screenshot is labelled with the kind of evidence it represents — an observed signal, a system record, an agent finding, a deterministic calculation, a human decision, an execution result or a verification. In a regulated process those are not the same thing, and OutcomeGuard never lets one pass for another.</p>
<h3><strong>Step 1 — A signal starts the case</strong></h3>
<p>Hana's complaint arrives as a record in UiPath Data Fabric. The case is wired to start on that event (Data Fabric "record created"). In this recording it runs in Studio Web debug mode, so I start it by pressing Debug; deployed, it starts on its own. Nothing about the signal is trusted yet.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/673ae682-dd18-4443-854b-fbff6e896755.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 10. Observed signal: Hana's complaint, recorded in Data Fabric, starts the case.</p>
</blockquote>
<h3><strong>Step 2 — Intake: is this worth investigating?</strong></h3>
<p>A Coded Function checks that the signal carries enough context to investigate — a case type, a domain, a trigger type, a correlation ID and at least one business reference. If it doesn't, the case records a typed exception and ends. No guessing.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/fa8cf809-afb4-4678-be18-8f5861acd902.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 11. Deterministic check: the trigger contains enough context to begin.</p>
</blockquote>
<h3><strong>Step 3 — Evidence from eight sources</strong></h3>
<p>An API Workflow reads customer, policy, pricing (as of the invoice date), invoice, refunds, complaints, incident and change — and tags each section OK or NOT_FOUND. The case moves on only if the evidence needed for a calculation is complete.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/40ff3bce-23a5-4f06-920e-3cd81b216083.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 12. System records: billed 1,490, authoritative expected price 1,341 under RULE-DISC-001, evidence complete.</p>
</blockquote>
<p>Every one of those reads is an HTTP GET through the gateway. Even if something upstream tried to change data, the path physically doesn't allow it.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/7c7904b6-4c78-4925-892f-0329e7ef898a.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 13. Read-only by construction: a GET through the gateway; credentials are redacted in the trace.</p>
</blockquote>
<h3><strong>Step 4 — The agent investigates, inside the AI Trust Layer</strong></h3>
<p>Now the agent reads the evidence and explains what most likely happened. Before its request reaches the model, and again before its answer comes back, the AI Trust Layer runs centralized guardrails — prompt-attack detection, harmful-content checks and intellectual-property checks. Each check is recorded in the trace; in this run, every one passed.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/51593f29-820f-456e-af17-e26abe76bcb6.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 14. Governance evaluation: centralized guardrails on the request and the response, every check PASSED.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/b54c76a4-bb7c-4ad9-bd56-9e14cafbb026.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 15. Agent finding: a suspected cause tied to INC-2026-0042 and CHG-2026-0017, confidence HIGH — and an escalation, because the defect may reach other customers.</p>
</blockquote>
<p>The agent's output is structured, with closed value sets — so a vague or lazy answer is rejected, not recorded. Its finding is always labelled <em>suspected, not established</em>. It can't compute an amount, propose a refund, or move the case forward. And it flagged the question that matters: this probably isn't just Hana.</p>
<h3><strong>Step 5 — Code decides what's true</strong></h3>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/4823044f-8d1f-44ff-864e-bf1c625818cf.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 16. Deterministic calculation: billed 1,490.00 − authoritative 1,341.00 = 149.00; nothing refunded yet; 149.00 outstanding.</p>
</blockquote>
<p>A Coded Function calculates the impact with exact decimal arithmetic, <strong>net of any earlier refunds</strong>. That choice means a customer who has already been made whole is never paid again: their outstanding amount is zero. The basis is written out in plain words and kept with the case, so anyone can check it later.</p>
<h3><strong>Step 6 — Who else?</strong></h3>
<p>This is where OutcomeGuard stops being a complaint handler. It asks the policy system which policies the same rule governed, then compares each one's authoritative price with what Billing actually charged.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/db8767e5-3401-4bf5-8091-98af9b30c0a1.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 17. Deterministic calculation: the rule governed 5 policies; 3 customers were overcharged; 315.00 NZD is still owed across 2 customers.</p>
</blockquote>
<p><strong>Exposure is not harm.</strong> Five policies fell under the rule. Three were actually overcharged, one was not, and one had no invoice yet, so it couldn't have been. Of the three, Alex had already been refunded. That leaves Hana — and Oliver.</p>
<h3><strong>Step 7 — Risk and conduct</strong></h3>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/83381f37-129e-466c-9031-b140f3bd6660.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 18. Versioned rules rate the case HIGH: 149.00 exceeds the 50.00 auto-remediation limit, and the same defect reached three customers.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/1010fe50-5701-438c-8660-83dc65d56494.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 19. Conduct assessment: MATERIAL, with a referral to Compliance to decide whether the matter is reportable.</p>
</blockquote>
<p>Two versioned rule sets decide what happens next. Risk is <strong>HIGH</strong>, so a person must approve. Conduct is <strong>MATERIAL</strong>, so Compliance is told. Thresholds live in versioned rules, not in a prompt — none of this is the agent's judgement.</p>
<h3><strong>Step 8 — A person decides whether, never how much</strong></h3>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/dddb0783-4f89-4a7d-bc16-dac31e534872.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 20. Human decision: the approver sees the calculation, the case facts and why approval is needed. The amount is calculated by code and is not editable.</p>
</blockquote>
<p>The approval is a UiPath Action Center task with a custom app. Every amount on it is an input, so the approver decides <em>whether</em> OutcomeGuard pays — never <em>how much</em>. Both buttons stay disabled until the approver writes a reason, and that reason is kept word for word in the case and the evidence pack.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/e0358319-2071-457f-a554-22910ddb24c8.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 21. Human decision: the reason is recorded verbatim, then confirmed in a second step that cannot be undone.</p>
</blockquote>
<h3><strong>Step 9 — The robot pays through the legacy screen</strong></h3>
<p>Like many core systems, Billing has no refund API — it has a screen. An unattended UiPath robot opens it and keys in the refund exactly as a clerk would: the invoice, the approved amount, a reason code, the case number and an <strong>idempotency key</strong> derived from the case.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/9d261243-da4c-4478-9821-db4e30d68691.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 22. The robot fills the legacy billing console. The screen's own controls: approved cases only, pays out once, bounded by payments, history preserved.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/05704ab7-89f4-4645-9a07-e4d80069e808.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 23. Execution result: 149.00 NZD refunded on INV-10012, case 97713846, idempotency key 97713846-REFUND-1.</p>
</blockquote>
<p>The idempotency key is a quiet but critical control. If the robot retries after a timeout, or anyone submits the same refund again, Billing returns the original refund instead of paying twice. The original invoice is never edited — the refund is its own record, so the history survives.</p>
<h3><strong>Step 9b — What if the refund runs twice?</strong></h3>
<p>Retries happen in real systems. A robot times out halfway, a job is restarted, someone resubmits a form because the screen looked frozen. So after the run I tried to pay Hana again on purpose — same invoice, same 149.00, same case number and the same idempotency key, <code>97713846-REFUND-1</code>.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/a5c4c256-40d6-4b35-9cd1-25ee4522049d.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 23.a. A deliberate second attempt: the same invoice, amount, case and idempotency key the robot already used.</p>
</blockquote>
<p>Billing refused to pay again. It created no new refund and returned the original one — the same refund ID the robot received, and the same refund the verification step had already read back.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/ce6b5433-524e-408a-adc1-fbd90c561e19.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 23.b. Execution result: "Refund Already Processed". No new refund was created; the original refund 9993e6f9… is returned.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/82b80e5a-9a70-4ec4-bb94-e03adb494597.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 23.c. System record: Hana's invoice INV-10012 still has exactly one refund. A retry can never become a second payment.</p>
</blockquote>
<p>This is the difference between "we try not to pay twice" and "we cannot pay twice". The protection doesn't depend on the robot being careful. It sits in the system of record, keyed to the case.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/162b25dc-c295-458b-87d2-b5ae57fd2999.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 24. A customer notice is drafted for Hana from a versioned template. Nothing is sent automatically.</p>
</blockquote>
<h3><strong>Step 10 — Proved by someone other than the robot</strong></h3>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/c14cb194-1e3c-4292-a4df-c61085b734d2.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 25. Verification: a separate API workflow reads the refund back from Billing — VERIFIED, 149.00 NZD, same refund ID.</p>
</blockquote>
<p>A robot saying "done" is not proof. A different component reads the refund back from Billing through the read-only gateway and compares it with what was approved. Only a verified refund counts.</p>
<h2><strong>7. Oliver</strong></h2>
<p>Hana has been repaid. But OutcomeGuard checks the population again <em>after</em> her refund — and it still finds money owed.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/4ece2c76-37ed-4207-aeba-581d11062369.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 26. Re-check after Hana's refund: one customer is still owed 166.00 NZD.</p>
</blockquote>
<p>Now a person decides what happens to everyone else. The reviewer sees exposure against harm, the overcharge per policy, and what the agent suspected — clearly labelled as a suspicion.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/73f65115-6bf5-446a-9aed-0a3be85f067d.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 27. Population review: 5 policies governed, 3 overcharged, 166.00 NZD still owed to one customer.</p>
</blockquote>
<p>There are three choices: open a remediation programme, refer the population for analysis, or take no further action. The screen warns when "no further action" would leave someone unpaid.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/eb7a7c6d-c755-47a6-931b-ff03ead9616e.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 28. Human decision: open a remediation programme, with the reason recorded.</p>
</blockquote>
<p>Opening the programme writes a brand-new signal — for Oliver. Nobody complained. The control plane raised it.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/869a5e49-92a6-4c9f-85c0-32c7925dede7.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 29. The programme writes one new signal, for the one customer still owed, and that signal starts their case. The step is idempotent, so a retry can never create a second.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/76b617e2-e513-4f35-9319-6992d7fa47fc.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 30. Observed signal: Oliver's case, raised by the programme rather than a complaint.</p>
</blockquote>
<p>Oliver's case then runs the same path, under the same controls. Nothing is copied from Hana's case — his amount is recalculated from the systems of record.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/a5af1fd9-cccf-4e05-9998-108e29944f80.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 31. Deterministic calculation: billed 1,660.00 − authoritative 1,494.00 = 166.00 NZD.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/ee60458e-58e2-44b7-a2fe-c04f0994caa2.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 32. Human decision: 166.00 NZD for a customer with zero complaints on file.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/e459cda2-9a94-47fd-b1cd-097079be2d86.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 33. The approver records why: a proactive refund, opened by the remediation programme.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/4abccaba-a3ef-4bd8-b5b0-8c79660037e1.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 34. Execution result: 166.00 NZD refunded on INV-10013, idempotency key 95789802-REFUND-1.</p>
</blockquote>
<p>After Oliver's refund is verified, the population is checked one more time.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/f86753eb-f850-470c-af5c-4ec329f9d199.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 35. 0.00 NZD still owed across the population.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/77776a17-4ecc-44cc-9521-b3e642947723.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 36. Human decision: with nothing owed, the reviewer closes the programme.</p>
</blockquote>
<p><em>Oliver's money came back. He never had to ask.</em></p>
<h2><strong>8. Proof, not prose</strong></h2>
<p>A case can't simply declare itself finished. Before it closes, a Coded Function checks the facts: was the evidence complete, was the impact established, was everything owed repaid and independently verified? If any answer is no, closure is refused.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/9f473014-b16b-4a38-b768-69c278ca0eca.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 37. Closure rules (versioned): CLOSED_REMEDIATED_AND_VERIFIED, finding OVERCHARGE_REMEDIATED.</p>
</blockquote>
<p>Every closed case then writes a sealed PDF evidence pack to a storage bucket and a durable row to the case ledger. The SHA-256 fingerprint of the pack is kept in the ledger. Change one byte of the PDF and the fingerprint no longer matches.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/adfc0dce-9e24-47b8-a190-104189c19451.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 38. Evidence pack stored, its SHA-256 recorded, a ledger row written.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/58a027c3-1faf-4ed3-9716-aeaeb25995bb.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 39. The case ledger in Data Fabric: one durable row per closed case.</p>
</blockquote>
<p>Leaders and Compliance see the programme on a read-only oversight dashboard: who was affected, what's still owed, which cases closed, who decided, and the evidence behind each.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/ec63d4c4-e60e-4f81-8146-e2c0e6fcc8c7.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 40. Defect CHG-2026-0017: 3 customers affected, 0.00 NZD still owed, 315.00 NZD repaid by these two cases (Alex's 145.00 was repaid before OutcomeGuard ran: 460.00 in total), 2 cases closed, no exceptions.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/77db9f94-86de-4795-ba87-2ba0a9e30241.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 41. Every closed case with its approver, its verification and its evidence pack.</p>
</blockquote>
<p>The evidence pack answers the questions an auditor actually asks — why we investigated, what we consulted, what was true, who decided, what was executed, and how we know — and labels every answer with its evidence class.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/b5334117-0bbb-4422-b179-a52f1e92bea1.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 42. The evidence pack: every section names its evidence class, so a suspicion is never mistaken for a fact.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/fce68cde-74a4-4904-87b9-f92ba19a4f62.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 43. Tamper-evident: a SHA-256 of the case facts in the pack, and a hash of the PDF itself kept with the case.</p>
</blockquote>
<img src="https://cdn.hashnode.com/uploads/covers/6ac73d58dc4868fd4c90ed98/9c8e9286-2b94-4d1a-97e9-50105f01a495.png" alt="" style="display:block;margin:0 auto" />

<blockquote>
<p>Fig. 44. After OutcomeGuard: all three customers the change overcharged are repaid — 460.00 NZD in total. One of them never complained.</p>
</blockquote>
<h2><strong>9. What the AI was not allowed to do</strong></h2>
<p>Most agentic demos show what the AI can do. In a regulated process, what it <em>can't</em> do matters more.</p>
<ul>
<li><p><strong>It can't move money.</strong> It has no tool that writes anywhere. Its one tool reads evidence through a gateway that rejects everything but GET.</p>
</li>
<li><p><strong>It can't decide the amount.</strong> Arithmetic on money happens only in deterministic code.</p>
</li>
<li><p><strong>It can't open a gate.</strong> Whether a case moves forward is decided by rules on deterministic outputs.</p>
</li>
<li><p><strong>It can't certify its own work.</strong> Its finding is printed as "suspected, not established", and its confidence never becomes permission.</p>
</li>
<li><p><strong>It can't bypass governance.</strong> Every model call passes the AI Trust Layer's centralized guardrails and is traced.</p>
</li>
</ul>
<p>The same discipline applies to everyone else. The approver can't change the amount. The robot can't choose what to pay. The verification workflow can't pay. <strong>No single component can complete the money path on its own</strong> — which is exactly what a risk or audit team wants to hear.</p>
<h2><strong>10. What building it taught me</strong></h2>
<p>Building this surfaced the kind of problems that never appear on a slide. Two of them are worth sharing.</p>
<p><strong>A green job is not an answer.</strong> In one early run, the agent returned a placeholder — no cause, a status I hadn't defined — and the job still showed <em>Successful</em>, because its output contract accepted any text. Better prompting wasn't the fix. Closed value sets and required fields were: now a non-answer fails loudly instead of being recorded as fact. A related lesson: any free text an agent reads is part of its prompt, so signal text is treated strictly as a claim to verify.</p>
<p><strong>Timing is a dependency; idempotency makes it safe.</strong> The case's own data record is created a moment after the case starts, so a very fast first task can arrive before it exists. A retry handles it — but only because every step is idempotent, so retrying is always safe.</p>
<h2><strong>11. Outcomes</strong></h2>
<ul>
<li><p><strong>The whole affected population found from one complaint</strong> — including the customer who never complained.</p>
</li>
<li><p><strong>Every refund approved by a named person</strong>, with the reason recorded verbatim.</p>
</li>
<li><p><strong>No duplicate payments:</strong> impact is always net of earlier refunds, and every refund carries an idempotency key (tested deliberately, see Step 9b).</p>
</li>
<li><p><strong>Every refund verified independently</strong> of the robot that made it.</p>
</li>
<li><p><strong>Tamper-evident evidence</strong> for every closed case, each statement labelled with its evidence class.</p>
</li>
<li><p><strong>Speed:</strong> each case ran end to end in eight to nine minutes, human decisions included.</p>
</li>
</ul>
<p>In production I would track time from defect to full remediation, the share of affected customers found without a complaint, refunds per approver hour, and audit findings per programme.</p>
<h2><strong>12. The road to production and beyond insurance</strong></h2>
<p>This prototype runs in a development tenant against a synthetic enterprise. Taking it to production means deploying the case properly, so a reviewer's decision starts the next customer's case on its own; connecting to real systems of record through durable, governed integrations; and agreeing thresholds and rule sets with Risk and Compliance.</p>
<p>Nothing in the pattern is specific to insurance. A bank fee applied to the wrong accounts, a telco plan billed at the wrong rate, a utility tariff misapplied after a system change — each is the same problem: find everyone a change harmed, calculate from authoritative data, let people decide, execute safely, and prove it.</p>
<h2>Key terms</h2>
<p><strong>Agentic automation:</strong></p>
<p>Automation where an AI agent reasons and investigates, while deterministic tools, people and robots handle facts, decisions and actions.</p>
<p><strong>Maestro Case:</strong></p>
<p>UiPath's long-running case management. It holds a case's state and moves it through stages based on rules.</p>
<p><strong>AI Trust Layer:</strong></p>
<p>UiPath's central governance for AI: guardrails on every model request and response, approved models and regions, and an audit log.</p>
<p><strong>Coded Function:</strong></p>
<p>A small piece of deterministic code (here, Python) that gives the same answer for the same input — no AI involved.</p>
<p><strong>API Workflow:</strong></p>
<p>A workflow that calls system APIs; here it only reads, through a GET-only gateway.</p>
<p><strong>Action Center:</strong></p>
<p>Where UiPath sends tasks that need a human decision.</p>
<p><strong>Idempotency key:</strong></p>
<p>A unique key on an action, so repeating it can never create a second payment.</p>
<p><strong>Trust boundary:</strong></p>
<p>The line between what the cloud can do (read) and what only the on-premises robot can do (write).</p>
<p><strong>Evidence class:</strong></p>
<p>The kind of statement something is — a signal, a system record, a calculation, an agent finding, a human decision, an execution result or a verification.</p>
<h2><strong>Closing</strong></h2>
<p>The interesting question in enterprise AI is not how clever the agent is. It's where its authority ends. OutcomeGuard draws that line explicitly: AI investigates, code decides what's true, people decide, robots execute — and something independent proves it.</p>
<p>Oliver will never know any of this happened. His money just came back. That is the point.</p>
<blockquote>
<p><em>Designed and built by Jobin Thekkekara Joy, Solution Architect.</em></p>
<p><em>Built with UiPath Maestro (Case Management), Agents, the AI Trust Layer, Coded Functions, API Workflows, RPA, Action Center, Data Fabric and Orchestrator. The synthetic enterprise runs on FastAPI, PostgreSQL and Docker. Prototype on synthetic data; customers are fictional; regulatory references are context, not legal advice. Not affiliated with or endorsed by UiPath.</em></p>
</blockquote>
]]></content:encoded></item></channel></rss>