October 13, 2026Online track4 min read

Building Reliable, yet Smart Workflows for Finance, Wealth and Insurance

A request to complete one form can become a process lasting days. Karthic Rao follows that request through Perpetual’s compiler, approval gates, and typed model calls.

Karthic RaoPerpetualCTO

From the conference livestream · 4:23:48–4:38:59 on YouTube. The player starts and stops at this session’s boundaries.

4:23:49 ↗

One sentence creates a multi-day process

An advisor asks an assistant to fill out a W-9 for Mr. Harper. The first lookup finds three Harper households. Before any form can be completed, somebody must ask which one the advisor means.

At Perpetual, where Karthic Rao applies AI to the operations of acquired wealth-management firms, this ambiguity is ordinary work. So are missing records, sensitive information, and clients who take days to reply. The system has to keep the process moving across those interruptions.

In the example, the assistant finds the form, resolves the household ambiguity, and discovers three missing values. Existing records do not supply them, so the assistant asks the client. If no reply arrives, the workflow follows up and alerts the advisor. A partial answer requires another request. Once the information is complete, the assistant records both the values and how they were obtained, prepares the form for signature, waits again, files the signed result, and updates the advisor.

Every answer changes what can happen next. The system must remember what it asked, what the client supplied, and which approval is still missing. The short instruction has become a process crossing several systems and lasting days. 4:26:08

4:30:50 ↗

Compile the request before running it

Rao assigns control flow, evidence, and external side effects to deterministic software. Models handle interpretation and judgment at specific points. A model can interpret an ambiguous reply; the engine decides how that interpretation affects execution.

The first model call translates the request into a typed semantic graph of intents, entities, facts, artifacts, events, and constraints. Each node points back to the request text that supports it. A compiler then processes the graph without calling a model. It returns a valid plan, asks for clarification, or refuses the request. “Which Harper?” becomes a question instead of a guess.

The compiler checks proposed actions against 42 typed action contracts spanning forms, documents, email, signatures, calendars, and human steps. Unknown actions and invalid wiring fail closed. The engine, backend, and interface use the same version of those definitions, identified by a digest. Once valid, the plan is fixed and identified by its hash.

A person approves that plan before execution. The compiler can also add required steps the planner did not explicitly request: render a PDF, attach it, or judge the reply. Those obligations come from action definitions rather than a model remembering every prerequisite.

Perpetual source workflow showing form preparation, PDF rendering, email drafting, sending approval, reply waiting, judging, verification, archiving approval, and follow-up.

The compiled W-9 workflow at 4:34:25 separates model judgments, waiting, and gated actions.

4:34:34 ↗

Waiting and uncertain outcomes are execution states

Most of the human work in the opening story involved waiting, checking, and following up. The engine represents those as steps in the plan. Its default reply wait is 72 hours, and deadlines can be configured. When a deadline passes, a rule selects the next action.

Approving the plan does not authorize every future external action. Sending an email or signature request has its own gate, tied to a hash of the actual payload and checked again immediately before sending. If the draft changes, it is no longer the same approved payload.

A model may judge a reply to be partial, but that judgment remains provisional until a person confirms it. A follow-up then runs as a child plan, preserving the approved parent. Rao describes a limit of five follow-up rounds.

Side effects have a separate lifecycle: prepared, dispatching, succeeded, or an uncertain outcome that requires manual review. If the outside service does not answer cleanly, the engine does not automatically repeat the action and risk sending or filing twice. A chat message can answer a question or approve a pending step; it cannot rewrite the already approved plan.

This design keeps the model's contribution inspectable. It answers a fixed-schema question—compose an email, classify a reply, extract a field—and returns control to the state machine.

4:36:24 ↗

Make smaller judgments easier to run privately

After planning, most model calls are narrow. Rao argues that a fast, smaller model can answer many of them without frontier-level reasoning. His illustration routes 19 of 20 decisions to a fast tier and one to a frontier model. The roughly 95% figure is a design target illustrated by that run, not a measured deployment-wide result.

Typed judgments and human confirmation also create useful evaluation records. Perpetual already logs and evaluates these calls; Rao describes training the smaller tier from them as the next step. The proposed loop would reduce the portion of work requiring a frontier model over time. 4:37:03

