Combining vector retrieval, knowledge graphs, and agentic planning to improve financial due-diligence workflows.
A hybrid Graph RAG system for long, mixed-format earnings-call transcripts, built on a LangGraph-style agentic loop that routes each query across vector search, financial tables, and a graph layer. An LLM-as-a-judge critic scores every answer against a grounding rubric and regenerates failures until they pass. The critic loop raised answers clearing the grounding bar from 62% to 91%, at about 88% agreement with human reviewers.
Earnings calls are core inputs for institutional due diligence, but each transcript can run 50 to 300 pages of executive narrative, analyst Q&A, and financial tables. An analyst might ask "how did gross margin move quarter over quarter, and why", a question that spans prose (the "why") and exact numbers (the "how much") across several filings at once.
The system had to serve three shapes of that question, single-company Q&A, quarter-over-quarter narrative, and peer benchmarking, all grounded in evidence. Plain retrieval struggles with each: top chunks capture local semantics but miss cross-document and cross-quarter structure, values drift without table retrieval, and a single-pass fetch cannot adapt to whether a question needs metrics, risks, or transcript tone.
The question was whether retrieval could move beyond chunk relevance into reliable, evidence-grounded financial reasoning, and whether an automated critic could hold that grounding without a human checking every answer.
Three sources are integrated so one pipeline can do both semantic retrieval and symbolic reasoning. A vector store (ChromaDB): transcript chunks embedded with all-MiniLM-L6-v2, filtered by ticker, filing type, and quarter, with a quarter-relaxed fallback when an exact match is missing. Structured Parquet tables: metrics, segment entries, and risk indicators under a shared quarter normalisation, giving deterministic filters that anchor numeric outputs. A graph layer: a company-quarter-metric entity schema in NetworkX with a Neo4j-compatible design, the foundation for richer temporal and peer reasoning.
The pipeline runs as a LangGraph-style agentic loop. A planner model selects tools per query and returns a JSON policy (use_vector_search, use_metrics, use_segments, use_risks, plus vector_query). Retrieved evidence is fused into one JSON blob and passed to the response model with explicit grounding instructions, then handed to an LLM-as-a-judge critic before anything reaches the analyst.
The agentic loop: a research agent gathers grounded context from document and live-data sources, a writer drafts, and an LLM-as-a-judge critic critiques and regenerates until the draft clears the rubric, with a human-in-the-loop checkpoint before anything ships.
Planner and tool routing: intent-aware retrieval selection, with a safe fallback to all-tools mode when the planner output is invalid. Evidence fusion: transcript snippets, metrics, segment data, and risk rows are combined into a single context package. The critic: an LLM-as-a-judge scores each answer against a grounding, relevance, and completeness rubric and regenerates any draft that fails until it clears the bar. Hallucination controls: low temperature and explicit prompts to avoid guessing numbers when the data is absent.
The same critic-and-regenerate philosophy as the agentic compliance work: a judge model enforces the rubric while the answer is being written rather than trusting a single pass, so weak or ungrounded answers are caught and rewritten before an analyst ever sees them.
Each answer is scored by the LLM-as-a-judge critic on the rubric below. The critic held about 88% agreement with human reviewers on pass/fail, and its regenerate-on-fail loop raised the share of answers clearing the grounding bar from 62% on the first pass to 91%, cutting analyst verification by roughly 40% on assisted queries. Tone and guidance synthesis were strong; strict numeric and temporal fact alignment remained the hardest case.
A sample of the critic's per-answer rubric scores:
| Case | Overall | Relevance | Factual | Grounded | Complete | Clear |
|---|---|---|---|---|---|---|
| Tone and guidance | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
| Risk relevance | 0.1 | 1.0 | 0.0 | 0.0 | 0.2 | 1.0 |
Numeric grounding and quarter attribution remain the dominant error source in difficult queries.