# team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak- architecture

> Architecture diagram of the GitHub repository team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-
- Repository: https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-

## Overview

AyuSakshi is a multilingual, source-cited regulatory guidance platform for Ayurveda IP. Its main workflow takes a practitioner’s jurisdiction-aware chat query through the web client and Node API to the Python RAG service, which retrieves and evaluates legal sources before returning a cited response for storage and display. Separate product paths support formulation classification, ABS/TKDL guidance, document ingestion, authentication, and human facilitator review. The README documents the broader capabilities; unsampled implementation details are represented only where the tree supports a path, and uncertain internal wiring is omitted.

Main entry points: [`ai-service/app/main.py`](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/main.py) (AI API), [`client/src/services/api.js`](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/services/api.js) (API client), [`server/src/app.js`](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/app.js) (Express application), [`ai-service/app/agents/rag_orchestrator.py`](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/agents/rag_orchestrator.py) (RAG orchestrator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_client_app["Web application<br/>[App.jsx]"]
  node_chat_ui["Chat interface<br/>[ChatArea.jsx]"]
  node_classification_ui["Classification wizard"]
  node_abs_ui["ABS navigator<br/>[ABSNavigator.jsx]"]
  node_tkdl_ui["TKDL checker<br/>[TKDLChecker.jsx]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_api["Application API"]
  node_express_app["Express application<br/>[app.js]"]
  node_chat_controller["Chat controller<br/>[chatController.js]"]
  node_classification_controller["Classification API"]
  node_ai_client["AI service client<br/>[aiService.js]"]
end

subgraph group_intelligence["AI guidance"]
  node_ai_api["AI API<br/>[main.py]"]
  node_rag_orchestrator["RAG orchestrator"]
  node_hybrid_retriever["Hybrid retrieval"]
  node_citation_verifier["Citation verification"]
  node_formulation_classifier["Formulation classifier"]
  node_classification_tree["Classification rules"]
  node_abs_guidance["ABS guidance<br/>[abs_helper.py]"]
  node_tkdl_pointer["Prior-art pointer<br/>[tkdl_pointer.py]"]
  node_bhashini["Bhashini translation"]
end

subgraph group_corpus["Knowledge corpus"]
  node_document_controller["Document API"]
  node_document_ingest["Document ingestion<br/>[ingestion.py]"]
  node_pdf_extractor["PDF extraction<br/>[pdf_extractor.py]"]
  node_chunker["Legal chunker<br/>[chunker.py]"]
  node_ingestion_queue["Ingestion queue<br/>[ingestionQueue.js]"]
  node_postgres[("PostgreSQL corpus<br/>[db.js]")]
  node_redis[("Redis<br/>[redis.js]")]
end

subgraph group_operations["Accounts and review"]
  node_auth_controller["Authentication<br/>[authController.js]"]
  node_facilitator_controller["Facilitator API"]
  node_facilitator_ui["Facilitator workspace"]
  node_admin_ui["Knowledge manager"]
end

node_practitioner(("Practitioner"))
node_external_facilitator(("Human facilitator"))
node_bhashini_service["Bhashini service"]

node_practitioner -->|"uses"| node_client_app
node_client_app -->|"renders"| node_chat_ui
node_chat_ui -->|"submits query"| node_api_client
node_classification_ui -->|"requests classification"| node_api_client
node_abs_ui -->|"requests guidance"| node_api_client
node_tkdl_ui -->|"requests prior art"| node_api_client
node_api_client -->|"calls API"| node_express_app
node_express_app -->|"dispatches chat"| node_chat_controller
node_express_app -->|"dispatches classification"| node_classification_controller
node_express_app -->|"dispatches documents"| node_document_controller
node_express_app -->|"dispatches auth"| node_auth_controller
node_express_app -->|"dispatches review"| node_facilitator_controller
node_chat_controller -->|"requests RAG"| node_ai_client
node_ai_client -->|"calls AI API"| node_ai_api
node_ai_api -->|"runs query"| node_rag_orchestrator
node_rag_orchestrator -->|"retrieves sources"| node_hybrid_retriever
node_rag_orchestrator -->|"checks grounding"| node_citation_verifier
node_chat_controller -->|"reads and writes conversations"| node_postgres
node_classification_controller -->|"calls classification"| node_ai_api
node_ai_api -->|"classifies formulation"| node_formulation_classifier
node_ai_api -->|"walks decision tree"| node_classification_tree
node_rag_orchestrator -.->|"ABS capability"| node_abs_guidance
node_rag_orchestrator -.->|"prior-art capability"| node_tkdl_pointer
node_ai_api -->|"translates text"| node_bhashini
node_bhashini -.->|"calls translation service"| node_bhashini_service
node_admin_ui -->|"manages documents"| node_api_client
node_api_client -->|"uploads documents"| node_express_app
node_document_controller -->|"queues ingestion"| node_ingestion_queue
node_ingestion_queue -->|"uses queue backend"| node_redis
node_ingestion_queue -->|"requests ingestion"| node_ai_client
node_ai_client -->|"calls ingest endpoint"| node_ai_api
node_ai_api -->|"extracts pages"| node_pdf_extractor
node_ai_api -->|"chunks text"| node_chunker
node_ai_api -->|"persists chunks"| node_document_ingest
node_document_ingest -->|"writes versions and chunks"| node_postgres
node_facilitator_ui -->|"manages cases"| node_api_client
node_facilitator_controller -->|"reads and writes cases"| node_postgres
node_external_facilitator -->|"reviews escalations"| node_facilitator_ui
node_auth_controller -->|"reads and writes accounts"| node_postgres

click node_client_app "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/App.jsx"
click node_chat_ui "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/components/chat/ChatArea.jsx"
click node_classification_ui "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/components/classification/ClassificationWizard.jsx"
click node_abs_ui "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/components/abs/ABSNavigator.jsx"
click node_tkdl_ui "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/components/tkdl/TKDLChecker.jsx"
click node_api_client "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/services/api.js"
click node_express_app "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/app.js"
click node_chat_controller "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/controllers/chatController.js"
click node_auth_controller "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/controllers/authController.js"
click node_classification_controller "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/controllers/classificationController.js"
click node_document_controller "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/controllers/documentController.js"
click node_facilitator_controller "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/controllers/facilitatorController.js"
click node_ai_client "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/services/aiService.js"
click node_ai_api "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/main.py"
click node_rag_orchestrator "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/agents/rag_orchestrator.py"
click node_hybrid_retriever "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/rag/hybrid_retriever.py"
click node_citation_verifier "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/evaluators/citation_verifier.py"
click node_formulation_classifier "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/agents/formulation_classifier.py"
click node_classification_tree "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/agents/classification_tree.py"
click node_abs_guidance "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/agents/abs_helper.py"
click node_tkdl_pointer "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/agents/tkdl_pointer.py"
click node_bhashini "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/multilingual/bhashini_service.py"
click node_document_ingest "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/core/ingestion.py"
click node_pdf_extractor "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/core/pdf_extractor.py"
click node_chunker "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/core/chunker.py"
click node_ingestion_queue "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/queues/ingestionQueue.js"
click node_postgres "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/config/db.js"
click node_redis "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/config/redis.js"
click node_facilitator_ui "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/pages/facilitator/FacilitatorWorkspacePage.jsx"
click node_admin_ui "https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/components/admin/KnowledgeBaseManager.jsx"

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_client_app,node_chat_ui,node_classification_ui,node_abs_ui,node_tkdl_ui,node_api_client toneBlue
class node_express_app,node_chat_controller,node_classification_controller,node_ai_client toneAmber
class node_ai_api,node_rag_orchestrator,node_hybrid_retriever,node_citation_verifier,node_formulation_classifier,node_classification_tree,node_abs_guidance,node_tkdl_pointer,node_bhashini toneMint
class node_document_controller,node_document_ingest,node_pdf_extractor,node_chunker,node_ingestion_queue,node_postgres,node_redis toneRose
class node_auth_controller,node_facilitator_controller,node_facilitator_ui,node_admin_ui,node_practitioner,node_external_facilitator,node_bhashini_service toneIndigo
```

## Components

### User experience

- [Web application](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Chat interface](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/components/chat/ChatArea.jsx): `client/src/components/chat/ChatArea.jsx`
- [Classification wizard](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/components/classification/ClassificationWizard.jsx): `client/src/components/classification/ClassificationWizard.jsx`
- [ABS navigator](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/components/abs/ABSNavigator.jsx): `client/src/components/abs/ABSNavigator.jsx`
- [TKDL checker](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/components/tkdl/TKDLChecker.jsx): `client/src/components/tkdl/TKDLChecker.jsx`
- [API client](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/services/api.js): `client/src/services/api.js`

### Application API

- [Express application](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/app.js): `server/src/app.js`
- [Chat controller](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/controllers/chatController.js): `server/src/controllers/chatController.js`
- [Classification API](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/controllers/classificationController.js): `server/src/controllers/classificationController.js`
- [AI service client](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/services/aiService.js): `server/src/services/aiService.js`

### AI guidance

- [AI API](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/main.py): `ai-service/app/main.py`
- [RAG orchestrator](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/agents/rag_orchestrator.py): `ai-service/app/agents/rag_orchestrator.py`
- [Hybrid retrieval](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/rag/hybrid_retriever.py): `ai-service/app/rag/hybrid_retriever.py`
- [Citation verification](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/evaluators/citation_verifier.py): `ai-service/app/evaluators/citation_verifier.py`
- [Formulation classifier](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/agents/formulation_classifier.py): `ai-service/app/agents/formulation_classifier.py`
- [Classification rules](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/agents/classification_tree.py): `ai-service/app/agents/classification_tree.py`
- [ABS guidance](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/agents/abs_helper.py): `ai-service/app/agents/abs_helper.py`
- [Prior-art pointer](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/agents/tkdl_pointer.py): `ai-service/app/agents/tkdl_pointer.py`
- [Bhashini translation](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/multilingual/bhashini_service.py): `ai-service/app/multilingual/bhashini_service.py`

### Knowledge corpus

- [Document API](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/controllers/documentController.js): `server/src/controllers/documentController.js`
- [Document ingestion](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/core/ingestion.py): `ai-service/app/core/ingestion.py`
- [PDF extraction](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/core/pdf_extractor.py): `ai-service/app/core/pdf_extractor.py`
- [Legal chunker](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/ai-service/app/core/chunker.py): `ai-service/app/core/chunker.py`
- [Ingestion queue](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/queues/ingestionQueue.js): `server/src/queues/ingestionQueue.js`
- [PostgreSQL corpus](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/config/db.js): `server/src/config/db.js`
- [Redis](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/config/redis.js): `server/src/config/redis.js`

### Accounts and review

- [Authentication](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/controllers/authController.js): `server/src/controllers/authController.js`
- [Facilitator API](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/server/src/controllers/facilitatorController.js): `server/src/controllers/facilitatorController.js`
- [Facilitator workspace](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/pages/facilitator/FacilitatorWorkspacePage.jsx): `client/src/pages/facilitator/FacilitatorWorkspacePage.jsx`
- [Knowledge manager](https://github.com/team-zenith-sih-2026/ayusakshi-ip-sakthi-sahayak-/blob/main/client/src/components/admin/KnowledgeBaseManager.jsx): `client/src/components/admin/KnowledgeBaseManager.jsx`

### Other components

- **Practitioner**
- **Human facilitator**
- **Bhashini service**

## Connections

- Practitioner → Web application: uses
- Web application → Chat interface: renders
- Chat interface → API client: submits query
- Classification wizard → API client: requests classification
- ABS navigator → API client: requests guidance
- TKDL checker → API client: requests prior art
- API client → Express application: calls API
- Express application → Chat controller: dispatches chat
- Express application → Classification API: dispatches classification
- Express application → Document API: dispatches documents
- Express application → Authentication: dispatches auth
- Express application → Facilitator API: dispatches review
- Chat controller → AI service client: requests RAG
- AI service client → AI API: calls AI API
- AI API → RAG orchestrator: runs query
- RAG orchestrator → Hybrid retrieval: retrieves sources
- RAG orchestrator → Citation verification: checks grounding
- Chat controller → PostgreSQL corpus: reads and writes conversations
- Classification API → AI API: calls classification
- AI API → Formulation classifier: classifies formulation
- AI API → Classification rules: walks decision tree
- RAG orchestrator → ABS guidance: ABS capability
- RAG orchestrator → Prior-art pointer: prior-art capability
- AI API → Bhashini translation: translates text
- Bhashini translation → Bhashini service: calls translation service
- Knowledge manager → API client: manages documents
- API client → Express application: uploads documents
- Document API → Ingestion queue: queues ingestion
- Ingestion queue → Redis: uses queue backend
- Ingestion queue → AI service client: requests ingestion
- AI service client → AI API: calls ingest endpoint
- AI API → PDF extraction: extracts pages
- AI API → Legal chunker: chunks text
- AI API → Document ingestion: persists chunks
- Document ingestion → PostgreSQL corpus: writes versions and chunks
- Facilitator workspace → API client: manages cases
- Facilitator API → PostgreSQL corpus: reads and writes cases
- Human facilitator → Facilitator workspace: reviews escalations
- Authentication → PostgreSQL corpus: reads and writes accounts
