# anamitra-bakshiii/rakshak-ai architecture

> Architecture diagram of the GitHub repository anamitra-bakshiii/rakshak-ai, 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/anamitra-bakshiii/rakshak-ai
- Repository: https://github.com/anamitra-bakshiii/rakshak-ai

## Overview

Prahari is a multi-channel public-safety fraud intelligence product: citizens submit messages, URLs, voice transcripts, or live-call signals for risk decisions and guidance; investigators use graph and geographic views, while detections can become auditable case files. The map combines README capabilities with sampled API, webhook, Android, RAG, and dashboard evidence. Some module wiring is documented but its implementation was not sampled, so uncertain internal links are omitted.

Main entry points: [`api/server.py`](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/api/server.py) (Analysis API), [`prahari_dashboard_backend/app/main.py`](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/prahari_dashboard_backend/app/main.py) (Dashboard API), [`android/app/src/main/java/com/rakshak/ai/ui/MainActivity.kt`](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/android/app/src/main/java/com/rakshak/ai/ui/MainActivity.kt) (Android App), [`android/app/src/main/java/com/rakshak/ai/callscreening/RakshakCallScreeningService.kt`](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/android/app/src/main/java/com/rakshak/ai/callscreening/RakshakCallScreeningService.kt) (Call Screening)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_channels["Citizen Channels"]
  node_android["Android App<br/>[MainActivity.kt]"]
  node_call_service["Call Screening"]
  node_api["Analysis API<br/>[server.py]"]
  node_whatsapp["WhatsApp Webhook<br/>[app.py]"]
  node_citizen_frontend["Citizen Dashboard<br/>[CitizenLayout.jsx]"]
end

subgraph group_detection["Risk Detection"]
  node_decision_agent["Call Decision<br/>[DecisionAgent.kt]"]
  node_offline_rules["Offline Rules"]
  node_classifier["Scam Classifier<br/>[detector.py]"]
  node_session["Session Detector<br/>[session.py]"]
  node_link_safety["Link Safety<br/>[url_safety.py]"]
  node_voice_detector["Voice Fraud<br/>[voice_fraud.py]"]
end

subgraph group_intelligence["Fraud Intelligence"]
  node_graph[("Fraud Graph<br/>[fraud_graph.py]")]
  node_geo["Geo Fraud<br/>[geo_fraud.py]"]
  node_case_generator["Case Generator<br/>[case_generator.py]"]
  node_feedback[("Feedback Store<br/>[store.py]")]
end

subgraph group_guidance["Guidance and Cases"]
  node_chat_pipeline["Legal RAG<br/>[pipeline.py]"]
  node_bot_agent["Scam Guidance<br/>[agent.py]"]
  node_rag_store[("Knowledge Store<br/>[store.py]")]
end

subgraph group_investigation["Investigation"]
  node_command_frontend["Command Centre<br/>[CommandLayout.jsx]"]
  node_dashboard_api["Dashboard API<br/>[main.py]"]
  node_dashboard_graph["Graph Service<br/>[graph.py]"]
  node_dashboard_geo["Geo Service<br/>[geo_service.py]"]
end

node_citizen(("Citizen"))
node_investigator(("Investigator"))

node_citizen -->|"uses"| node_android
node_android -->|"submits checks"| node_api
node_call_service -->|"requests decision"| node_decision_agent
node_call_service -->|"opens warning"| node_android
node_decision_agent -->|"offline fallback"| node_offline_rules
node_citizen -->|"submits analysis"| node_api
node_api -->|"classifies text"| node_classifier
node_api -->|"ingests session"| node_session
node_api -->|"checks URL"| node_link_safety
node_api -->|"checks transcript"| node_voice_detector
node_api -->|"adds interactions"| node_graph
node_api -->|"adds points"| node_geo
node_api -->|"generates case"| node_case_generator
node_whatsapp -->|"sends reply"| node_citizen
node_citizen -->|"sends message or media"| node_whatsapp
node_citizen -->|"uses"| node_citizen_frontend
node_investigator -->|"investigates"| node_command_frontend
node_command_frontend -->|"requests data"| node_dashboard_api
node_dashboard_api -->|"serves network data"| node_dashboard_graph
node_dashboard_api -->|"serves geo data"| node_dashboard_geo
node_citizen -->|"asks legal question"| node_chat_pipeline
node_chat_pipeline -->|"retrieves knowledge"| node_rag_store
node_citizen -->|"requests scam guidance"| node_bot_agent
node_api -->|"logs correction"| node_feedback

