# adithya0622/cmpdi-ai-reporting-platform architecture

> Architecture diagram of the GitHub repository adithya0622/cmpdi-ai-reporting-platform, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/adithya0622/cmpdi-ai-reporting-platform
- Repository: https://github.com/adithya0622/cmpdi-ai-reporting-platform

## Overview

CMPDI AI Reporting Platform turns subsidiary documents into searchable, validated operational data, answers, analytics, and reports. The main workflow is upload and queueing, document extraction and indexing, then either cited corpus questions or deterministic figure queries; uncertain extraction fields enter human review. Users also access reports, trends and operations analytics, while administrators manage jobs and audit activity. The graph reflects the README’s documented capabilities; several router and service implementations were not sampled, so those links follow documented responsibilities rather than inferred internal call sequences.

Main entry points: [`backend/app/db.py`](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/db.py) (PostgreSQL and pgvector), [`frontend/src/App.tsx`](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/App.tsx) (Web application), [`backend/app/services/rag.py`](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/rag.py) (Query routing and RAG), [`backend/app/services/extraction.py`](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/extraction.py) (Schema extraction)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User interface"]
  node_app["Web application<br/>[App.tsx]"]
  node_query_page["Corpus query<br/>[Query.tsx]"]
  node_review_page["Extraction review<br/>[Review.tsx]"]
  node_documents_page["Document management<br/>[Documents.tsx]"]
  node_analytics_page["Analytics view<br/>[Analytics.tsx]"]
  node_reports_page["Report view<br/>[Reports.tsx]"]
  node_admin_page["Admin console<br/>[Admin.tsx]"]
end

subgraph group_access["Access control"]
  node_auth_api["Authentication API<br/>[auth.py]"]
  node_auth["Roles and scoping<br/>[auth.py]"]
end

subgraph group_documents["Document processing"]
  node_documents_api["Document API<br/>[documents.py]"]
  node_jobs["Job queue<br/>[jobs.py]"]
  node_worker["Background worker<br/>[worker.py]"]
  node_ingest["Document ingestion<br/>[ingest.py]"]
  node_embeddings["Embedding service<br/>[embeddings.py]"]
  node_extractions_api["Extraction and review API<br/>[extractions.py]"]
  node_extraction["Schema extraction<br/>[extraction.py]"]
  node_validation["Field validation<br/>[validation.py]"]
end

subgraph group_insights["Insights and reporting"]
  node_query_api["Query API<br/>[query.py]"]
  node_rag["Query routing and RAG<br/>[rag.py]"]
  node_rerank["Search reranking<br/>[rerank.py]"]
  node_llm["LLM integration<br/>[llm.py]"]
  node_reports_api["Reports API<br/>[reports.py]"]
  node_report_gen["Report generation<br/>[report_gen.py]"]
  node_analytics_api["Analytics API<br/>[analytics.py]"]
  node_analytics["Corpus analytics<br/>[analytics.py]"]
end

subgraph group_operations["Operations"]
  node_database[("PostgreSQL and pgvector<br/>[db.py]")]
  node_admin_api["Admin API<br/>[admin.py]"]
  node_audit["Audit logging<br/>[audit.py]"]
end

