# yashabyss/ai-due-dilligence-copilot architecture

> Architecture diagram of the GitHub repository yashabyss/ai-due-dilligence-copilot, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yashabyss/ai-due-dilligence-copilot
- Repository: https://github.com/yashabyss/ai-due-dilligence-copilot

## Overview

This is an AI due-diligence copilot: users upload company documents, generate a report combining extracted financials, financial trends and risks, and ask document questions with web fallback. The graph preserves the frontend report sections and backend analysis stages. Evidence is limited to the supplied excerpts and source index; undocumented upload and web-search wiring is omitted.

Main entry points: [`frontend/src/pages/Dashboard.jsx`](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/pages/Dashboard.jsx) (Dashboard), [`backend/app/risk/engine.py`](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/risk/engine.py) (Risk engine), [`backend/app/main.py`](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/main.py) (FastAPI application), [`backend/app/api/routes/reports.py`](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/api/routes/reports.py) (Report generation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Dashboard interface"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_upload["Document upload<br/>[DocumentUpload.jsx]"]
  node_chat["Copilot chat<br/>[Chatbot.jsx]"]
  node_risk_summary_ui["Risk summary view<br/>[RiskSummary.jsx]"]
  node_executive_summary_ui["Executive summary"]
  node_metrics_ui["Financial metrics view"]
  node_ratios_ui["Financial ratios view"]
  node_charts_ui["Ratio charts<br/>[RatioCharts.jsx]"]
  node_risk_ui["Risk analysis view<br/>[RiskAnalysis.jsx]"]
  node_business_ui["Business analysis view"]
  node_evidence_ui["Evidence view<br/>[Evidence.jsx]"]
end

subgraph group_api["API and orchestration"]
  node_api_client["HTTP client<br/>[api.js]"]
  node_app["FastAPI application<br/>[main.py]"]
  node_documents_route["Document routes<br/>[documents.py]"]
  node_reports_route["Report generation<br/>[reports.py]"]
  node_chat_route["Chat route<br/>[chat.py]"]
  node_agent_graph["Due diligence graph<br/>[graph.py]"]
  node_agent_state["Workflow state<br/>[state.py]"]
end

subgraph group_documents["Document intelligence"]
  node_retrieval["Document retrieval<br/>[retriever.py]"]
  node_embeddings["Embedding model<br/>[embeddings.py]"]
  node_llm["Language model<br/>[llm.py]"]
  node_web_search["Web search<br/>[web_search.py]"]
end

subgraph group_analysis["Financial and risk analysis"]
  node_financial_extract["Financial extraction<br/>[metrics.py]"]
  node_financial_analysis["Financial analysis<br/>[analysis.py]"]
  node_ratios["Ratio calculations<br/>[ratios.py]"]
  node_trends["Financial trends<br/>[trends.py]"]
  node_risk_agent["Risk agent<br/>[risk_agent.py]"]
  node_risk_engine["Risk engine<br/>[engine.py]"]
  node_risk_detector["Threshold risk detection<br/>[detector.py]"]
  node_red_flags["Red-flag detection<br/>[red_flags.py]"]
  node_risk_scoring["Risk scoring<br/>[scoring.py]"]
end

node_user(("Analyst"))

node_user -->|"uses"| node_dashboard
node_dashboard -->|"renders"| node_upload
node_dashboard -->|"renders"| node_chat
node_dashboard -->|"renders"| node_risk_summary_ui
node_dashboard -->|"renders"| node_executive_summary_ui
node_dashboard -->|"renders"| node_metrics_ui
node_dashboard -->|"renders"| node_ratios_ui
node_dashboard -->|"renders"| node_charts_ui
node_dashboard -->|"renders"| node_risk_ui
node_dashboard -->|"renders"| node_business_ui
node_dashboard -->|"renders"| node_evidence_ui
node_dashboard -->|"requests reports"| node_api_client
node_chat -->|"sends questions"| node_api_client
node_api_client -->|"HTTP requests"| node_app
node_app -->|"registers route"| node_documents_route
node_app -->|"registers route"| node_reports_route
node_app -->|"registers route"| node_chat_route
node_reports_route -->|"extracts metrics"| node_financial_extract
node_reports_route -->|"analyzes financials"| node_financial_analysis
node_reports_route -->|"invokes graph"| node_agent_graph
node_agent_graph -.->|"uses state"| node_agent_state
node_financial_extract -->|"retrieves context"| node_retrieval
node_financial_extract -->|"extracts with"| node_llm
node_retrieval -->|"loads model"| node_embeddings
node_financial_analysis -->|"calculates ratios"| node_ratios
node_financial_analysis -->|"calculates trends"| node_trends
node_risk_agent -.->|"runs analysis"| node_risk_engine
node_risk_engine -->|"analyzes financials"| node_financial_analysis
node_risk_engine -->|"detects risks"| node_risk_detector
node_risk_engine -->|"detects red flags"| node_red_flags
node_risk_engine -->|"scores risk"| node_risk_scoring

click node_dashboard "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/pages/Dashboard.jsx"
click node_upload "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/DocumentUpload.jsx"
click node_chat "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/Chatbot.jsx"
click node_risk_summary_ui "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/RiskSummary.jsx"
click node_executive_summary_ui "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/ExecutiveSummary.jsx"
click node_metrics_ui "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/FinancialMetrics.jsx"
click node_ratios_ui "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/FinancialRatios.jsx"
click node_charts_ui "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/RatioCharts.jsx"
click node_risk_ui "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/RiskAnalysis.jsx"
click node_business_ui "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/BusinessAnalysis.jsx"
click node_evidence_ui "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/Evidence.jsx"
click node_api_client "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/services/api.js"
click node_app "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/main.py"
click node_documents_route "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/api/routes/documents.py"
click node_reports_route "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/api/routes/reports.py"
click node_chat_route "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/api/routes/chat.py"
click node_agent_graph "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/agents/graph.py"
click node_agent_state "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/agents/state.py"
click node_financial_extract "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/financial/metrics.py"
click node_retrieval "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/rag/retriever.py"
click node_embeddings "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/rag/embeddings.py"
click node_llm "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/rag/llm.py"
click node_financial_analysis "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/financial/analysis.py"
click node_ratios "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/financial/ratios.py"
click node_trends "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/financial/trends.py"
click node_risk_agent "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/agents/risk_agent.py"
click node_risk_engine "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/risk/engine.py"
click node_risk_detector "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/risk/detector.py"
click node_red_flags "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/risk/red_flags.py"
click node_risk_scoring "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/risk/scoring.py"
click node_web_search "https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/rag/web_search.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dashboard,node_upload,node_chat,node_risk_summary_ui,node_executive_summary_ui,node_metrics_ui,node_ratios_ui,node_charts_ui,node_risk_ui,node_business_ui,node_evidence_ui toneBlue
class node_api_client,node_app,node_documents_route,node_reports_route,node_chat_route,node_agent_graph,node_agent_state toneAmber
class node_retrieval,node_embeddings,node_llm,node_web_search toneMint
class node_financial_extract,node_financial_analysis,node_ratios,node_trends,node_risk_agent,node_risk_engine,node_risk_detector,node_red_flags,node_risk_scoring toneRose
class node_user toneIndigo
```

## Components

### Dashboard interface

- [Dashboard](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [Document upload](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/DocumentUpload.jsx): `frontend/src/components/DocumentUpload.jsx`
- [Copilot chat](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/Chatbot.jsx): `frontend/src/components/Chatbot.jsx`
- [Risk summary view](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/RiskSummary.jsx): `frontend/src/components/RiskSummary.jsx`
- [Executive summary](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/ExecutiveSummary.jsx): `frontend/src/components/ExecutiveSummary.jsx`
- [Financial metrics view](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/FinancialMetrics.jsx): `frontend/src/components/FinancialMetrics.jsx`
- [Financial ratios view](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/FinancialRatios.jsx): `frontend/src/components/FinancialRatios.jsx`
- [Ratio charts](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/RatioCharts.jsx): `frontend/src/components/RatioCharts.jsx`
- [Risk analysis view](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/RiskAnalysis.jsx): `frontend/src/components/RiskAnalysis.jsx`
- [Business analysis view](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/BusinessAnalysis.jsx): `frontend/src/components/BusinessAnalysis.jsx`
- [Evidence view](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/components/Evidence.jsx): `frontend/src/components/Evidence.jsx`

### API and orchestration

- [HTTP client](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`
- [FastAPI application](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/main.py): `backend/app/main.py`
- [Document routes](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/api/routes/documents.py): `backend/app/api/routes/documents.py`
- [Report generation](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/api/routes/reports.py): `backend/app/api/routes/reports.py`
- [Chat route](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/api/routes/chat.py): `backend/app/api/routes/chat.py`
- [Due diligence graph](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/agents/graph.py): `backend/app/agents/graph.py`
- [Workflow state](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/agents/state.py): `backend/app/agents/state.py`

### Document intelligence

- [Document retrieval](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/rag/retriever.py): `backend/app/rag/retriever.py`
- [Embedding model](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/rag/embeddings.py): `backend/app/rag/embeddings.py`
- [Language model](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/rag/llm.py): `backend/app/rag/llm.py`
- [Web search](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/rag/web_search.py): `backend/app/rag/web_search.py`

### Financial and risk analysis

- [Financial extraction](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/financial/metrics.py): `backend/app/financial/metrics.py`
- [Financial analysis](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/financial/analysis.py): `backend/app/financial/analysis.py`
- [Ratio calculations](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/financial/ratios.py): `backend/app/financial/ratios.py`
- [Financial trends](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/financial/trends.py): `backend/app/financial/trends.py`
- [Risk agent](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/agents/risk_agent.py): `backend/app/agents/risk_agent.py`
- [Risk engine](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/risk/engine.py): `backend/app/risk/engine.py`
- [Threshold risk detection](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/risk/detector.py): `backend/app/risk/detector.py`
- [Red-flag detection](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/risk/red_flags.py): `backend/app/risk/red_flags.py`
- [Risk scoring](https://github.com/yashabyss/ai-due-dilligence-copilot/blob/main/backend/app/risk/scoring.py): `backend/app/risk/scoring.py`

### Other components

- **Analyst**

## Connections

- Analyst → Dashboard: uses
- Dashboard → Document upload: renders (evidence: `frontend/src/pages/Dashboard.jsx`)
- Dashboard → Copilot chat: renders (evidence: `frontend/src/pages/Dashboard.jsx`)
- Dashboard → Risk summary view: renders (evidence: `frontend/src/pages/Dashboard.jsx`)
- Dashboard → Executive summary: renders (evidence: `frontend/src/pages/Dashboard.jsx`)
- Dashboard → Financial metrics view: renders (evidence: `frontend/src/pages/Dashboard.jsx`)
- Dashboard → Financial ratios view: renders (evidence: `frontend/src/pages/Dashboard.jsx`)
- Dashboard → Ratio charts: renders (evidence: `frontend/src/pages/Dashboard.jsx`)
- Dashboard → Risk analysis view: renders (evidence: `frontend/src/pages/Dashboard.jsx`)
- Dashboard → Business analysis view: renders (evidence: `frontend/src/pages/Dashboard.jsx`)
- Dashboard → Evidence view: renders (evidence: `frontend/src/pages/Dashboard.jsx`)
- Dashboard → HTTP client: requests reports (evidence: `frontend/src/pages/Dashboard.jsx`)
- Copilot chat → HTTP client: sends questions (evidence: `frontend/src/components/Chatbot.jsx`)
- HTTP client → FastAPI application: HTTP requests (evidence: `frontend/src/services/api.js`)
- FastAPI application → Document routes: registers route (evidence: `backend/app/main.py`)
- FastAPI application → Report generation: registers route (evidence: `backend/app/main.py`)
- FastAPI application → Chat route: registers route (evidence: `backend/app/main.py`)
- Report generation → Financial extraction: extracts metrics (evidence: `backend/app/api/routes/reports.py`)
- Report generation → Financial analysis: analyzes financials (evidence: `backend/app/api/routes/reports.py`)
- Report generation → Due diligence graph: invokes graph (evidence: `backend/app/api/routes/reports.py`)
- Due diligence graph → Workflow state: uses state (evidence: `backend/app/agents/graph.py`)
- Financial extraction → Document retrieval: retrieves context (evidence: `backend/app/financial/metrics.py`)
- Financial extraction → Language model: extracts with (evidence: `backend/app/financial/metrics.py`)
- Document retrieval → Embedding model: loads model (evidence: `backend/app/rag/retriever.py`)
- Financial analysis → Ratio calculations: calculates ratios (evidence: `backend/app/financial/analysis.py`)
- Financial analysis → Financial trends: calculates trends (evidence: `backend/app/financial/analysis.py`)
- Risk agent → Risk engine: runs analysis (evidence: `backend/app/agents/risk_agent.py`)
- Risk engine → Financial analysis: analyzes financials (evidence: `backend/app/risk/engine.py`)
- Risk engine → Threshold risk detection: detects risks (evidence: `backend/app/risk/engine.py`)
- Risk engine → Red-flag detection: detects red flags (evidence: `backend/app/risk/engine.py`)
- Risk engine → Risk scoring: scores risk (evidence: `backend/app/risk/engine.py`)
