00:00live committeecase 4f3c…db20

Credit-AI you can put in front of a regulator.

Verdict in TypeScript. Reasoning in your own policies.Audit trail by default.

Marvin is an AI credit committee where eight agents read your bank's corpus, debate every case, and cite their sources — and a deterministic conflict tree, not an LLM, decides the verdict. Same dossiers in, same decision out. Every time.

hero · livecommittee.live
streaming
session4f3c…b2·streaming·00:00.0
Compliancewaiting

Underwriterwaiting

Data Quantwaiting

conflict tree →quant-breach-soft-with-comp
verdictAPPROVE with conditions·manifest0x9c…f1
sampleself-employed · €25k · 720 scorebranchquant-breach-soft-with-comploop12s · respects reduced-motion

Why this exists

The EU AI Act made credit AI a high-risk system.Most LLM products didn't get the memo.

Black-box LLMs can't explain themselves.

GDPR Article 22 requires meaningful explanation for automated credit decisions. "Vector retrieval suggested approve" is not meaningful. Auditors will say so.

Same case, different answer.

Most LLM-based credit AI is non-deterministic by design. Reproducibility isn't a nice-to-have under DORA — it's a regulatory floor. Run the same dossier next quarter and you must get the same verdict.

Citations don't resolve.

Hallucinated source IDs are routine in retrieval-augmented LLMs. Auditors check. Auditors find them. The regulator's remediation order arrives a month later.

We built Marvin because the existing credit-AI products won't survive a Tier-1 audit. Ours does.

Architecture · why agentic

A single LLM is a single point of failure.Real banks don't decide credit that way.

Why agentic

Credit committees exist for a reason.

Compliance, Risk, and Quant disagree. A chair adjudicates. That structure isn't bureaucracy — it's the only way a regulated lender can defend a decision when the regulator asks why.

Marvin ports that structure into software. Eight agents, each with a narrow remit and a private retrieval allowlist. No one agent can override the others; the chair applies a deterministic conflict tree, not its own judgement.

Why most agentic products fail

  • aNo trust boundaries. Every agent reads everything. Cross-domain leakage is inevitable; auditors call this an information barrier failure.
  • bThe chair is also an LLM. So the verdict is still non-deterministic. Same inputs, different outputs. Reproducibility fails.
  • cNo version manifest. Six months later, no one can tell which prompt, embedder, or corpus revision produced which decision. The audit trail evaporates.
  • dNo eval against ground truth. Without realised outcomes, there's no self-improvement loop — only drift.

Marvin solves all four.

The moat

The verdict is decided in TypeScriptbefore any LLM speaks.

sourceconflictTree.ts · L1 absolute-veto
// Level 1 · Absolute Veto (Compliance)
if (compliance.verdict === 'hard-reject') {
  return {
    decision: 'REJECT',
    branch: 'compliance-hard-reject',
    shortRationale:
      'Compliance issued a hard-reject ' +
      '(sanctions / AML / statutory veto). ' +
      'No override is permitted regardless ' +
      'of business or quantitative factors.',
    conditions: [],
    missingDocuments: [],
  };
}

In plain English

If Compliance returns hard-reject — sanctions hit, AML failure, statutory veto — the decision is REJECT.

No business factor can override it. No risk-side mitigant can override it. The Orchestrator will write the regulator-readable prose, but the verdict is already fixed by the time the LLM is called.

Auditors read the same code. So can a regulator. So can your head of risk.

levels5branches11unit tests47

Coverage

11 branches, 5 levels. All in code, all deterministic. Covers compliance vetoes, corporate vetoes, quantitative breaches, document rework, and STP fall-through.

Reproducibility

Same in → same out. Six months from now. After a model upgrade. After a prompt edit. The branch fired by a given dossier triple never moves.

Boundary

The Orchestrator only narrates. It writes the regulator-readable explanation. It cannot change the verdict.

The committee

Real banks decide credit through committees.Marvin ports that structure into software.

Three departments, eight agents, one god view. Each agent has a narrow remit and a private retrieval allowlist — Compliance reads AML/KYC, Quant reads scoring methodology, Underwriter reads policy. The chair (Orchestrator) applies a deterministic conflict tree to their dossiers. The eighth agent (Marvin) audits the other seven.

live · L1compliance.live

Compliance Guardian

AML / KYC / sanctions / PEP — hard-stop authority. L1 of the conflict tree.

live · L2 / L4underwriter.live

Underwriter

Deal structurer. Finds compensating factors and signs off on policy. L2 / L4.

live · L3quant.live

Data Quant

DSTI / DSCR / score / default probability. Enforces methodology thresholds. L3.

live · chairorchestrator.live

Orchestrator

Chair. Applies the conflict tree, writes the regulator-readable verdict.

live · retrievalarchivist.rag

Internal Archivist

RAG provider. Least-privilege bundle access per agent — no cross-domain leakage.

strategyscout.strategy

External Scout

Watches regulators, papers, textbooks. Surfaces drift before it hits the corpus.

strategyarchitect.strategy

Policy Architect

Drafts internal-policy updates from Scout findings — operator approves every change.