Small, schema-checked calls offer a path toward privately hosted inference because the surrounding workflow does not depend on a particular model's free-form behavior. The engine can keep governing execution while the models improve or become cheaper. Logged judgments and human corrections give the team examples to train and evaluate that smaller tier. The workflow stays recognizable; fewer of its decisions need an expensive model.

Further reading

Full transcript 171 timestamped passages

Machine transcription with reviewed terminology and names. Some recognition errors may remain. Timestamps refer to the livestream; subtitle downloads are timed to the session clips.

4:23:49Hello, I'm Karthic, CTO at Perpetual.

4:23:52In this presentation, I'll talk about building workflows that are both reliable and intelligent for finance, wealth and insurance.

4:23:59In regulated domains, workflows must be reliable enough to meet regulatory standards while still being intelligent enough to handle the real world.

4:24:07In fields such as finance and wealth management, this presents both a technical and a compliance issue.

4:24:12Reliability and intelligence are not opposites.

4:24:14It is up to you where you draw the boundary between them.

4:24:17And that is the point of this talk, deciding where that boundary lies.

4:24:21For us, it's not merely a thought experiment, but a question that surfaces serious consequences.

4:24:26Perpetual is a wealth management roll-up.

4:24:29We acquire running traditional wealth management firms.

4:24:32And we maximize their throughput and revenue with the help of AI.

4:24:37Wealth management is a regulated industry.

4:24:39And that is where we build with AI in production.

4:24:42Everything in this talk is grounded in building for those constraints.

4:24:47Workflows in finance and wealth management come with four facts,

4:24:50and each of them pushes the architecture in the same direction.

4:24:54First, they're complex and they need runtime strategies as the process unfolds.

4:24:58You can't script every path in advance.

4:25:01Second, the data is sensitive, so you need a path to move these workflows entirely onto privately hosted models.

4:25:07Third, in a highly regulated industry, a policy violation isn't a bug report.

4:25:12It has severe consequences.

4:25:14So, fourth, execution has to be highly reliable and deterministic.

4:25:19Inject intelligence only where runtime judgment is genuinely required

4:25:23and minimize reliance on LLMs everywhere else.

4:25:28AI is spreading through regulated industries,

4:25:30but there's still no consensus on an architecture

4:25:33that gives you high reliability with the least use of LLM intelligence.

4:25:37Meanwhile, most of what developers hear from the big labs is how to burn more tokens.

4:25:42But in a regulated industry, token maxing is the wrong goal.

4:25:46These tasks are close to main.

4:25:48You can lay them out in advance and build them into a massive state machine.

4:25:52And that machine needs only a sprinkle of intelligence to navigate it.

4:25:55Most steps just follow the next edge.

4:25:58Only at a few judgment points does the model pick a branch.

4:26:01So the intelligent way to build is to use intelligence minimally and on purpose.

4:26:08Let's make this concrete with a real wealth management workflow.

4:26:12A wealth advisor turns to their assistant and says one sentence.

4:26:16Fill out the IRS W-9 for Mr. Harper to a person that's a simple instruction.

4:26:22Watch what it actually triggers when a human being executes it.

4:26:26The task has complexities that go beyond what meets the eye.

4:26:29First, the assistant finds form W-9 from the firm's records or from the IRS website.

4:26:34Then they look for Mr Harper in the system of record and find

4:26:38three Harper households. So they call the advisor. Which Harper

4:26:42do you mean? Only once that ambiguity is resolved do they move

4:26:45on to the form. A lookup, an ambiguity and a human in the loop

4:26:49all in the first minute of a one line task.

4:26:57Filling a form sounds like data entry. It isn't. Every form is a

4:27:02small program. A W9 first decides who the taxpayer is, the person or the owner if it's a disregarded

4:27:09entity. A foreign person stops right here because they need a W8 instead. Then how they're taxed?

4:27:16Exactly one box on line 3A and an LLC adds its letter. That decides which name goes on line 1

4:27:24and which on line 2. Then whose number? An SSN or an EIN. Never both. Taken from a verified document.

4:27:32never from memory. Exemption codes apply only to some entities and never to an S-corporation.

4:27:38And finally, who signs under penalties of perjury? Each answer changes the next question

4:27:43and the people involved only ever see three kinds of gates, a question, a document to collect, or

