WEBVTT

NOTE Sentence-level transcript of https://www.youtube.com/watch?v=8g0g1ncwzG0

NOTE One cue per sentence. Cue ids are the line anchors on /transcripts/8g0g1ncwzG0.html. A cue ends where the next begins, or 2 s after its last word.

s1
00:00:00.160 --> 00:00:03.120
Hello, I'm Karthik, CTO at Perpetual.

s2
00:00:03.120 --> 00:00:10.160
In this presentation, I'll talk about building workflows that are both reliable and intelligent for finance, wealth, and insurance.

s3
00:00:10.160 --> 00:00:17.440
In regulated domains, workflows must be reliable enough to meet regulatory standards while still being intelligent enough to handle the real world.

s4
00:00:17.440 --> 00:00:22.960
In fields such as finance and wealth management, this presents both a technical and a compliance issue.

s5
00:00:22.960 --> 00:00:25.760
Reliability and intelligence are not opposites.

s6
00:00:25.760 --> 00:00:32.239
It is up to you where you draw the boundary between them and that is the point of this talk deciding where that boundary lies.

s7
00:00:32.239 --> 00:00:37.200
For us, it's not merely a thought experiment but a question that surfaces serious consequences.

s8
00:00:37.200 --> 00:00:47.520
Perpetual is a wealth management rollup we acquire running traditional wealth management firms and we maximize their throughput and revenue with the help of AI.

s9
00:00:47.520 --> 00:00:53.199
Wealth management is a regulated industry and that is where we build with AI in production.

s10
00:00:53.199 --> 00:00:57.600
Everything in this talk is grounded in building for those constraints.

s11
00:00:57.600 --> 00:01:04.400
Workflows in finance and wealth management come with four facts and each of them pushes the architecture in the same direction.

s12
00:01:04.400 --> 00:01:09.360
First, they're complex and they need runtime strategies as the process unfolds.

s13
00:01:09.360 --> 00:01:11.600
You can't script every path in advance.

s14
00:01:11.600 --> 00:01:18.080
Second, the data is sensitive, so you need a path to move these workflows entirely onto privately hosted models.

s15
00:01:18.080 --> 00:01:23.280
Third, in a highly regulated industry, a policy violation isn't a bug report.

s16
00:01:23.280 --> 00:01:24.960
It has severe consequences.

s17
00:01:24.960 --> 00:01:29.680
So, fourth, execution has to be highly reliable and deterministic.

s18
00:01:29.680 --> 00:01:38.320
Inject intelligence only where runtime judgment is genuinely required and minimize reliance on LLM everywhere else.

s19
00:01:38.799 --> 00:01:48.000
AI is spreading through regulated industries, but there's still no consensus on an architecture that gives you high reliability with the least use of LLM intelligence.

s20
00:01:48.000 --> 00:01:53.280
Meanwhile, most of what developers hear from the big labs is how to burn more tokens.

s21
00:01:53.280 --> 00:01:56.720
But in a regulated industry, token maxing is the wrong goal.

s22
00:01:56.720 --> 00:01:58.479
These tasks are close to main.

s23
00:01:58.479 --> 00:02:02.320
You can lay them out in advance and build them into a massive state machine.

s24
00:02:02.320 --> 00:02:06.320
And that machine needs only a sprinkle of intelligence to navigate it.

s25
00:02:06.320 --> 00:02:08.640
Most steps just follow the next edge.

s26
00:02:08.640 --> 00:02:12.480
Only at a few judgment points does the model pick a branch.

s27
00:02:12.480 --> 00:02:18.319
So the intelligent way to build is to use intelligence minimally and on purpose.

s28
00:02:19.599 --> 00:02:23.599
Let's make this concrete with a real wealth management workflow.

s29
00:02:23.599 --> 00:02:27.680
A wealth adviser turns to their assistant and says one sentence.

s30
00:02:27.680 --> 00:02:30.319
Fill out the IRS W9 for Mr. Harper.

s31
00:02:30.319 --> 00:02:33.120
To a person, that's a simple instruction.

s32
00:02:33.120 --> 00:02:36.720
Watch what it actually triggers when a human being executes it.

