← All case studies

Big 4 client · fully on-premise

Enterprise RAG Chatbot for a Big 4 Accounting Firm

Multimodal retrieval over a Big 4 firm’s full compliance library, tuned for citation instead of summary — every answer arrives with its source paragraph attached.

The problem

Junior auditors at a Big 4 firm were reading thousands of pages of compliance whitepapers and audit guidelines to answer a single question. Every senior became a search engine, and the same question got asked and re-answered across teams that never saw each other’s work.

What we built

A multimodal retrieval system over the full compliance library, running entirely on the firm’s own infrastructure. OCR and table parsing mean the semi-structured exhibits — the rate tables, the disclosure matrices, the scanned annexes — are searchable rather than silently skipped. Retrieval is tuned for citation rather than summary, so the system returns the passage that supports the answer alongside the answer itself.

Before: Juniors reading thousands of pages per question; Seniors acting as search engines; Tables and scanned annexes unsearchable. After: Big 4 client · fully on-premise.

Before

  • Juniors reading thousands of pages per question
  • Seniors acting as search engines
  • Tables and scanned annexes unsearchable

How it works

  1. Parse by layout. Each page is split into text, table, figure and caption regions by an ensemble of layout models. Tables and charts are cropped with their captions and read by a vision model, so exhibits are searchable rather than skipped.

  2. Index with provenance. Text is chunked by meaning; every chunk carries its file, page and, for a figure or table, the image it came from — so each answer can point to the exact page.

  3. Fine-tune on the firm’s own GPUs. Phi-3 and Llama language models and a Jina embedding model were fine-tuned on the firm’s own H100 GPU cluster, so neither the documents nor the training data left its infrastructure.

  4. Retrieve two ways. Keyword and semantic search are blended (about 30/70), with diversity reranking, because rule numbers and names are exactly what embeddings alone miss.

  5. Break the question down. Multi-part requests (“summarise the 2024 risk updates as a table with these columns”) are split into sub-questions, and each is checked for relevance before it runs.

  6. Pick the tool per part. An agent routes each sub-question to retrieval or to a table formatter; a final check confirms the combined answer covers everything that was asked.

  7. Keep the better answer. When a table is requested, the table and the plain answer are both scored for relevance; the better one is returned, or the table is refined from the retrieved text.

After

Big 4 client · fully on-premise

Stack

RAGOCROn-PremiseLLM Fine-TuningH100

Why it holds up

In audit work, an answer you cannot cite is not an answer — it is a liability. That single constraint shaped the whole build: the ranking, the chunking strategy, the refusal behaviour when the library genuinely does not cover the question. A confident guess is worse than no answer at all when the output ends up in a working paper.

Related service: Hong Kong RAG solution

Get started

Talk to the engineer who will build it.

You will speak with me directly. Bring the use case, the data and the constraints, and I will give you a straight view on feasibility, effort and the first thing to ship.

Cat YungBook a call

Hong Kong & London time zones