ai-due-diligence-copilot
AI Due Diligence Copilot
AI Due Diligence Copilot ist ein End-to-End-System zur Analyse von Finanzdokumenten, das Unternehmenseinreichungen (10-K / 10-Q) aufnimmt, strukturierte Finanzinformationen extrahiert, unterstützende Belege abruft und Analystenfragen mithilfe der zuverlässigsten verfügbaren Quelle beantwortet.
Im Gegensatz zu vielen KI-Anwendungen, die sich vollständig auf ein LLM verlassen, leitet dieses System jede Frage intelligent an eine der folgenden Stellen weiter:
Strukturierte Finanzdaten in PostgreSQL
Abgerufene Einreichungsbelege über eine Retrieval-Augmented-Generation-Pipeline (RAG)
Eine Kombination aus beidem
Um die Vertrauenswürdigkeit zu verbessern, können generierte Antworten mithilfe eines auf PyTorch basierenden Groundedness-Klassifikators bewertet werden, der prüft, ob Behauptungen durch abgerufene Belege gestützt werden.
Warum dieses Projekt?
Finanzanalysten benötigen häufig Antworten, die:
Faktisch korrekt sind
Erklärbar sind
Auf Quelldokumente zurückführbar sind
Traditionelle LLM-basierte Assistenten können Zahlen halluzinieren oder unbelegte Behauptungen aufstellen.
Dieses Projekt adressiert dieses Problem, indem es:
SQL für quantitative Schlussfolgerungen verwendet
RAG für qualitatives Dokumentverständnis verwendet
Groundedness-Bewertung zur Beurteilung der Belegunterstützung einsetzt
Optionale Claude-basierte Antwortgenerierung unterstützt, dabei aber ohne kostenpflichtige API voll funktionsfähig bleibt
Für tiefere Implementierungsdetails und Designentscheidungen siehe:
ARCHITECTURE.mdRelated MCP server: SEC-MCP
Funktionen
Dokumentaufnahme
Hochladen von Finanzeinreichungen (
.txt,.pdf,.md)Automatische Dokumentbereinigung und -aufteilung in Chunks
Verfolgung von Einreichungsmetadaten
Persistente PostgreSQL-Speicherung
Strukturierte Extraktion von Finanzkennzahlen
Extrahiert und speichert derzeit:
Umsatz
Betriebsmarge
Nettogewinn
F&E-Aufwendungen
Zahlungsmittel und Zahlungsmitteläquivalente
Diese Kennzahlen werden in PostgreSQL gespeichert und können direkt für quantitative Analysen abgefragt werden.
Intelligentes Query-Routing
Das System bestimmt automatisch, ob eine Frage über Folgendes beantwortet werden soll:
Strukturierten SQL-Abruf
Dokumentabruf (RAG)
SQL + RAG
Beispiele:
Frage | Route |
Wie hat sich die Betriebsmarge verändert? | SQL |
Welchen Lieferantenrisiken ist das Unternehmen ausgesetzt? | RAG |
Wie haben sich die Margen verändert und warum? | SQL + RAG |
MCP-Tool-Integration
Implementiert Model-Context-Protocol-Tools (MCP):
Unternehmenssuche
Finanzkennzahlen-Rechner
Dokumentsuche
Groundedness-Bewertung
Ein leichtgewichtiger PyTorch-Klassifikator bewertet, ob generierte Behauptungen durch abgerufene Belege gestützt werden.
Die Ausgaben umfassen:
Groundedness-Werte
Behauptungsbezogene Unterstützungsklassifikation
Konfidenzindikatoren
Evaluations-Harness
Integriertes Bewertungsframework, das Folgendes misst:
Routing-Genauigkeit
Abrufrelevanz
Groundedness
Latenz
Interaktives Dashboard
Weboberfläche für:
Einreichungs-Uploads
Fragenbeantwortung
Anzeige von Routing-Entscheidungen
Anzeige der Tool-Nutzung
Anzeige von Groundedness-Werten
Systemarchitektur
Financial Filing
│
▼
Document Ingestion
│
▼
Chunking
│
▼
Metric Extraction + Vectorization
(TF-IDF + SVD)
│ │
▼ ▼
PostgreSQL Vector Store
▲ ▲
│ │
User Query ───► Query Router ───┘
│
┌──────────┴──────────┐
▼ ▼
SQL Financial Route RAG Retrieval
▼ ▼
Financial Metrics Evidence Search
└──────────┬──────────┘
▼
Answer Generation
▼
Groundedness Evaluation
▼
Final ResponseAntwortgenerierungsmodi
1. Offline-/Lokaler Modus (Standard)
Keine API-Schlüssel erforderlich.
Das System beantwortet Fragen mithilfe von:
PostgreSQL-Finanzdaten
RAG-Abruf
Extraktiver Antwortgenerierung
PyTorch-Groundedness-Bewertung
Dieser Modus wurde während der Entwicklung und des Testens verwendet.
2. Claude-unterstützter Modus (Optional)
Wenn ein Anthropic-API-Schlüssel bereitgestellt wird:
ANTHROPIC_API_KEY=your_api_key_herekönnen abgerufene Belege an Claude zur Generierung von Antworten in natürlicher Sprache übergeben werden.
Pipeline:
User Query
↓
Retrieval / SQL
↓
Claude
↓
Groundedness Evaluation
↓
Final ResponseClaude wird nur für die Antwortsynthese verwendet.
Das System ist nicht auf Claude angewiesen für:
Abruf
Query-Routing
Finanzberechnungen
Groundedness-Bewertung
Wenn kein API-Schlüssel vorhanden ist, fällt die Anwendung automatisch auf die lokale extraktive Pipeline zurück.
Technologie-Stack
Backend
Technologie | Zweck |
FastAPI | API-Framework |
Uvicorn | ASGI-Server |
Pydantic | Datenvalidierung |
Datenbank
Technologie | Zweck |
PostgreSQL | Primäre Datenbank |
SQLAlchemy | ORM |
Maschinelles Lernen
Technologie | Zweck |
PyTorch | Groundedness-Klassifikator |
Scikit-Learn | Abruf-Pipeline |
NumPy | Numerische Operationen |
Abruf
Komponente | Zweck |
TF-IDF | Dokumentvektorisierung |
Truncated SVD | Dichte semantische Repräsentation |
Kosinus-Ähnlichkeit | Abruf-Ranking |
KI-Tooling
Komponente | Zweck |
MCP-Tools | Strukturierter Tool-Zugriff |
Query-Router | Routenauswahl |
Groundedness-Evaluator | Belegvalidierung |
Projektstruktur
diligence-copilot/
│
├── app/
│ ├── db/
│ ├── ingestion/
│ ├── ml/
│ ├── rag/
│ ├── mcp_tools/
│ └── main.py
│
├── data/
│
├── scripts/
│ └── setup_postgres.sql
│
├── tests/
│
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── ARCHITECTURE.md
└── README.mdInstallation
Voraussetzungen
Python 3.11+
PostgreSQL 16+ (getestet mit PostgreSQL 17.11)
Git
1. Repository klonen
git clone <repository-url>
cd diligence-copilot2. Virtuelle Umgebung erstellen
Windows
python -m venv venv
.\venv\Scripts\Activate.ps1Linux / macOS
python -m venv venv
source venv/bin/activate3. Abhängigkeiten installieren
CPU-only PyTorch installieren:
pip install torch --index-url https://download.pytorch.org/whl/cpuProjektanforderungen installieren:
pip install -r requirements.txt4. PostgreSQL konfigurieren
Ausführen:
psql -U postgres -f scripts/setup_postgres.sqlDies erstellt:
Die Datenbank
diligence_copilotDen Benutzer
diligence_appErforderliche Berechtigungen
5. Groundedness-Datensatz erstellen
python -m app.ml.build_dataset6. Groundedness-Klassifikator trainieren
python -m app.ml.groundedness7. Anwendung starten
uvicorn app.main:app --reloadAnwendung:
http://localhost:8000API-Dokumentation:
http://localhost:8000/docsDocker
docker-compose up --buildVerifizierungs-Walkthrough
Testeinreichung erstellen
Total revenue for fiscal year 2024 was $500 million.
Operating margin for fiscal year 2024 was 12.5%, compared to 10.1% in fiscal year 2023.
The company faces significant risk from a single supplier located in Vietnam.Einreichung hochladen
Verwenden:
Ticker: TEST
Unternehmen: Test Company
Geschäftsjahr: FY2024
Beispielausgabe:
Done: 1 chunks, 3 financial metrics extracted.Finanzlogik testen
Frage:
What was the change in operating margin?Beispielausgabe:
operating_margin moved from 10.1 (FY2023)
to 12.5 (FY2024), a change of 23.76%.Route:
SQLTool:
financial_ratio_calculatorAbruf testen
Frage:
What supplier risks does the company face?Beispielausgabe:
The company faces significant risk from a single supplier located in Vietnam.Hinweis: Bei sehr kleinen Einreichungen, die in einen einzelnen Chunk passen, kann der Abruf den gesamten Chunk zurückgeben, anstatt eines einzelnen Satzes.
Route:
RAGEvaluation ausführen
python -m app.eval.run_evalErgebnisse
End-to-End validiert für:
Dokumentaufnahme
Extraktion von Finanzkennzahlen
PostgreSQL-Persistenz
Query-Routing
SQL-basierte Finanzlogik
Abrufbasierte Risikoanalyse
Groundedness-Bewertung
FastAPI-Bereitstellung
Beispielhafte Evaluationsergebnisse
Metrik | Wert |
Routen-Genauigkeit | 1.00 |
Durchschnittliche Abrufrelevanz | 0.67 |
Durchschnittliche Latenz | ~30ms |
Groundedness-Klassifikator
Metrik | Wert |
Genauigkeit | 0.70 – 0.90 |
Recall | 0.75 – 1.00 |
Die Ergebnisse variieren leicht, da der Evaluationsdatensatz absichtlich klein gehalten ist.
Einschränkungen
Groundedness-Klassifikator trainiert mit 38 beschrifteten Beispielen
Die Extraktion von Finanzkennzahlen verwendet derzeit regelbasierte Muster
Der Abruf verwendet TF-IDF + SVD anstelle von Transformer-Embeddings
Der Vektorindex ist im Speicher und für Demonstrationsumfänge optimiert
Die Claude-Integration ist optional und für die Kernfunktionalität nicht erforderlich
Zukünftige Verbesserungen
Transformer-basierte Embeddings
Hybride Suche (Schlüsselwort + Vektor)
Größere Groundedness-Datensätze
LLM-basierte Extraktions-Fallback-Lösung
Mehrstufige Agenten-Workflows
pgvector-Integration
Multi-Dokumenten-Vergleich
Automatisierte Erstellung von Analystenberichten
This server cannot be deployed
Maintenance
Related MCP Connectors
Financial data and research MCP for US/CN/JP equities: filings, statements, ownership, signals.
Paid bilingual MCP tools for evidence-linked SEC filing risk and finance-author track records.
MCP server for VC pitch-deck scoring, thesis-fit matching, and deal-flow management.
Financial data MCP for market, company, news, macro, and US Congress research.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for SEC EDGAR that provides real-time access to filings, financial statements, and full-text search across all EDGAR documents.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceMCP server for analyzing SEC filings (10-K, 10-Q, 8-K) with industry-aware financial extraction and BERT-based NLP.1MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides deterministic finance tools for SEC filing analysis, enabling LLMs to compute financial ratios, fetch filings, and perform equity research without hallucinated numbers.MIT
- AlicenseAqualityBmaintenanceAn MCP server that wraps SEC EDGAR APIs to provide company financial data, screening metrics, and disclosure signals for investment diligence, with every figure traced to its source filing.8MIT