# deepsheekha/clare-contract-clause-risk-assistant architecture

> Architecture diagram of the GitHub repository deepsheekha/clare-contract-clause-risk-assistant, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/deepsheekha/clare-contract-clause-risk-assistant
- Repository: https://github.com/deepsheekha/clare-contract-clause-risk-assistant

## Overview

Clare is a browser-based contract clause risk assistant. A user uploads a PDF and may add a concern; the backend extracts text, detects clauses, filters candidates, asks an LLM for a customer-focused risk report, and returns it for the browser to render and copy. The graph also shows the documented upload-only and chat endpoints. Experimental services are omitted because the README says they are not wired into the main pipeline; unsampled backend code is represented only where documented.

Main entry points: [`backend/main.py`](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/main.py) (FastAPI endpoints), [`frontend/src/App.jsx`](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/frontend/src/App.jsx) (Clare interface), [`backend/model.py`](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/model.py) (OpenRouter client), [`frontend/src/main.jsx`](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/frontend/src/main.jsx) (React entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Browser experience"]
  node_browser["Clare interface<br/>[App.jsx]"]
  node_app_entry["React entry<br/>[main.jsx]"]
  node_render["Report rendering<br/>[App.jsx]"]
  node_clipboard["Copy analysis<br/>[App.jsx]"]
end

subgraph group_api["Backend API"]
  node_api["FastAPI endpoints<br/>[main.py]"]
  node_report["Risk report<br/>[main.py]"]
end

subgraph group_analysis["Contract analysis"]
  node_extract["PDF text extraction<br/>[main.py]"]
  node_clauses["Clause detection<br/>[chunking.py]"]
  node_filter["Risk filtering<br/>[main.py]"]
end

subgraph group_modeling["LLM analysis"]
  node_prompt_prep["Prompt preparation<br/>[main.py]"]
  node_prompt_templates["Review instructions<br/>[prompts.py]"]
  node_model_client["OpenRouter client<br/>[model.py]"]
end

node_user(("Contract reviewer"))
node_openrouter{{"OpenRouter"}}

node_user -->|"uploads PDF"| node_browser
node_app_entry -->|"renders"| node_browser
node_browser -->|"submits analysis"| node_api
node_api -->|"extracts text"| node_extract
node_api -->|"segments clauses"| node_clauses
node_api -->|"filters candidates"| node_filter
node_api -->|"prepares prompt"| node_prompt_prep
node_prompt_prep -->|"formats review"| node_prompt_templates
node_api -->|"requests analysis"| node_model_client
node_model_client -->|"sends prompt"| node_openrouter
node_openrouter -->|"returns completion"| node_model_client
node_api -->|"returns report"| node_report
node_report -->|"delivers response"| node_browser
node_browser -->|"parses markdown"| node_render
node_render -->|"copies analysis"| node_clipboard

click node_browser "https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/frontend/src/App.jsx"
click node_app_entry "https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/frontend/src/main.jsx"
click node_api "https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/main.py"
click node_extract "https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/main.py"
click node_clauses "https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/chunking.py"
click node_filter "https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/main.py"
click node_prompt_prep "https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/main.py"
click node_prompt_templates "https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/prompts.py"
click node_model_client "https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/model.py"
click node_report "https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/main.py"
click node_render "https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/frontend/src/App.jsx"
click node_clipboard "https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/frontend/src/App.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_browser,node_app_entry,node_render,node_clipboard,node_user toneBlue
class node_api,node_report toneAmber
class node_extract,node_clauses,node_filter,node_openrouter toneMint
class node_prompt_prep,node_prompt_templates,node_model_client toneRose
```

## Components

### Browser experience

- [Clare interface](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/frontend/src/App.jsx): `frontend/src/App.jsx`
- [React entry](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/frontend/src/main.jsx): `frontend/src/main.jsx`
- [Report rendering](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Copy analysis](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/frontend/src/App.jsx): `frontend/src/App.jsx`

### Backend API

- [FastAPI endpoints](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/main.py): `backend/main.py`
- [Risk report](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/main.py): `backend/main.py`

### Contract analysis

- [PDF text extraction](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/main.py): `backend/main.py`
- [Clause detection](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/chunking.py): `backend/chunking.py`
- [Risk filtering](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/main.py): `backend/main.py`

### LLM analysis

- [Prompt preparation](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/main.py): `backend/main.py`
- [Review instructions](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/prompts.py): `backend/prompts.py`
- [OpenRouter client](https://github.com/deepsheekha/clare-contract-clause-risk-assistant/blob/master/backend/model.py): `backend/model.py`

### Other components

- **Contract reviewer**
- **OpenRouter**

## Connections

- Contract reviewer → Clare interface: uploads PDF (evidence: `README.md`)
- React entry → Clare interface: renders (evidence: `frontend/src/main.jsx`)
- Clare interface → FastAPI endpoints: submits analysis (evidence: `frontend/src/App.jsx`)
- FastAPI endpoints → PDF text extraction: extracts text (evidence: `backend/main.py`)
- FastAPI endpoints → Clause detection: segments clauses (evidence: `backend/main.py`)
- FastAPI endpoints → Risk filtering: filters candidates (evidence: `backend/main.py`)
- FastAPI endpoints → Prompt preparation: prepares prompt (evidence: `backend/main.py`)
- Prompt preparation → Review instructions: formats review (evidence: `backend/main.py`)
- FastAPI endpoints → OpenRouter client: requests analysis (evidence: `backend/main.py`)
- OpenRouter client → OpenRouter: sends prompt (evidence: `backend/model.py`)
- OpenRouter → OpenRouter client: returns completion (evidence: `backend/model.py`)
- FastAPI endpoints → Risk report: returns report (evidence: `README.md`)
- Risk report → Clare interface: delivers response (evidence: `README.md`)
- Clare interface → Report rendering: parses markdown (evidence: `frontend/src/App.jsx`)
- Report rendering → Copy analysis: copies analysis (evidence: `frontend/src/App.jsx`)