evolution · god viewmarvin.god-view

Marvin

AI auditor — reads the agents' logs, manifests, and eval traces. Recommends only; the operator approves every change. The eighth agent.

The proof

Eleven branches a regulatorcan read line by line.

Click any row to read the plain-English explanation, the actual TypeScript that fires the branch, and a sample case that took it. The branch label is the audit trail.

Branches

11

Levels

5

LOC

241

conflictTree.ts

Outcomes

4

APPROVE · REJECT · REVIEW · REWORK

#LvlBranchDecisionPlain English
1L1compliance-hard-rejectREJECTL1 · Legal blocker. Pipeline short-circuits before Underwriter / Quant even start.
2L1compliance-review-requiredREVIEWL1 · Even if numbers are perfect, a human compliance officer must sign first.
3L2policy-declineREJECTL2 · Bank-policy decline (sector exclusion, concentration limit). Quant has no breach — the block is policy-driven.
4L2policy-escalationREVIEWL2 · Same as policy-decline but Underwriter cited a regulatory_exception factor — escalates for senior sign-off.
5L3quant-breach-hard-no-compREJECTL3 · Numbers blow past methodology limits, no structural mitigant.
6L3quant-breach-hard-with-compREVIEWL3 · Hard breach but Underwriter found a strong mitigant — defer to a human.
7L3quant-breach-soft-with-compAPPROVEL3 · Soft breach + strong mitigant → approve with conditions.
8L3quant-breach-soft-no-compREVIEWL3 · Borderline numbers without a clear save — defer to a human.
9L4documents-reworkREWORKL4 · Application package incomplete. Case is otherwise clean — return for paperwork, NOT a credit decline.
10L5all-clearAPPROVEL5 · Within policy + complete + Underwriter APPROVE → straight-through.
11L5fallthrough-reviewREVIEWL5 · Committee disagrees in a way the rules above don't cover — defer.

The self-improving loop · god view

The corpus stays current.Marvin catches the system's own drift.

Most credit-AI products freeze at deployment. Marvin has two background layers that keep it from rotting: Strategy grows the bank's knowledge base; the god-view agent reads telemetry and surfaces drift before it ships a bad decision.

self-improving · loopmarvin.god-view
streaming
CAsync · nightly

Evolution · Marvin

Marvin watches the seven other agents.

  • ·Reads logs, manifests, eval traces, clarifications
  • ·Surfaces drift; recommends; operator approves
ASynchronous

Live Execution

Five agents work each credit application synchronously.

  • ·Compliance · Underwriter · Quant · Orchestrator
  • ·Emits agent_outputs, citations, manifest pins
BAsync · hourly

Strategy & Development

Two agents keep the corpus current.

  • ·Scout polls regulatory feeds + web
  • ·Architect drafts policy revisions for sign-off
periodcontinuousinputslogs · manifests · eval tracesfindingsrecommend-only
operator log · last-hoursystem-health.findings
2026-05-09T13:04:22Z  marvin.god-view   PROBE   compliance_p95_latency_24h=2387ms (median across agents=994ms · ratio=2.4x)
2026-05-09T13:04:22Z  marvin.god-view   FIND    bottleneck:compliance.aml-kyc · suspected allowlist misconfig on AML/KYC bundle
2026-05-09T13:04:22Z  marvin.god-view   EVID    sessions=14 last_hour · all timed out before fallback retrieval (deadline 1500ms)
2026-05-09T13:04:22Z  marvin.god-view   REF     4f3c…b2 · 8a91…d1 · 3c00…7e · 71ad…c4 · 19e0…fa  (+9 more)
2026-05-09T13:04:22Z  marvin.god-view   REC     rerun.flagged_sessions  count=14  scope=since 12:00Z  pending=operator
2026-05-09T13:04:22Z  marvin.god-view   META    no_change_made  rationale="god-view recommends only; operator approves every change"
severitywarnfindingbottleneck:compliance.aml-kycactionoperator approval required

Security & compliance

Built audit-ready,not retrofitted after the regulator called.

The six things a Tier-1 bank's risk + technology leadership actually checks before approving a vendor.

Least-privilege RAG

Each agent reads only the bundles its allowlist explicitly grants. Compliance reads AML/KYC. Quant reads scoring methodology. Underwriter reads policy. No cross-domain leakage, no hallucinated citations from the wrong corpus.

Version manifest per decision

Every decision pins the prompts, retrieval settings, embedder, and corpus bundles used. The manifest hash flips when an operator edits a prompt — auditors see exactly which revision produced which call.

Citations resolve, or fire a finding

Every claim links to a chunkId in knowledge_chunks. Marvin's god-view agent looks them up nightly. Citations that don't resolve are flagged as hallucinations — not silently swallowed.

EU residency · SOC 2 · ISO 27001

Data lives in Frankfurt by default. SOC 2 Type 2 in progress. ISO 27001 on the roadmap. Sub-processor list is published; pen-test summary on request.

Self-hosted on your VPC

Enterprise tier deploys into your tenancy — your DB, your storage, your secrets manager. Single-tenant, your-keys-only. Your data never touches our infra.

