Underwrite a loan in 30 seconds.
Auditable. On your bank's own policies.
Eight AI agents read your corpus, debate every case, and cite their sources. You get the speed of an algorithm and the paper trail of a credit committee.
No setup. Pick a borrower profile, watch the live committee land its dossiers in real time, see which of the 11 conflict-tree branches the system took.
OFAC clean · PEP clean · sector OK · KYC verified.
Strong income history (3yrs), 25% down payment — overcomes the soft DTI breach.
DSTI 38.4% · DSCR 1.31 · score 712 (near-prime) · PD 0.07.
Numbers softly breach methodology but the Underwriter found a strong mitigant (verified down payment + tenure). The tree picked the branch deterministically; the Orchestrator wrote the regulator-readable explanation.
Designed alongside risk teams at regulated EU lenders
The architecture
Three departments. Eight agents. One god view: Marvin.
Real banks decide on credit through committees — Compliance, Risk, Underwriting — under a chair. Marvin ports that structure into software, then bolts on two layers most banks don't have: a Strategy department that grows the bank's knowledge base, and a god-view layer (the one this product is named after) that watches the other seven agents talk to each other and flags drift before it ships a bad decision.
Live Execution
Front office · synchronous · ≤ 60s per decision
Five agents work the case in real time. Compliance can hard-reject; Underwriter and Quant run in parallel; the Orchestrator chairs.
Compliance Guardian
AML / KYC / sanctions / PEP — hard-stop authority
Underwriter
Deal structurer · finds compensating factors
Data Quant
Numbers · DSTI / DSCR / score / default probability
Orchestrator
Chair · applies the conflict tree, writes the verdict
Internal Archivist
RAG provider · least-privilege per agent
Strategy & Development
Brain trust · async · runs every hour / day
Two agents keep the corpus current. Scout reads the open web; Architect drafts policy revisions for operator sign-off. Approved drafts auto-ingest into the bank's knowledge base.
External Scout
Web + RSS monitor · regulations, papers, textbooks
Policy Architect
Drafts internal-policy updates from Scout findings
Evolution · god view
One floor up · async · runs nightly
Marvin sits above the other seven. He never talks to applicants and never writes policy — he reads the agents' own logs, manifests, eval traces, and clarification history, and surfaces drift before it ships a bad decision. Bottlenecks, hallucinations, knowledge gaps, conflict loops, prompt drift — five signal categories, severity-sorted, recommends only. Operator approves every change.
Marvin
AI auditor · the eighth agent · the system watching itself
The pipeline in execution
What happens when a credit application lands
Compliance runs first and can hard-reject before any other agent starts. Underwriter and Quant run in parallel to keep wall-clock under a minute. The conflict tree picks the decision; the Orchestrator writes the human-readable reasoning.
Application + uploads
Borrower profile, requested amount, uploaded PDFs (payslips, ID, bank statements). Validated against the application schema.
Compliance Guardian
Sanctions + PEP screening, prohibited-sector check, AML/KYC retrieval. Can short-circuit the pipeline with a hard reject.
Underwriter ‖ Quant
Run in parallel. UW reads policy + finds compensating factors. Quant runs ЦКР + НОИ + computes DSTI / DSCR / score / PD.
Conflict tree
Deterministic TypeScript function. Reads three dossiers, picks one of 11 branches under a 5-level hierarchy: Law > Policy > Data > Process > Heuristic.
Orchestrator + final
LLM writes the regulator-explainable prose for the branch the tree picked. The final decision is persisted with the full audit trail.
[Application + uploads]
↓
Compliance Guardian ← runs first; sanctions+PEP+RAG → ComplianceDossier
↓
hard-reject? ─────────→ short-circuit: REJECT, write final, end
↓ no
┌────┴────┐
↓ ↓
Underwriter Data Quant ← parallel; UW gets RAG+compliance summary,
│ │ Quant gets ЦКР + НОИ + RAG
└────┬────┘
↓
applyConflictTree() ← deterministic TS function
↓ returns { decision, branch, rationale, conditions }
Orchestrator agent ← LLM generates regulator-explainable prose
↓ using the branch label as context
Final Decision ← persisted with the full audit trailThe conflict tree
Five levels. Eleven branches. Written down, made executable.
Because if you can't predict why an LLM said no, neither can the regulator.
When the specialists disagree, a real chair doesn't average their opinions. They follow a hierarchy: legal blockers beat policy concerns, policy concerns beat data preferences, data preferences beat paperwork gaps. We wrote that hierarchy in TypeScript across five levels (L1 Compliance · L2 Policy · L3 Quant · L4 Process · L5 Heuristic) so the same dossiers always produce the same decision. The LLM only writes the prose explanation.
Reproducible
Same dossiers in → same decision out. Run the case six months later and reproduce the call. Auditors love this.
Testable
Each of the 11 branches has unit tests. The decision logic is reviewed line-by-line — before any LLM is involved.
Regulator-explainable
The branch label IS the audit trail. 'compliance-hard-reject' / 'quant-breach-soft-with-comp' / 'documents-rework' — plain English, every time.
| # | Branch | Decision | Plain English |
|---|---|---|---|
| 1 | compliance-hard-reject | REJECT | L1 · Legal blocker. Pipeline short-circuits before Underwriter / Quant even start. |
| 2 | compliance-review-required | REVIEW | L1 · Even if numbers are perfect, a human compliance officer must sign first. |
| 3 | policy-decline | REJECT | L2 · Bank-policy decline (sector exclusion, concentration limit). Quant has no breach — the block is policy-driven. |
| 4 | policy-escalation | REVIEW | L2 · Same as above but Underwriter cited a regulatory_exception factor — escalates for senior sign-off. |
| 5 | quant-breach-hard-no-comp | REJECT | L3 · Numbers blow past methodology limits, no structural mitigant. |
| 6 | quant-breach-hard-with-comp | REVIEW | L3 · Hard breach but Underwriter found a strong mitigant — defer to a human. |
| 7 | quant-breach-soft-with-comp | APPROVE | L3 · Soft breach + strong mitigant → approve with conditions. |
| 8 | quant-breach-soft-no-comp | REVIEW | L3 · Borderline numbers without a clear save — defer to a human. |
| 9 | documents-rework | REWORK | L4 · Application package incomplete. Case is otherwise clean — return for paperwork, NOT a credit decline. |
| 10 | all-clear | APPROVE | L5 · Within policy + complete + Underwriter APPROVE → straight-through. |
| 11 | fallthrough-review | REVIEW | L5 · 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 designed to keep it from rotting: Strategy grows the bank's knowledge base; the god-view layer (Marvin himself) reads the agents' logs, manifests, and eval traces, and surfaces drift before it ships a bad decision.
Strategy & Development
Scout + Architect
Scout polls regulatory feeds (EBA, BNB, ДВ, ECB, BIS) and runs targeted web searches for textbooks and working papers. Findings ≥ a relevance threshold queue up. Architect drafts policy revisions for operator sign-off — clean Markdown, ready to ingest. Approved drafts auto-land in the corpus.
- Scout: hourly + manual trigger
- Architect: per-finding LLM call → policy_drafts row
- Operator: edit Markdown inline, approve & ingest
- New bundle live in the corpus, allowlisted to the right agents
Evolution
Marvin (Meta-Architect)
Reads agent_outputs, decision_version_manifest, eval_runs, clarification_events. Computes 5 signal categories deterministically in TypeScript. The LLM only writes the human-readable recommendation. Severity drives the dashboard sort: block > warn > info.
- Bottleneck — agent p95 latency vs cross-agent median
- Hallucination — citation chunkIds not in knowledge_chunks
- Knowledge gap — clarifications repeating across sessions
- Conflict loop — Orchestrator REVIEW rate climbing
- Prompt drift — eval accuracy drop tied to a prompt hash
What an operator sees in System Health
Compliance p95 latency 2.4× the cross-agent median over the last 24h
Driven by 14 sessions where the AML retrieval timed out before falling back. Inspect the agent_document_access matrix — likely a misconfigured allowlist on the AML/KYC bundle. Recommend a rerun of the last hour's flagged sessions once fixed.
Why Marvin
Not another credit-scoring API
Six things that make Marvin safe to put in front of a regulator — not a black-box LLM with a thin explanation layer bolted on.
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-contamination, no hallucinated citations from the wrong domain.
Deterministic decisions
The conflict tree picks the verdict in TypeScript before the Orchestrator ever runs. The same three dossiers always produce the same decision — independent of which model version was running that day.
Citations that resolve
Every claim links to a chunkId in knowledge_chunks. Marvin (the Meta-Architect) looks them up nightly — citations that don't resolve fire a hallucination finding.
Operator-in-the-loop
When confidence dips, the agent stops and asks. The operator's answer joins the audit trail and feeds future debates as standing policy via cross-session guidance injection.
Ground-truth eval
Upload historical loans with realised outcomes. Confusion matrix, accuracy, expected loss per €1k lent. Cursor-based runs without duplicates. Per-row replay link.
Version manifest per decision
Every decision pins the prompts, retrieval settings, embedder, and corpus bundles used. The hash flips when an operator edits a prompt — auditors see exactly which revision produced which call.
Pricing
Pay for the answer, not the seat
Per-decision metering lines up cost with the actual work done. Pilot cost is fixed and capped so procurement can sign in a week.
Pilot
30-day fixed-fee proof of concept
- Up to 1,000 evaluated decisions
- One regulatory corpus
- Operator console (5 seats)
- Implementation support included
- No production traffic
Production
Live decisioning, metered usage
- Unlimited corpus + bundles
- Operator + analyst seats
- Eval dashboard + datasets
- Maker/checker workflow
- SLA: 99.9% · EU residency
Enterprise
Self-hosted or VPC, custom integrations
- Self-hosted on your infra
- Single-tenant DB + storage
- Custom prompts and policies
- Dedicated support engineer
- Audit cooperation included
See your first explainable decision in two minutes
Pick a preset borrower profile, watch the live committee land its dossiers, see which of the 11 conflict-tree branches fired and why. Then drop into Marvin's System Health view to see what the god view caught. No login, no setup.