s33
00:02:36.720 --> 00:02:40.319
The task has complexities that go beyond what meets the eye.

s34
00:02:40.319 --> 00:02:45.760
First, the assistant finds form W9 from the firm's records or from the IRS website.

s35
00:02:45.760 --> 00:02:50.400
Then, they look for Mr. Harper in the system of record and find three Harper households.

s36
00:02:50.400 --> 00:02:53.360
So, they call the adviser, which Harper do you mean?

s37
00:02:53.360 --> 00:02:57.120
Only once that ambiguity is resolved do they move on to the firm.

s38
00:02:57.120 --> 00:03:03.840
A lookup, an ambiguity, and a human in the loop all in the first minute of a oneline task.

s39
00:03:08.400 --> 00:03:10.800
Filling a form sounds like data entry.

s40
00:03:10.800 --> 00:03:11.920
It isn't.

s41
00:03:11.920 --> 00:03:14.560
Every form is a small program.

s42
00:03:14.560 --> 00:03:21.680
A W9 first decides who the taxpayer is, the person or the owner if it's a disregarded entity.

s43
00:03:21.680 --> 00:03:25.760
A foreign person stops right here because they need a W8 instead.

s44
00:03:25.760 --> 00:03:27.519
Then how they're taxed.

s45
00:03:27.519 --> 00:03:32.560
Exactly one box on line 3 A and an LLC adds its letter.

s46
00:03:32.560 --> 00:03:36.159
That decides which name goes on line one and which on line two.

s47
00:03:36.159 --> 00:03:37.680
Then whose number?

s48
00:03:37.680 --> 00:03:39.920
An SSN or an EIN?

s49
00:03:39.920 --> 00:03:40.959
Never both.

s50
00:03:40.959 --> 00:03:43.840
Taken from a verified document, never from memory.

s51
00:03:43.840 --> 00:03:48.799
Exemption codes apply only to some entities and never to an S corporation.

s52
00:03:48.799 --> 00:03:51.840
And finally, who signs under penalties of perjury?

s53
00:03:51.840 --> 00:03:54.239
Each answer changes the next question.

s54
00:03:54.239 --> 00:03:57.680
And the people involved only ever see three kinds of gates.

s55
00:03:57.680 --> 00:04:02.159
A question, a document to collect, or a signature.

s56
00:04:04.480 --> 00:04:11.439
Now they start filling the form and realize the system of record is missing three of the values it needs.

s57
00:04:11.439 --> 00:04:15.840
They check the documents on file and the system of record again still missing.

s58
00:04:15.840 --> 00:04:20.959
So they start an email thread with a client asking for exactly those three values.

s59
00:04:20.959 --> 00:04:31.199
The task now depends on someone outside the firm on their timeline and now the workflow waits.

s60
00:04:31.199 --> 00:04:35.199
The request is with the client and all three values are still missing.

s61
00:04:35.199 --> 00:04:41.440
If the client doesn't reply within 2 days, the assistant follows up and brings it to the adviser at the daily standup.

s62
00:04:41.440 --> 00:04:46.320
If the client replies with only two of the three values, they follow up again for the missing one.

s63
00:04:46.320 --> 00:04:54.560
When all three arrive, they complete the form and write the new information back to the system of record, including the trail of how they obtained those values.

s64
00:04:54.560 --> 00:05:00.320
In this industry, how you know a value matters as much as the value itself.

s65
00:05:07.280 --> 00:05:10.800
Once the form is filled, it goes out for e- signature.

s66
00:05:10.800 --> 00:05:15.360
If the client doesn't sign within a day or two, the assistant nudges them again.

s67
00:05:15.360 --> 00:05:22.080
Once it's signed, they file it for the client, send the acknowledgement and update the adviser at the next day standup.

s68
00:05:22.080 --> 00:05:32.240
One sentence from the adviser became a process that runs for days, crosses several systems, waits on two people, and loops back on itself more than once.

s69
00:05:44.800 --> 00:05:47.440
Look at what's inside that one sentence.

s70
00:05:47.440 --> 00:05:59.520
Ambiguity to resolve, data to gather, approvals, weights measured in days, follow-up loops, and an evidence trail at the end.

