portfolio-press · applied-AI lab
Verified AI in regulated finance

One discipline. Five shapes of the same promise.

Wherever a language model touches a number in finance, the same rule holds: the engine computes it, the model may narrate it, a deterministic gate recomputes it from source — and a figure that can't be reproduced never reaches a human. Here is that rule, proved five different ways on one AWS lab.

compute narrate verify approve
The five
01

Publishing

live demo

The trust-ladder report pipeline. A model drafts model-portfolio commentary under a strict quoted_figures contract; a deterministic gate recomputes every number from the source JSON; the run sleeps in Step Functions until the owner clicks approve in Telegram; then it publishes to S3. The kind of content asset managers still assemble by hand.

the money moment

A figure the gate can't reproduce loops the draft back with concrete feedback. Three strikes and nothing ships. No unverifiable number is ever one click from a reader.

Step FunctionsBedrock ClaudeTelegram approval~$0.003/run
▶ Watch the gate catch a hallucinated figure →
02

Commentary

risk analytics

Verified narration over a volatility chart. The engine computes eleven risk figures — rounded once, at the source — and the model writes the story around them. Every number in the prose is equality-checked against the engine before the page renders.

the money moment

Hit Regenerate and the model eventually states a number the engine didn't produce. The UI refuses to display the commentary at all — the demo's whole point, live on screen.

synthetic returns11 figuresregime-shift chartequality gate
03

Ask the reports

live · AgentCore

An agent you can question about the portfolios, running on Bedrock AgentCore. The model never computes — it calls tools, and every figure in its answer is checked against what the tools returned this session. One tool, aws_spend, reads the real billed dollars from Cost Explorer — no rate card anywhere.

the money moment

Across sessions the gate kept catching the model doing arithmetic — sums, invented ranges, a derived figure. Each one fails like any other unverifiable number. The agent is allowed to reason; it is not allowed to calculate unchecked.

AgentCore Runtimetool-groundedreal AWS spendper-session verify
04

Natural-language query

NL → evidence

Ask a question in plain English; get verified evidence back. The allowed intents are the Bedrock tool specs — a tool call is the query plan. It compiles to a plan and a contract (nothing executes yet), runs it, then narrates three sentences under the gate, with four checks: completeness, and three more in the same whitelist.

the money moment

After three failed narration attempts the prose is dropped entirely — and the verified figures still stand on their own. The words are optional. The evidence is not.

intents = tool specscompile · execute · narrateP1 clean / P2 with defects
05

The cockpit

live on AWS

One FastAPI app drives all four from a single interface — CloudFront in front of a Lambda Function URL. /press runs and approves reports, /risk narrates the chart, /agent and /nlq answer questions. Same discipline, one pane of glass.

the point

Not four demos bolted together — one verification layer, shown wearing four different jobs. That reusability is the thesis, not the trick.

FastAPI · MangumCloudFront + Lambdaai.codecot.com
See it for yourself

The lab is open.

Read the cockpit and every published report freely. Running a fresh one calls a model, so that step asks for an email — a one-time link, a short session, a small cap.

← prev: the trust ladder you are here · five shapes next: vb tangent (concept) →