DPIA + GDPR Article 22 statement

Both documents are pre-written and ready to attach to your supplier review. We do meaningful explanation; the regulator decides what counts and we're ready to show them.

how it plugs inintegrations.webhook
Intake form
POST /decision
Eval / batch import

Marvin

Credit committee

Credit-decision DB
Notification queue
Append-only audit log
sourcesintake form · POST /decision · batch importsinkscredit-decision DB · notify · audit logaudit logappend-only · sha-256 chained

The audit trail

What lands in your DBafter every case.

One row per session. Hash-chained against the previous decision so a deletion is detectable. Three dossier hashes pin what each agent saw. The manifest hash pins which prompt + embedder + corpus version was active. Citations resolve or fire a finding. Auditors get their entire chain of custody from one query.

syslogdecision_audit_log · session 4f3c…db20
[2026-05-09T14:23:08.421Z] INFO [marvin] session=4f3c…db20 case_intake=ok loan=€25k applicant=self_employed
[2026-05-09T14:23:08.512Z] INFO [marvin] manifest=0xa31b…829 prompts=0xa9d4…8c1b retrieval=0xb71a…3c2e llm=anthropic/claude-sonnet-4-6
[2026-05-09T14:23:09.144Z] INFO [marvin] compliance.dossier=sha256:0x4991f540 result=pass ofac=clean pep=clean kyc=verified
[2026-05-09T14:23:09.812Z] INFO [marvin] underwriter.dossier=sha256:0xb2c80a1d result=approve factors=2_strong+1_supporting
[2026-05-09T14:23:10.003Z] WARN [marvin] quant.dossier=sha256:0xe71f3088 result=breach-soft dsti=38.4% threshold=35.0% dscr=1.31 score=712
[2026-05-09T14:23:10.418Z] INFO [marvin] citations resolved=12/12 unresolved=0 hallucinated=0
[2026-05-09T14:23:10.612Z] INFO [marvin] conflict_tree.branch=quant-breach-soft-with-comp decision=APPROVE
[2026-05-09T14:23:11.482Z] INFO [marvin] hash_chain.this=sha256:0x9c4a…1d4 prev=sha256:0x7e1b…214 commit=ok
> recommend: human-in-the-loop sign-off — quant breach is 0.07 above threshold but within soft band; preserve compensating factors as approval conditions.
decisionAPPROVEbranchquant-breach-soft-with-compverifiablesha-256 chain

Real-shaped sample. The fields above mirror the FinalDecisionV4 schema in packages/shared/src/v4.ts — what your data team will see in the decision_audit_log table after each case, surfaced through any log shipper.

Marvin vs the alternatives

Three categories.One survives a Tier-1 audit.

CapabilityMarvinLLM credit-botScoring API
Reproducible verdict
deterministic tree
varies per call
rule-based
Citations resolve
unit-checked
hallucinated
—
Audit trail per decision
hash-chained
~ad-hoc logs
row-level
Conflict resolution
11-branch tree
single LLM
single score
Self-improvement loop
god-view agent
Regulator-readable explanation
cited prose
"the model said so"
~score-card
Compliance posture
DPIA + Art. 22
DIY
~legacy
Cost model
~per case
~per token
~per query
Dispute response time
minutes (re-run)
manual reconstruction
~days (re-score)

Bolded rows are the ones a regulator asks about first. We've built for those before the others.

For each buyer

Pick the path that matchesthe question you came with.

The pilot

Fixed fee. 30 days. No production traffic.Sign in a week.

Scope

Up to 1,000 historical decisions evaluated against your loan book. One regulatory corpus configured against your policy docs. Five operator seats.

Deliverables

Confusion matrix vs realised outcomes. Expected loss per €1k lent. Branch-level audit. Drift report against your methodology. All exportable.

Exit

You keep the eval dataset. Decide on Production tier with your numbers in hand. Walk away clean if the eval doesn't meet your bar.

Start a pilot conversation

€15k · all-in · 30 days

Pricing

Pay for the answer,not the seat.

Per-decision metering aligns cost with actual work. The pilot is fixed and capped so procurement can sign in a week.

Pilot

30-day fixed-fee proof of concept

€15k/ one-off
  • Up to 1,000 evaluated decisions
  • One regulatory corpus
  • Operator console (5 seats)
  • Implementation support included
  • No production traffic
Start a pilot

Production

Live decisioning, metered usage

€0.40/ per case decision
  • Unlimited corpus + bundles
  • Operator + analyst seats
  • Eval dashboard + datasets
  • Maker/checker workflow
  • SLA: 99.9% · EU residency
Talk to us

Enterprise

Self-hosted or VPC, custom integrations

Custom/ annual contract
  • Self-hosted on your infra
  • Single-tenant DB + storage
  • Custom prompts and policies
  • Dedicated support engineer
  • Audit cooperation included
Contact sales

What's next

See a case run.Then talk to the people building it.

A live case takes 30 seconds — pick a borrower profile, watch the committee land its dossiers, see which branch fires. After that, an honest 30-minute conversation about whether Marvin fits your audit posture.