4:27:49a signature. Now they start filling the form and realize the system of record is missing three of

4:27:59the values it needs. They check the documents on file and the system of record again still

4:28:04missing so they start an email thread with the client asking for exactly those three

4:28:09values. The task now depends on someone outside the firm on their timeline.

4:28:19now the workflow waits. The request is with the client and all three values are still

4:28:23missing. If the client doesn't reply within two days, the assistant follows up and brings

4:28:28it to the advisor at the daily stand up. If the client replies with only two of the three values,

4:28:33they follow up again for the missing one. When all three arrive, they complete the form and write

4:28:38the new information back to the system of record, including the trail of how they obtained those

4:28:43values. In this industry, how you know a value matters as much as the value itself.

4:28:56Once the form is filled, it goes out for e-signature.

4:29:00If the client doesn't sign within a day or two, the assistant nudges them again.

4:29:04Once it's signed, they file it for the client, send the acknowledgement and update the advisor

4:29:09at the next day's stand-up.

4:29:11One sentence from the advisor became a process that runs for days, crosses several systems,

4:29:16weights on two people and loops back on itself more than once.

4:29:34Look at what's inside that one sentence. Ambiguity to resolve

4:29:39data together. Approvals, weights measured in days, follow-up loops and an

4:29:46evidence trail at the end.

4:29:53Workflow automation tools exist, but they rarely handle this real-world complexity and

4:29:58ambiguity.

4:29:59A fixed flowchart breaks at the first witch harbour and the lack of a native system of

4:30:03record with an integration and an agent that improvises its way through is exactly what

4:30:09a compliance team can't sign off on.

4:30:11One breaks on ambiguity, the other can't be signed off.

4:30:14neither handles what's inside that sentence. So what do we do about it? The fashionable framing

4:30:20is more agency and better models. Given agent the whole task and wait for the next model to

4:30:26make it reliable. The reflexive answer, especially inside regulated firms, is the opposite. Less

4:30:33agency, more rules, lock it down and hard code every path. Both are the wrong axis.

4:30:39In regulated verticals, reliability comes from where you place the boundary between the two,

4:30:46between the parts that must be deterministic and the parts that genuinely need judgment.

4:30:51Here's the principle.

4:30:53Determinism governs control flow, evidence, and side effects.

4:30:56What runs next, what we know, and how we know it, and anything that changes the world,

4:31:02like a record written, an email sent, or a form filed.

4:31:11Intelligence provides interpretation and judgment. Reading an ambiguous instruction, deciding which Harper, understanding a client's reply. The model answers a typed question and the deterministic system decides what to do with the answer and the interplay is recursive. A judgment can open a new smaller plan that's compiled, gated and deterministic again. You'll see that in a moment with follow ups. The boundary between the two is the design.

4:31:38Here's how that works in the workflow engine we've built.

4:31:50The request goes to a planner. That is a model call and its

4:31:54only job is translation. It emits a typed semantic graph of

4:31:59intents, entities, facts, artifacts, events, and

4:32:02constraints, each grounded in the words of the request with any

4:32:06any ambiguities it found. Every node points back to the words

4:32:10it came from. That graph goes to a compiler that never calls a

4:32:14model. In 11 deterministic stages, it turns the graph into

4:32:17an execution tag or it fails closed. There are only three

4:32:21verdicts. Valid needs clarification or refused.

4:32:28Which Harper comes back as a question, not a guess. The plan is

4:32:32is compiled, immutable and pinned by its hash.

4:32:45The model translates. The plan is compiled. The compiler checks

4:32:50the plan against the grammar. The vocabulary of what the firm

4:32:53is allowed to do. 42 typed action contracts across forms,

4:32:58documents, email, e-signature, calendar and human steps.

4:33:03Each action the planner asks for has to match a contract. Here

4:33:07form fill finds its forms contract and locks in. If the

4:33:11planner asks for an action that isn't in the grammar or wires

4:33:15one up wrong, the compiler refuses.

4:33:18There are about 40 ways to fail closed from a cycle in the graph

4:33:22to an unsupported action

4:33:23And the same contract digest is pinned in the engine, the backend and the UI. So all three agree on what an action means. That is what a closed domain buys you. The model can only ask for things the firm already knows how to do safely. Here is a compiled plan for a W9 chase. Send the client the form, wait for it to come back, check it and file it.