s71
00:06:03.759 --> 00:06:09.600
Workflow automation tools exist, but they rarely handle this real world complexity and ambiguity.

s72
00:06:09.600 --> 00:06:21.440
A fixed flowchart breaks at the first witch harper and the lack of a native system of record with an integration and an agent that improvises its way through is exactly what a compliance team can't sign off on.

s73
00:06:21.440 --> 00:06:24.800
One breaks on ambiguity, the other can't be signed off.

s74
00:06:24.800 --> 00:06:27.440
Neither handles what's inside that sentence.

s75
00:06:27.440 --> 00:06:29.280
So what do we do about it?

s76
00:06:29.280 --> 00:06:33.600
The fashionable framing is more agency and better models.

s77
00:06:33.600 --> 00:06:38.160
Give agent the whole task and wait for the next model to make it reliable.

s78
00:06:38.160 --> 00:06:43.360
The reflexive answer, especially inside regulated firms, is the opposite.

s79
00:06:43.360 --> 00:06:48.960
Less agency, more rules, lock it down and hardcode every path.

s80
00:06:48.960 --> 00:06:51.199
Both are the wrong axis.

s81
00:06:51.199 --> 00:07:01.680
In regulated verticals, reliability comes from where you place the boundary between the two, between the parts that must be deterministic and the parts that genuinely need judgment.

s82
00:07:01.680 --> 00:07:03.199
Here's the principle.

s83
00:07:03.199 --> 00:07:07.599
Determinism governs control flow, evidence, and side effects.

s84
00:07:07.599 --> 00:07:10.960
what runs next, what we know and how we know it.

s85
00:07:10.960 --> 00:07:33.599
And anything that changes the world, like a record written, an email sent, or a form filed, intelligence provides interpretation and judgment, reading and ambiguous instruction, deciding which Harper, understanding a client's reply, the model answers a type question,

s86
00:07:33.599 --> 00:07:36.800
and the deterministic system decides what to do with the answer.

s87
00:07:36.800 --> 00:07:38.880
And the interplay is recursive.

s88
00:07:38.880 --> 00:07:44.160
A judgment can open a new smaller plan that's compiled, gated, and deterministic.

s89
00:07:44.160 --> 00:07:47.039
Again, you'll see that in a moment with follow-ups.

s90
00:07:47.039 --> 00:07:49.599
The boundary between the two is the design.

s91
00:07:49.599 --> 00:07:53.680
Here's how that works in the workflow engine we've built.

s92
00:08:01.199 --> 00:08:07.520
The request goes to a planner that is a model call and its only job is translation.

s93
00:08:07.520 --> 00:08:14.160
It emits a type semantic graph of intents, entities, facts, artifacts, events, and constraints.

s94
00:08:14.160 --> 00:08:18.960
Each grounded in the words of the request with any ambiguities it found.

s95
00:08:18.960 --> 00:08:21.840
Every node points back to the words it came from.

s96
00:08:21.840 --> 00:08:26.800
That graph goes to a compiler that never calls a model in 11 deterministic stages.

s97
00:08:26.800 --> 00:08:31.280
It turns the graph into an execution tag or it fails closed.

s98
00:08:31.280 --> 00:08:32.959
There are only three verdicts.

s99
00:08:32.959 --> 00:08:36.959
Valid, needs clarification or refused.

s100
00:08:38.880 --> 00:08:42.240
Which Harper comes back as a question, not a guess.

s101
00:08:42.240 --> 00:08:47.600
The plan is compiled immutable and pinned by its hash.

s102
00:08:56.480 --> 00:08:58.080
The model translates.

s103
00:08:58.080 --> 00:08:59.440
The plan is compiled.

s104
00:08:59.440 --> 00:09:05.760
The compiler checks the plan against the grammar, the vocabulary of what the firm is allowed to do.

s105
00:09:05.760 --> 00:09:13.920
42 typed action contracts across forms, documents, email, e signature, calendar, and human steps.

s106
00:09:13.920 --> 00:09:17.920
Each action the planner asks for has to match a contract.

s107
00:09:17.920 --> 00:09:21.760
Here, form fill finds its forms contract and locks in.

