Anirudh Bhardwaj
Selected work
Risk & lending infrastructure · September 18, 2025

An underwriting pipeline that doesn't hallucinate

Underwriting punishes confidence. A model that hedges is annoying. A model that hallucinates a number into a credit decision — fluently, no visible seam — is a liability that shows up months later, in someone else's balance sheet.

So the design question was never how good the model is. It was: the moment it's wrong, does anything catch it before it becomes a decision.

We built this as a pipeline of narrow, specialised agents with explicit handoffs. Not one model asked to do everything end to end.

Extract. RAG-grounded extraction from messy source documents — bank statements, financials, PDFs never meant to be machine-read. Every figure is grounded in a retrievable source passage. Nothing is generated from memory.

Verify. A second pass cross-checks figures against each other and against the source. Low-confidence extractions get flagged, not silently passed downstream.

Assess. The model proposes risk signals from the verified data. Rules can veto. Nothing it proposes reaches a decision without going through logic a human wrote and can audit.

Decide. A deterministic policy layer has final word. Not final say most of the time — final, full stop. The model informs the decision. It never is the decision.

Every step logged, explainable, replayable. A decision from six months ago can be reconstructed exactly, with the evidence that produced it.

# pipeline: underwriting-decision
stages:
  extract:
    method: rag_grounded_extraction
    output: [figures, source_spans]
  verify:
    method: cross_check + confidence_scoring
    on_low_confidence: flag_for_review
  assess:
    method: ai_proposed_risk_signals
    veto: rule_engine
  decide:
    method: deterministic_policy_layer   # final word, always
    output: decision + full_evidence_trail
audit:
  every_decision: replayable_from(source_spans, verify_log, policy_version)

Turnaround went from days to hours, without loosening the bar on rigor. Every decision carries a replayable evidence trail. The rule engine — not the model — owns the final disposition, every time.

For any AI sitting in a critical path, there's one question worth asking before anything else: what happens when it's confidently wrong. If the honest answer isn't "a deterministic layer catches it, and the whole thing stays explainable," the design isn't done yet — no matter how good the demo looked in the room.