4:33:45Before anything runs, a person approves the plan itself.

4:33:49Find the form, prepare it for the client to fill, render the PDF and draft the email.

4:33:55Drafting is a model call, so it is violet.

4:34:02Sending is an action gate. Nothing leaves the firm until a person approves that exact email.

4:34:08Then the plan waits for a reply and a judge steps in to read it.

4:34:13The returned form is verified. If it matches, it's archived behind another gate. If it doesn't,

4:34:20the plan follows up. Now look at the dashed steps. Rendering the PDF, attaching it, judging the reply.

4:34:29The planner never asked for them. The grammar added them because the contracts require them.

4:34:35In the story, waiting, approvals, and follow-ups were most of the work.

4:34:39Here there are nodes in the plan, not prompts. A reply wait defaults to 72 hours and an explicit

4:34:47deadline can be anything from a minute to 30 days. When it passes, a rule decides what happens,

4:34:53not a model. One approval covers the plan and every external action like sending an email or

4:35:00a signature request has its own gate. The approval is tied to a hash of the exact payload and it's

4:35:06checked again right before sending. When a client replies with only part of what we asked,

4:35:11the reply judge marks it partial. That judgment is provisional. The step stays blocked until a

4:35:18person confirms it. A person confirms it and the step unblocks. Then the follow-up runs as a new

4:35:24child plan. The approved parent is never changed and there are at most five rounds.

4:35:35Once a plan is approved, a state machine runs it. It picks every step and records every result.

4:35:42When a step needs judgment, it makes one fixed schema model call. Compose an email, judge or

4:35:48reply, spot missing values, extract fields, verify a document. The answer comes back typed,

4:35:54and the state machine decides what to do with it. Side effects get a life cycle of their own.

4:36:00Prepare, dispatching, succeeded, or when the world doesn't answer cleanly, outcome unknown,

4:36:06and manual review. There are no automatic retries. A chat message can approve a step

4:36:12or answer a question. It can't change an already approved plan. The model steers. It never drives.

4:36:24Now look at what is left for the model to do. Outside the planner, the judgments are

4:36:29small and typed. Is this reply complete? Does this document match? Which field is which?

4:36:35They don't need frontier intelligence. A fast small model, the flash tier, can handle

4:36:40them. In this illustrative run of 20 decisions, 19 go to the flash tier and one goes to the

4:36:47frontier. That is why we designed for about 95% of model decisions in a workflow never

4:36:53never needing a frontier model and the flash tier can run on

4:36:57hardware you control. Only the genuinely hard cases go to a

4:37:01frontier model.

4:37:04the 5% is not a permanent tax because every judgment is

4:37:08typed and logged and the provisional ones are confirmed

4:37:11or rejected by a person. Each frontier decision produces

4:37:15eval grade distribution real training data by construction.

4:37:19That data can post train the flash tier. Logging and evals

4:37:25exist today. The training loop is next. So the frontier share

4:37:28shrinks release over release until even the hard cases run

4:37:33locally.

4:37:40Remember the requirement we started with because data is

4:37:44sensitive. You need a path to move workflows entirely to

4:37:48privately hosted LLMs. So can this design really get there? Take

4:37:52one type call from the Harper Burbinine plan. Every model call

4:37:56is small, typed and checked against a schema. So pointing it

4:38:01at a privately hosted model is a configuration change, not a

4:38:04rewrite. One line changes and the same answer comes back. Every

4:38:09other call has that same small type shape. So the same change

4:38:13applies to almost all of them.

4:38:14That is how about 95% local inference becomes viable as an architectural consequence, not a policy promise.

4:38:23That is the path that sensitive data demands and compliance risk goes down as an engineering roadmap, release by release.

4:38:31So if you remember one thing, don't ask whether your system should have more agency or less.

4:38:37Ask where the boundary is.

4:38:39Let determinism govern control flow, evidence and side effects.

4:38:44Let intelligence handle interpretation and judgment.

4:38:47At typed points, you can inspect and use every judgment you log to need less of it next time.

4:38:54Ask where the boundary is. Thank you.

4:38:56I'm Karthic, CTO at Perpetual.