click node_android "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/android/app/src/main/java/com/rakshak/ai/ui/MainActivity.kt"
click node_call_service "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/android/app/src/main/java/com/rakshak/ai/callscreening/RakshakCallScreeningService.kt"
click node_api "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/api/server.py"
click node_whatsapp "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/webhook/app.py"
click node_decision_agent "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/android/app/src/main/java/com/rakshak/ai/intelligence/DecisionAgent.kt"
click node_offline_rules "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/android/app/src/main/java/com/rakshak/ai/intelligence/OfflineRuleEngine.kt"
click node_classifier "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/ml/detector.py"
click node_session "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/ml/session.py"
click node_link_safety "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/link/url_safety.py"
click node_voice_detector "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/voice/voice_fraud.py"
click node_graph "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/graph/fraud_graph.py"
click node_geo "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/geo/geo_fraud.py"
click node_case_generator "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/casefile/case_generator.py"
click node_feedback "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/feedback/store.py"
click node_citizen_frontend "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/prahari_dashboard_frontend/src/Dashboard/citizen/CitizenLayout.jsx"
click node_command_frontend "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/prahari_dashboard_frontend/src/Dashboard/CommandWorkSpace/CommandLayout.jsx"
click node_dashboard_api "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/prahari_dashboard_backend/app/main.py"
click node_dashboard_graph "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/prahari_dashboard_backend/app/services/graph.py"
click node_dashboard_geo "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/prahari_dashboard_backend/app/services/geo_service.py"
click node_chat_pipeline "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/assistant/pipeline.py"
click node_bot_agent "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/bot/agent.py"
click node_rag_store "https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/rag/store.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_android,node_call_service,node_api,node_whatsapp,node_citizen_frontend toneBlue
class node_decision_agent,node_offline_rules,node_classifier,node_session,node_link_safety,node_voice_detector toneAmber
class node_graph,node_geo,node_case_generator,node_feedback toneMint
class node_chat_pipeline,node_bot_agent,node_rag_store toneRose
class node_command_frontend,node_dashboard_api,node_dashboard_graph,node_dashboard_geo,node_citizen,node_investigator toneIndigo
```

## Components

### Citizen Channels

- [Android App](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/android/app/src/main/java/com/rakshak/ai/ui/MainActivity.kt): `android/app/src/main/java/com/rakshak/ai/ui/MainActivity.kt`
- [Call Screening](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/android/app/src/main/java/com/rakshak/ai/callscreening/RakshakCallScreeningService.kt): `android/app/src/main/java/com/rakshak/ai/callscreening/RakshakCallScreeningService.kt`
- [Analysis API](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/api/server.py): `api/server.py`
- [WhatsApp Webhook](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/webhook/app.py): `webhook/app.py`
- [Citizen Dashboard](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/prahari_dashboard_frontend/src/Dashboard/citizen/CitizenLayout.jsx): `prahari_dashboard_frontend/src/Dashboard/citizen/CitizenLayout.jsx`

### Risk Detection

- [Call Decision](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/android/app/src/main/java/com/rakshak/ai/intelligence/DecisionAgent.kt): `android/app/src/main/java/com/rakshak/ai/intelligence/DecisionAgent.kt`
- [Offline Rules](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/android/app/src/main/java/com/rakshak/ai/intelligence/OfflineRuleEngine.kt): `android/app/src/main/java/com/rakshak/ai/intelligence/OfflineRuleEngine.kt`
- [Scam Classifier](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/ml/detector.py): `ml/detector.py`
- [Session Detector](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/ml/session.py): `ml/session.py`
- [Link Safety](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/link/url_safety.py): `link/url_safety.py`
- [Voice Fraud](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/voice/voice_fraud.py): `voice/voice_fraud.py`

### Fraud Intelligence

- [Fraud Graph](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/graph/fraud_graph.py): `graph/fraud_graph.py`
- [Geo Fraud](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/geo/geo_fraud.py): `geo/geo_fraud.py`
- [Case Generator](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/casefile/case_generator.py): `casefile/case_generator.py`
- [Feedback Store](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/feedback/store.py): `feedback/store.py`

### Guidance and Cases

- [Legal RAG](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/assistant/pipeline.py): `assistant/pipeline.py`
- [Scam Guidance](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/bot/agent.py): `bot/agent.py`
- [Knowledge Store](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/rag/store.py): `rag/store.py`

### Investigation

- [Command Centre](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/prahari_dashboard_frontend/src/Dashboard/CommandWorkSpace/CommandLayout.jsx): `prahari_dashboard_frontend/src/Dashboard/CommandWorkSpace/CommandLayout.jsx`
- [Dashboard API](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/prahari_dashboard_backend/app/main.py): `prahari_dashboard_backend/app/main.py`
- [Graph Service](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/prahari_dashboard_backend/app/services/graph.py): `prahari_dashboard_backend/app/services/graph.py`
- [Geo Service](https://github.com/anamitra-bakshiii/rakshak-ai/blob/main/prahari_dashboard_backend/app/services/geo_service.py): `prahari_dashboard_backend/app/services/geo_service.py`

### Other components

- **Citizen**
- **Investigator**

## Connections

- Citizen → Android App: uses
- Android App → Analysis API: submits checks
- Call Screening → Call Decision: requests decision
- Call Screening → Android App: opens warning
- Call Decision → Offline Rules: offline fallback
- Citizen → Analysis API: submits analysis
- Analysis API → Scam Classifier: classifies text
- Analysis API → Session Detector: ingests session
- Analysis API → Link Safety: checks URL
- Analysis API → Voice Fraud: checks transcript
- Analysis API → Fraud Graph: adds interactions
- Analysis API → Geo Fraud: adds points
- Analysis API → Case Generator: generates case
- WhatsApp Webhook → Citizen: sends reply
- Citizen → WhatsApp Webhook: sends message or media
- Citizen → Citizen Dashboard: uses
- Investigator → Command Centre: investigates
- Command Centre → Dashboard API: requests data
- Dashboard API → Graph Service: serves network data
- Dashboard API → Geo Service: serves geo data
- Citizen → Legal RAG: asks legal question
- Legal RAG → Knowledge Store: retrieves knowledge
- Citizen → Scam Guidance: requests scam guidance
- Analysis API → Feedback Store: logs correction