s108
00:09:21.760 --> 00:09:28.880
If the planner asks for an action that isn't in the grammar or wires one up wrong, the compiler refuses.

s109
00:09:28.880 --> 00:09:34.399
There are about 40 ways to fail closed from a cycle in the graph to an unsupported action.

s110
00:09:34.399 --> 00:09:39.680
And the same contract digest is pinned in the engine, the back end, and the UI.

s111
00:09:39.680 --> 00:09:42.320
So, all three agree on what an action means.

s112
00:09:42.320 --> 00:09:44.640
That is what a closed domain buys you.

s113
00:09:44.640 --> 00:09:48.720
The model can only ask for things the firm already knows how to do safely.

s114
00:09:48.720 --> 00:09:56.880
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.

s115
00:09:56.880 --> 00:10:05.839
Before anything runs, a person approves the plan itself, find the form, prepare it for the client to fill, render the PDF, and draft the email.

s116
00:10:05.839 --> 00:10:10.000
Drafting is a model call, so it is violet.

s117
00:10:12.880 --> 00:10:14.959
Sending is an action gate.

s118
00:10:14.959 --> 00:10:18.560
Nothing leaves the firm until a person approves that exact email.

s119
00:10:18.560 --> 00:10:24.079
Then the plan waits for a reply and a judge steps in to read it.

s120
00:10:24.079 --> 00:10:26.399
The returned form is verified.

s121
00:10:26.399 --> 00:10:30.000
If it matches, it's archived behind another gate.

s122
00:10:30.000 --> 00:10:32.079
If it doesn't, the plan follows up.

s123
00:10:32.079 --> 00:10:35.200
Now look at the dashed steps.

s124
00:10:35.920 --> 00:10:39.920
Rendering the PDF, attaching it, judging the reply.

s125
00:10:39.920 --> 00:10:42.160
The planner never asked for them.

s126
00:10:42.160 --> 00:10:45.839
The grammar added them because the contracts require them.

s127
00:10:45.839 --> 00:10:50.880
In the story, waiting, approvals, and follow-ups were most of the work.

s128
00:10:50.880 --> 00:10:53.760
Here, there are nodes in the plan, not prompts.

s129
00:10:53.760 --> 00:11:01.440
A reply weight defaults to 72 hours, and an explicit deadline can be anything from a minute to 30 days.

s130
00:11:01.440 --> 00:11:05.600
When it passes, a rule decides what happens, not a model.

s131
00:11:05.600 --> 00:11:13.360
One approval covers the plan and every external action like sending an email or a signature request has its own gate.

s132
00:11:13.360 --> 00:11:19.040
The approval is tied to a hash of the exact payload and it's checked again right before sending.

s133
00:11:19.040 --> 00:11:24.959
When a client replies with only part of what we asked, the reply judge marks it partial.

s134
00:11:24.959 --> 00:11:27.120
That judgment is provisional.

s135
00:11:27.120 --> 00:11:30.000
The step stays blocked until a person confirms it.

s136
00:11:30.000 --> 00:11:32.880
A person confirms it and the step unblocks.

s137
00:11:32.880 --> 00:11:35.680
Then the follow-up runs as a new child plan.

s138
00:11:35.680 --> 00:11:41.600
The approved parent is never changed and there are at most five rounds.

s139
00:11:46.000 --> 00:11:49.360
Once a plan is approved, a state machine runs it.

s140
00:11:49.360 --> 00:11:52.560
It picks every step and records every result.

s141
00:11:52.560 --> 00:11:57.040
When a step needs judgment, it makes one fixed schema model call.

s142
00:11:57.040 --> 00:12:08.240
Compose an email, judge a reply, spot missing values, extract fields, verify a document, the answer comes back typed, and the state machine decides what to do with it.

s143
00:12:08.240 --> 00:12:10.880
Side effects get a life cycle of their own.

s144
00:12:10.880 --> 00:12:15.839
Prepare, dispatching, succeeded, or when the world doesn't answer cleanly.

s145
00:12:15.839 --> 00:12:18.720
Outcome unknown, and manual review.

s146
00:12:18.720 --> 00:12:20.639
There are no automatic retries.

