# harini-n-s/rawbank architecture

> Architecture diagram of the GitHub repository harini-n-s/rawbank, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/harini-n-s/rawbank
- Repository: https://github.com/harini-n-s/rawbank

## Overview

Rawbank Sentient is a fraud-intelligence and investigation platform. Analysts use the web console to inspect operational metrics, alerts, customers, and transactions, search entities, and investigate evidence with a conversational copilot. The backend serves these workflows alongside deterministic fraud evaluation and a separate retrieval/evidence layer; the copilot adds conversational context and a configurable LLM adapter. The supplied excerpts support the retrieval and rules flows, but not most router-to-repository wiring, so those connections are omitted. Several frontend and backend capabilities are represented at their source paths without inferred internal call chains.

Main entry points: [`frontend/src/services/api.ts`](https://github.com/harini-n-s/rawbank/blob/main/frontend/src/services/api.ts) (API client), [`backend/app/routers/retrieval.py`](https://github.com/harini-n-s/rawbank/blob/main/backend/app/routers/retrieval.py) (Retrieval routes), [`backend/app/retrieval/retriever.py`](https://github.com/harini-n-s/rawbank/blob/main/backend/app/retrieval/retriever.py) (Hybrid retriever), [`rules/engine.py`](https://github.com/harini-n-s/rawbank/blob/main/rules/engine.py) (Rules engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_console["Analyst console"]
  node_webapp["Console shell<br/>[App.tsx]"]
  node_searchui["Global search"]
  node_entityui["Entity investigation<br/>[EntityDrawer.tsx]"]
  node_evidenceui["Evidence dossier"]
  node_commandui["Command centre"]
  node_alertsui["Alert workspace<br/>[AlertsPage.tsx]"]
  node_transactionsui["Transaction workspace"]
  node_copilotui["Copilot workspace<br/>[CopilotPage.tsx]"]
  node_frontendapi["API client<br/>[api.ts]"]
end

subgraph group_api["Backend API"]
  node_app["FastAPI application<br/>[main.py]"]
  node_settings["Configuration<br/>[config.py]"]
  node_database[("SQLite database<br/>[database.py]")]
  node_retrievalrouter["Retrieval routes<br/>[retrieval.py]"]
end

subgraph group_investigation["Retrieval and copilot"]
  node_entityresolver["Entity resolver<br/>[entity_resolver.py]"]
  node_queryparser["Query parser<br/>[query_parser.py]"]
  node_indexer[("Evidence indexer<br/>[indexer.py]")]
  node_retriever["Hybrid retriever<br/>[retriever.py]"]
  node_evidencebuilder["Evidence builder"]
  node_copilotservice["Copilot service<br/>[service.py]"]
  node_context[("Conversation context<br/>[context_manager.py]")]
  node_llmadapter["LLM adapters<br/>[client.py]"]
end

subgraph group_fraud["Fraud evaluation"]
  node_rulesengine["Rules engine<br/>[engine.py]"]
  node_rulebase["Rule framework<br/>[base.py]"]
  node_evidencerules["Rule evidence<br/>[evidence.py]"]
  node_evaluation["Evaluation service"]
  node_evidenceservice["Evidence service"]
end

node_analyst(("Analyst"))

node_analyst -->|"uses"| node_webapp
node_webapp -->|"renders"| node_commandui
node_webapp -->|"renders"| node_alertsui
node_searchui -->|"searches via"| node_frontendapi
node_entityui -->|"loads via"| node_frontendapi
node_entityui -->|"renders"| node_evidenceui
node_commandui -->|"loads via"| node_frontendapi
node_alertsui -->|"loads via"| node_frontendapi
node_transactionsui -->|"loads via"| node_frontendapi
node_copilotui -->|"investigates via"| node_frontendapi
node_frontendapi -.->|"requests retrieval"| node_retrievalrouter
node_app -.->|"registers routes"| node_retrievalrouter
node_retrievalrouter -->|"retrieves with"| node_retriever
node_retrievalrouter -->|"builds evidence"| node_evidencebuilder
node_retrievalrouter -->|"indexes with"| node_indexer
node_retriever -->|"parses with"| node_queryparser
node_retriever -->|"resolves with"| node_entityresolver
node_retriever -->|"queries"| node_indexer
node_queryparser -->|"resolves entities"| node_entityresolver
node_copilotservice -->|"assembles evidence"| node_evidencebuilder
node_copilotservice -->|"records turns"| node_context
node_copilotservice -->|"generates response"| node_llmadapter
node_evaluation -->|"evaluates with"| node_rulesengine
node_evidenceservice -->|"evaluates with"| node_rulesengine
node_evidenceservice -->|"uses evidence"| node_evidencerules
node_rulesengine -->|"runs rules"| node_rulebase
node_rulesengine -.->|"assembles evidence"| node_evidencerules
node_app -->|"configures"| node_settings
node_database -->|"reads settings"| node_settings

click node_webapp "https://github.com/harini-n-s/rawbank/blob/main/frontend/src/App.tsx"
click node_searchui "https://github.com/harini-n-s/rawbank/blob/main/frontend/src/components/GlobalSearchModal.tsx"
click node_entityui "https://github.com/harini-n-s/rawbank/blob/main/frontend/src/components/EntityDrawer.tsx"
click node_evidenceui "https://github.com/harini-n-s/rawbank/blob/main/frontend/src/components/EvidenceDossier.tsx"
click node_commandui "https://github.com/harini-n-s/rawbank/blob/main/frontend/src/pages/CommandCentrePage.tsx"
click node_alertsui "https://github.com/harini-n-s/rawbank/blob/main/frontend/src/pages/AlertsPage.tsx"
click node_transactionsui "https://github.com/harini-n-s/rawbank/blob/main/frontend/src/pages/TransactionsPage.tsx"
click node_copilotui "https://github.com/harini-n-s/rawbank/blob/main/frontend/src/pages/CopilotPage.tsx"
click node_frontendapi "https://github.com/harini-n-s/rawbank/blob/main/frontend/src/services/api.ts"
click node_app "https://github.com/harini-n-s/rawbank/blob/main/backend/app/main.py"
click node_settings "https://github.com/harini-n-s/rawbank/blob/main/backend/app/config.py"
click node_database "https://github.com/harini-n-s/rawbank/blob/main/backend/app/database.py"
click node_retrievalrouter "https://github.com/harini-n-s/rawbank/blob/main/backend/app/routers/retrieval.py"
click node_entityresolver "https://github.com/harini-n-s/rawbank/blob/main/backend/app/retrieval/entity_resolver.py"
click node_queryparser "https://github.com/harini-n-s/rawbank/blob/main/backend/app/retrieval/query_parser.py"
click node_indexer "https://github.com/harini-n-s/rawbank/blob/main/backend/app/retrieval/indexer.py"
click node_retriever "https://github.com/harini-n-s/rawbank/blob/main/backend/app/retrieval/retriever.py"
click node_evidencebuilder "https://github.com/harini-n-s/rawbank/blob/main/backend/app/retrieval/evidence_builder.py"
click node_copilotservice "https://github.com/harini-n-s/rawbank/blob/main/backend/app/llm/service.py"
click node_context "https://github.com/harini-n-s/rawbank/blob/main/backend/app/llm/context_manager.py"
click node_llmadapter "https://github.com/harini-n-s/rawbank/blob/main/backend/app/llm/client.py"
click node_rulesengine "https://github.com/harini-n-s/rawbank/blob/main/rules/engine.py"
click node_rulebase "https://github.com/harini-n-s/rawbank/blob/main/rules/base.py"
click node_evidencerules "https://github.com/harini-n-s/rawbank/blob/main/rules/evidence.py"
click node_evaluation "https://github.com/harini-n-s/rawbank/blob/main/backend/app/services/evaluation_service.py"
click node_evidenceservice "https://github.com/harini-n-s/rawbank/blob/main/backend/app/services/evidence_service.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_webapp,node_searchui,node_entityui,node_evidenceui,node_commandui,node_alertsui,node_transactionsui,node_copilotui,node_frontendapi toneBlue
class node_app,node_settings,node_database,node_retrievalrouter toneAmber
class node_entityresolver,node_queryparser,node_indexer,node_retriever,node_evidencebuilder,node_copilotservice,node_context,node_llmadapter toneMint
class node_rulesengine,node_rulebase,node_evidencerules,node_evaluation,node_evidenceservice toneRose
class node_analyst toneIndigo
```

## Components

### Analyst console

- [Console shell](https://github.com/harini-n-s/rawbank/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Global search](https://github.com/harini-n-s/rawbank/blob/main/frontend/src/components/GlobalSearchModal.tsx): `frontend/src/components/GlobalSearchModal.tsx`
- [Entity investigation](https://github.com/harini-n-s/rawbank/blob/main/frontend/src/components/EntityDrawer.tsx): `frontend/src/components/EntityDrawer.tsx`
- [Evidence dossier](https://github.com/harini-n-s/rawbank/blob/main/frontend/src/components/EvidenceDossier.tsx): `frontend/src/components/EvidenceDossier.tsx`
- [Command centre](https://github.com/harini-n-s/rawbank/blob/main/frontend/src/pages/CommandCentrePage.tsx): `frontend/src/pages/CommandCentrePage.tsx`
- [Alert workspace](https://github.com/harini-n-s/rawbank/blob/main/frontend/src/pages/AlertsPage.tsx): `frontend/src/pages/AlertsPage.tsx`
- [Transaction workspace](https://github.com/harini-n-s/rawbank/blob/main/frontend/src/pages/TransactionsPage.tsx): `frontend/src/pages/TransactionsPage.tsx`
- [Copilot workspace](https://github.com/harini-n-s/rawbank/blob/main/frontend/src/pages/CopilotPage.tsx): `frontend/src/pages/CopilotPage.tsx`
- [API client](https://github.com/harini-n-s/rawbank/blob/main/frontend/src/services/api.ts): `frontend/src/services/api.ts`

### Backend API

- [FastAPI application](https://github.com/harini-n-s/rawbank/blob/main/backend/app/main.py): `backend/app/main.py`
- [Configuration](https://github.com/harini-n-s/rawbank/blob/main/backend/app/config.py): `backend/app/config.py`
- [SQLite database](https://github.com/harini-n-s/rawbank/blob/main/backend/app/database.py): `backend/app/database.py`
- [Retrieval routes](https://github.com/harini-n-s/rawbank/blob/main/backend/app/routers/retrieval.py): `backend/app/routers/retrieval.py`

### Retrieval and copilot

- [Entity resolver](https://github.com/harini-n-s/rawbank/blob/main/backend/app/retrieval/entity_resolver.py): `backend/app/retrieval/entity_resolver.py`
- [Query parser](https://github.com/harini-n-s/rawbank/blob/main/backend/app/retrieval/query_parser.py): `backend/app/retrieval/query_parser.py`
- [Evidence indexer](https://github.com/harini-n-s/rawbank/blob/main/backend/app/retrieval/indexer.py): `backend/app/retrieval/indexer.py`
- [Hybrid retriever](https://github.com/harini-n-s/rawbank/blob/main/backend/app/retrieval/retriever.py): `backend/app/retrieval/retriever.py`
- [Evidence builder](https://github.com/harini-n-s/rawbank/blob/main/backend/app/retrieval/evidence_builder.py): `backend/app/retrieval/evidence_builder.py`
- [Copilot service](https://github.com/harini-n-s/rawbank/blob/main/backend/app/llm/service.py): `backend/app/llm/service.py`
- [Conversation context](https://github.com/harini-n-s/rawbank/blob/main/backend/app/llm/context_manager.py): `backend/app/llm/context_manager.py`
- [LLM adapters](https://github.com/harini-n-s/rawbank/blob/main/backend/app/llm/client.py): `backend/app/llm/client.py`

### Fraud evaluation

- [Rules engine](https://github.com/harini-n-s/rawbank/blob/main/rules/engine.py): `rules/engine.py`
- [Rule framework](https://github.com/harini-n-s/rawbank/blob/main/rules/base.py): `rules/base.py`
- [Rule evidence](https://github.com/harini-n-s/rawbank/blob/main/rules/evidence.py): `rules/evidence.py`
- [Evaluation service](https://github.com/harini-n-s/rawbank/blob/main/backend/app/services/evaluation_service.py): `backend/app/services/evaluation_service.py`
- [Evidence service](https://github.com/harini-n-s/rawbank/blob/main/backend/app/services/evidence_service.py): `backend/app/services/evidence_service.py`

### Other components

- **Analyst**

## Connections

- Analyst → Console shell: uses (evidence: `frontend/src/App.tsx`)
- Console shell → Command centre: renders (evidence: `frontend/src/App.tsx`)
- Console shell → Alert workspace: renders (evidence: `frontend/src/App.tsx`)
- Global search → API client: searches via (evidence: `frontend/src/components/GlobalSearchModal.tsx`)
- Entity investigation → API client: loads via (evidence: `frontend/src/components/EntityDrawer.tsx`)
- Entity investigation → Evidence dossier: renders (evidence: `frontend/src/components/EntityDrawer.tsx`)
- Command centre → API client: loads via (evidence: `frontend/src/pages/CommandCentrePage.tsx`)
- Alert workspace → API client: loads via (evidence: `frontend/src/pages/AlertsPage.tsx`)
- Transaction workspace → API client: loads via (evidence: `frontend/src/pages/TransactionsPage.tsx`)
- Copilot workspace → API client: investigates via (evidence: `frontend/src/pages/CopilotPage.tsx`)
- API client → Retrieval routes: requests retrieval
- FastAPI application → Retrieval routes: registers routes
- Retrieval routes → Hybrid retriever: retrieves with (evidence: `backend/app/routers/retrieval.py`)
- Retrieval routes → Evidence builder: builds evidence (evidence: `backend/app/routers/retrieval.py`)
- Retrieval routes → Evidence indexer: indexes with (evidence: `backend/app/routers/retrieval.py`)
- Hybrid retriever → Query parser: parses with (evidence: `backend/app/retrieval/retriever.py`)
- Hybrid retriever → Entity resolver: resolves with (evidence: `backend/app/retrieval/retriever.py`)
- Hybrid retriever → Evidence indexer: queries (evidence: `backend/app/retrieval/retriever.py`)
- Query parser → Entity resolver: resolves entities (evidence: `backend/app/retrieval/query_parser.py`)
- Copilot service → Evidence builder: assembles evidence (evidence: `backend/app/llm/service.py`)
- Copilot service → Conversation context: records turns (evidence: `backend/app/llm/service.py`)
- Copilot service → LLM adapters: generates response (evidence: `backend/app/llm/service.py`)
- Evaluation service → Rules engine: evaluates with (evidence: `backend/app/services/evaluation_service.py`)
- Evidence service → Rules engine: evaluates with (evidence: `backend/app/services/evidence_service.py`)
- Evidence service → Rule evidence: uses evidence (evidence: `backend/app/services/evidence_service.py`)
- Rules engine → Rule framework: runs rules (evidence: `rules/engine.py`)
- Rules engine → Rule evidence: assembles evidence (evidence: `rules/engine.py`)
- FastAPI application → Configuration: configures (evidence: `backend/app/main.py`)
- SQLite database → Configuration: reads settings (evidence: `backend/app/database.py`)
