Private Financial RAG Platform
A confidential fintech engagement (under NDA). We built a private document-intelligence platform that turns financial PDFs, scans, spreadsheets and live databases into cited, natural-language answers, deployable fully on-premise and air-gapped, with role-based, need-to-know retrieval.
Problem
Analysts sat on thousands of financial documents (filings, reports, scanned statements, spreadsheets and operational databases) that were effectively unsearchable. Public AI tools were off the table for confidentiality and compliance, so the knowledge stayed locked up, and every answer had to be manually traced back to its source.
Goal
Give analysts instant, trustworthy answers grounded in the firm's own data (across every format and even live SQL databases), with strict tenant isolation, role-based access, full source citations, and the option to run entirely inside the client's environment with zero data egress.
AI solution
A retrieval-augmented generation platform with a provider-agnostic AI core. Documents are converted (GPU layout parsing for clean files, vision-LLM OCR for scans), chunked per page, embedded with BGE-m3 and indexed in a per-organization Qdrant vector store. At query time a LangGraph agent routes each question to the right tool (document RAG, natural-language-to-SQL over live databases, tabular search, or web), and an LLM synthesizes a streamed, source-cited answer. Retrieval is governed by role-based access, so users only ever see context they are entitled to.
Workflow
- 1Ingest documents, spreadsheets and live SQL sources via a queue-driven worker
- 2Convert with layout-aware parsing (Docling) or vision-LLM OCR for scans
- 3Chunk per page, embed with BGE-m3, index into a per-tenant Qdrant store
- 4A LangGraph agent routes the query to RAG, NL-to-SQL, tabular or web search
- 5An LLM streams a grounded answer with de-duplicated page-level citations
Model & AI components
- BGE-m3 embeddings on GPU (Text-Embeddings-Inference), unified at 1024-dim
- Hybrid retrieval (BM25 + dense) with HyDE and MMR modes
- LangGraph agentic router (RAG / NL-to-SQL / tabular / web)
- Provider-agnostic LLM core: 8 cloud providers plus on-prem vLLM/Ollama
- Dual document understanding: GPU layout parsing + vision-LLM OCR
- Role-based, need-to-know retrieval (governed RAG)
Features
- Natural-language answers with de-duplicated, page-level citations
- Query documents, spreadsheets and live SQL databases in one place
- Per-organization tenant isolation and role-based document access
- Token-streamed responses across every chat surface
- Knowledge-graph explorer and embedded analytics dashboards
- In-browser document viewing/editing, exports, and bilingual EN/AR (RTL)
Architecture
A queue-driven ingestion worker (Python + RabbitMQ) feeds a Django / DRF API that orchestrates retrieval and LLM synthesis. Vectors live in Qdrant (one collection per organization); Postgres, MySQL/MSSQL and MongoDB back the app; Redis/Valkey powers real-time channels. Reliability is engineered in: a transactional outbox for the queue hand-off, an explicit document processing state machine, and idempotent SHA-256 vector IDs. The whole stack runs on cloud GPU instances or as a self-contained, air-gapped on-prem deployment.
Frontend & dashboard
A Nuxt 3 + Vue 3 analyst workspace: multiple RAG and chat surfaces with real-time streamed answers, a Neo4j knowledge-graph explorer, embedded analytics dashboards with async bulk export, in-browser document viewing and editing (OnlyOffice + TipTap), and full bilingual English/Arabic support with RTL, secured with TOTP and WebAuthn 2FA.
Integrations
- Microsoft / Azure AD SSO (per organization) + SharePoint ingestion
- Live SQL databases (MySQL / MariaDB / MSSQL)
- Self-hosted secrets management (Infisical)
- Stripe subscriptions; Prometheus observability
Deployment
Deployed either on cloud GPU instances or as a fully self-contained, air-gapped on-prem stack (Traefik, Qdrant, GPU embedding and OCR services, Django API, Celery, Nuxt UI, OnlyOffice) with pinned images and no external AI API calls, so sensitive financial data never leaves the client's network.
Tech stack
- Frontend
- Nuxt 3Vue 3TypeScriptPiniai18n (EN/AR, RTL)OnlyOfficeNeo4j viz
- Backend
- Django 5DRFChannels (WebSockets)CeleryDaphne / Uvicorn
- AI
- LangChainLangGraphBGE-m3 (TEI)DoclingVision-LLM OCRHybrid + HyDE + MMRGroq / OpenAI / Anthropic / BedrockOn-prem vLLM
- Data
- QdrantPostgreSQLMySQL / MSSQLMongoDBRedis / Valkey
- Infra & security
- DockerTraefikRabbitMQAzure AD SSOTOTP + WebAuthnInfisicalOn-prem / air-gapped
Results
We had more or less given up on AI here, because nothing could stay inside our walls. This runs entirely in our environment, it cites its sources, and our analysts genuinely reach for it every day now. That is not something I say lightly.
Build something like Private Financial RAG Platform.
Tell us your workflow and goals. We'll map the highest-leverage AI use case and a clear path to production.