node_user(("Platform user"))
node_external_llm{{"OpenAI-compatible LLM"}}
node_source_files["Uploaded documents"]

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_query_page
node_app -->|"routes to"| node_review_page
node_app -->|"routes to"| node_documents_page
node_app -->|"routes to"| node_analytics_page
node_app -->|"routes to"| node_reports_page
node_app -->|"routes to"| node_admin_page
node_query_page -->|"streams queries"| node_query_api
node_review_page -->|"reviews fields"| node_extractions_api
node_documents_page -->|"uploads files"| node_documents_api
node_analytics_page -->|"requests analytics"| node_analytics_api
node_reports_page -->|"requests reports"| node_reports_api
node_admin_page -->|"manages jobs"| node_admin_api
node_auth_api -->|"checks credentials"| node_auth
node_documents_api -->|"checks access"| node_auth
node_query_api -->|"checks role"| node_auth
node_documents_api -->|"queues ingestion"| node_jobs
node_jobs -->|"stores jobs"| node_database
node_worker -->|"claims jobs"| node_jobs
node_worker -->|"processes documents"| node_ingest
node_source_files -->|"uploads to"| node_documents_api
node_ingest -->|"stores chunks"| node_database
node_ingest -->|"requests vectors"| node_embeddings
node_embeddings -->|"writes vectors"| node_database
node_extractions_api -->|"runs extraction"| node_extraction
node_extraction -->|"requests extraction"| node_llm
node_extraction -->|"validates fields"| node_validation
node_extraction -->|"stores fields"| node_database
node_validation -->|"flags review fields"| node_database
node_query_api -->|"answers questions"| node_rag
node_rag -->|"searches corpus"| node_database
node_rag -->|"requests vectors"| node_embeddings
node_rag -->|"reranks hits"| node_rerank
node_rag -->|"generates answers"| node_llm
node_llm -.->|"sends prompts"| node_external_llm
node_query_api -->|"logs queries"| node_database
node_reports_api -->|"generates reports"| node_report_gen
node_report_gen -->|"reads corpus"| node_database
node_report_gen -->|"summarizes findings"| node_llm
node_analytics_api -->|"computes analytics"| node_analytics
node_analytics -->|"queries records"| node_database
node_admin_api -->|"reads job data"| node_database
node_admin_api -->|"records actions"| node_audit
node_audit -->|"stores audit events"| node_database