s147
00:12:20.639 --> 00:12:24.320
A chat message can approve a step or answer a question.

s148
00:12:24.320 --> 00:12:26.800
It can't change an already approved plan.

s149
00:12:26.800 --> 00:12:28.160
The model steers.

s150
00:12:28.160 --> 00:12:30.639
It never drives.

s151
00:12:35.040 --> 00:12:37.360
Now look at what is left for the model to do.

s152
00:12:37.360 --> 00:12:41.360
Outside the planner, the judgments are small and typed.

s153
00:12:41.360 --> 00:12:43.120
Is this reply complete?

s154
00:12:43.120 --> 00:12:44.800
Does this document match?

s155
00:12:44.800 --> 00:12:46.160
Which field is which?

s156
00:12:46.160 --> 00:12:48.320
They don't need frontier intelligence.

s157
00:12:48.320 --> 00:12:52.240
A fast small model, the flash tier, can handle them.

s158
00:12:52.240 --> 00:12:58.720
In this illustrative run of 20 decisions, 19 go to the flash tier and one goes to the frontier.

s159
00:12:58.720 --> 00:13:05.680
That is why we designed for about 95% of model decisions in a workflow, never needing a frontier model.

s160
00:13:05.680 --> 00:13:09.360
And the flash tier can run on hardware you control.

s161
00:13:09.360 --> 00:13:14.160
Only the genuinely hard cases go to a frontier model.

s162
00:13:14.320 --> 00:13:24.000
And the 5% is not a permanent tax because every judgment is typed and logged and the provisional ones are confirmed or rejected by a person.

s163
00:13:24.000 --> 00:13:31.120
Each frontier decision produces eval grade distribution real training data by construction.

s164
00:13:31.120 --> 00:13:34.320
That data can postrain the flash tier.

s165
00:13:34.320 --> 00:13:36.800
Logging and evals exist today.

s166
00:13:36.800 --> 00:13:38.320
The training loop is next.

s167
00:13:38.320 --> 00:13:45.600
So the frontier share shrinks release over release until even the hard cases run locally.

s168
00:13:51.279 --> 00:13:55.680
Remember the requirement we started with because data is sensitive.

s169
00:13:55.680 --> 00:14:00.720
You need a path to move workflows entirely to privately hosted LLMs.

s170
00:14:00.720 --> 00:14:02.800
So can this design really get there?

s171
00:14:02.800 --> 00:14:06.240
Take one type call from the Harper Berby 9 plan.

s172
00:14:06.240 --> 00:14:10.720
Every model call is small, typed, and checked against a schema.

s173
00:14:10.720 --> 00:14:16.160
So pointing it at a privately hosted model is a configuration change, not a rewrite.

s174
00:14:16.160 --> 00:14:19.440
One line changes and the same answer comes back.

s175
00:14:19.440 --> 00:14:22.800
Every other call has that same small typed shape.

s176
00:14:22.800 --> 00:14:26.320
So the same change applies to almost all of them.

s177
00:14:26.320 --> 00:14:33.600
That is how about 95% local inference becomes viable as an architectural consequence, not a policy promise.

s178
00:14:33.600 --> 00:14:42.320
That is the path that sensitive data demands and compliance risk goes down as an engineering road map release by release.

s179
00:14:42.320 --> 00:14:48.160
So if you remember one thing, don't ask whether your system should have more agency or less.

s180
00:14:48.160 --> 00:14:50.399
Ask where the boundary is.

s181
00:14:50.399 --> 00:14:55.120
Let determinism govern control flow, evidence, and side effects.

s182
00:14:55.120 --> 00:14:58.639
Let intelligence handle interpretation and judgment.

s183
00:14:58.639 --> 00:15:04.160
At typed points, you can inspect and use every judgment you log to need less of it.

s184
00:15:04.160 --> 00:15:07.920
Next time, ask where the boundary is.

s185
00:15:12.560 --> 00:15:13.519
Thank you.

s186
00:15:13.519 --> 00:15:16.639
I'm Karthik, CTO at Perpetual.

s187
00:15:16.639 --> 00:15:22.079
If you're building AI into regulated work, I'd love to compare notes.
