Four things about finance documents break a standard retrieval system. Answers live in tables and charts, not prose. Every monthly factsheet repeats the same sections, so which month and which fund is the entire problem. Identifiers like ISIN and fund code must match exactly, and embeddings smear precisely those tokens. And a question like ten-year revenue needs many facts gathered and computed, not one passage found.
The obvious fallbacks fail too. Stuffing the whole document costs about four times the tokens, still hits the file limit, and degrades in the middle. Fine-tuning fails differently. Factsheets change every month, and a fine-tuned model still cannot cite a source.
Six layers: sources, ingestion, representation, storage, retrieval, agentic search. One principle underneath. Precision is established at ingestion, not recovered at rerank.
Ingestion is layout-first. A detector classifies each region before any text is lifted, so a table is captured as a table with its headers attached to every cell. Charts get a separate vision pass. Representation anchors every chunk to canonical metadata: entities to stable fund IDs, dates to one ISO period, aliases collapsed through a finance ontology. Storage keeps three backends and a planner routes each sub-query. Retrieval filters to the exact fund and period before it ranks anything. The agentic layer decomposes, iterates, hands arithmetic to SQL, and abstains rather than guess.
Answer quality is set by how knowledge is organised beneath the model.
Rejected the assumption that a better model fixes retrieval.
Canonicalise entities, dates and aliases going in, so retrieval becomes a cheap metadata filter instead of interpretation under uncertainty.
Costs ingestion complexity and per-domain adapter work. Buys recall that holds as the corpus grows.
The single biggest lever against near-identical monthly files.
Rejected relying on a strong reranker to rescue a weak candidate set.
Aggregation is routed to SQL over the extracted tables.
Rejected model arithmetic, which turns ten-year revenue from a hallucination risk into an exact result.
Grounded, cited, or abstain. Never guessed.
It costs coverage, deliberately.
Rejected stuffing on three grounds: cost, reliability, and auditability.
A stuffed prompt has no citation trail, and the file gets rejected anyway.
Live with a wealth manager. 98% data accuracy. Half the time on research. Research and report inside an hour.
Deployed as research synthesis, natural language search, voice transcription for call notes, and workflow integration.