click node_app "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/App.tsx"
click node_query_page "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/pages/Query.tsx"
click node_review_page "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/pages/Review.tsx"
click node_documents_page "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/pages/Documents.tsx"
click node_analytics_page "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/pages/Analytics.tsx"
click node_reports_page "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/pages/Reports.tsx"
click node_admin_page "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/pages/Admin.tsx"
click node_auth_api "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/auth.py"
click node_auth "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/auth.py"
click node_documents_api "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/documents.py"
click node_jobs "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/jobs.py"
click node_worker "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/scripts/worker.py"
click node_ingest "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/ingest.py"
click node_embeddings "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/embeddings.py"
click node_extractions_api "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/extractions.py"
click node_extraction "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/extraction.py"
click node_validation "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/validation.py"
click node_database "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/db.py"
click node_query_api "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/query.py"
click node_rag "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/rag.py"
click node_rerank "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/rerank.py"
click node_llm "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/llm.py"
click node_reports_api "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/reports.py"
click node_report_gen "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/report_gen.py"
click node_analytics_api "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/analytics.py"
click node_analytics "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/analytics.py"
click node_admin_api "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/admin.py"
click node_audit "https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/audit.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_app,node_query_page,node_review_page,node_documents_page,node_analytics_page,node_reports_page,node_admin_page,node_user toneBlue
class node_auth_api,node_auth toneAmber
class node_documents_api,node_jobs,node_worker,node_ingest,node_embeddings,node_extractions_api,node_extraction,node_validation toneMint
class node_query_api,node_rag,node_rerank,node_llm,node_reports_api,node_report_gen,node_analytics_api,node_analytics toneRose
class node_database,node_admin_api,node_audit,node_external_llm,node_source_files toneIndigo
```

## Components

### User interface

- [Web application](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Corpus query](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/pages/Query.tsx): `frontend/src/pages/Query.tsx`
- [Extraction review](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/pages/Review.tsx): `frontend/src/pages/Review.tsx`
- [Document management](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/pages/Documents.tsx): `frontend/src/pages/Documents.tsx`
- [Analytics view](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/pages/Analytics.tsx): `frontend/src/pages/Analytics.tsx`
- [Report view](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/pages/Reports.tsx): `frontend/src/pages/Reports.tsx`
- [Admin console](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/frontend/src/pages/Admin.tsx): `frontend/src/pages/Admin.tsx`

### Access control

- [Authentication API](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/auth.py): `backend/app/routers/auth.py`
- [Roles and scoping](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/auth.py): `backend/app/auth.py`

### Document processing

- [Document API](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/documents.py): `backend/app/routers/documents.py`
- [Job queue](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/jobs.py): `backend/app/services/jobs.py`
- [Background worker](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/scripts/worker.py): `scripts/worker.py`
- [Document ingestion](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/ingest.py): `backend/app/services/ingest.py`
- [Embedding service](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/embeddings.py): `backend/app/services/embeddings.py`
- [Extraction and review API](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/extractions.py): `backend/app/routers/extractions.py`
- [Schema extraction](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/extraction.py): `backend/app/services/extraction.py`
- [Field validation](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/validation.py): `backend/app/services/validation.py`

### Insights and reporting

- [Query API](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/query.py): `backend/app/routers/query.py`
- [Query routing and RAG](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/rag.py): `backend/app/services/rag.py`
- [Search reranking](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/rerank.py): `backend/app/services/rerank.py`
- [LLM integration](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/llm.py): `backend/app/services/llm.py`
- [Reports API](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/reports.py): `backend/app/routers/reports.py`
- [Report generation](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/report_gen.py): `backend/app/services/report_gen.py`
- [Analytics API](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/analytics.py): `backend/app/routers/analytics.py`
- [Corpus analytics](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/analytics.py): `backend/app/services/analytics.py`

### Operations

- [PostgreSQL and pgvector](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/db.py): `backend/app/db.py`
- [Admin API](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/routers/admin.py): `backend/app/routers/admin.py`
- [Audit logging](https://github.com/adithya0622/cmpdi-ai-reporting-platform/blob/main/backend/app/services/audit.py): `backend/app/services/audit.py`

### Other components

- **Platform user**
- **OpenAI-compatible LLM**
- **Uploaded documents**

## Connections

- Platform user → Web application: uses
- Web application → Corpus query: routes to
- Web application → Extraction review: routes to
- Web application → Document management: routes to
- Web application → Analytics view: routes to
- Web application → Report view: routes to
- Web application → Admin console: routes to
- Corpus query → Query API: streams queries
- Extraction review → Extraction and review API: reviews fields
- Document management → Document API: uploads files
- Analytics view → Analytics API: requests analytics
- Report view → Reports API: requests reports
- Admin console → Admin API: manages jobs
- Authentication API → Roles and scoping: checks credentials
- Document API → Roles and scoping: checks access
- Query API → Roles and scoping: checks role
- Document API → Job queue: queues ingestion
- Job queue → PostgreSQL and pgvector: stores jobs
- Background worker → Job queue: claims jobs
- Background worker → Document ingestion: processes documents
- Uploaded documents → Document API: uploads to
- Document ingestion → PostgreSQL and pgvector: stores chunks
- Document ingestion → Embedding service: requests vectors
- Embedding service → PostgreSQL and pgvector: writes vectors
- Extraction and review API → Schema extraction: runs extraction
- Schema extraction → LLM integration: requests extraction
- Schema extraction → Field validation: validates fields
- Schema extraction → PostgreSQL and pgvector: stores fields
- Field validation → PostgreSQL and pgvector: flags review fields
- Query API → Query routing and RAG: answers questions
- Query routing and RAG → PostgreSQL and pgvector: searches corpus
- Query routing and RAG → Embedding service: requests vectors
- Query routing and RAG → Search reranking: reranks hits
- Query routing and RAG → LLM integration: generates answers
- LLM integration → OpenAI-compatible LLM: sends prompts
- Query API → PostgreSQL and pgvector: logs queries
- Reports API → Report generation: generates reports
- Report generation → PostgreSQL and pgvector: reads corpus
- Report generation → LLM integration: summarizes findings
- Analytics API → Corpus analytics: computes analytics
- Corpus analytics → PostgreSQL and pgvector: queries records
- Admin API → PostgreSQL and pgvector: reads job data
- Admin API → Audit logging: records actions
- Audit logging → PostgreSQL and pgvector: stores audit events
