# pooja-sri-g/invoice-reconciliation-system architecture

> Architecture diagram of the GitHub repository pooja-sri-g/invoice-reconciliation-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/pooja-sri-g/invoice-reconciliation-system
- Repository: https://github.com/pooja-sri-g/invoice-reconciliation-system

## Overview

This is a Streamlit invoice-reconciliation app paired with a FastAPI federated-learning coordinator. A finance user uploads a purchase order, goods-received note, and invoice; the client sends their PDFs to Gemini for a local-process three-way comparison, displays the result, and derives a numeric-only update for the coordinator. The API exposes configuration, update submission, and round closure; the coordinator aggregates updates in memory. The README is empty, so capabilities and connections here are based on the sampled source files.

Main entry points: [`invoice-reconciliation-system/app.py`](https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/app.py) (Upload and results UI), [`invoice-reconciliation-system/main.py`](https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/main.py) (Federated API routes), [`invoice-reconciliation-system/vision_llm.py`](https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/vision_llm.py) (Three-way analysis), [`invoice-reconciliation-system/federated_learning.py`](https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/federated_learning.py) (Update aggregation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Reconciliation client"]
  node_streamlit_app["Upload and results UI<br/>[app.py]"]
end

subgraph group_analysis["Document analysis"]
  node_document_analysis["Three-way analysis<br/>[vision_llm.py]"]
end

subgraph group_federated["Federated learning"]
  node_local_update["Build numeric update"]
  node_federated_api["Federated API routes<br/>[main.py]"]
  node_coordinator["Update aggregation"]
end

node_finance_user(("Finance user"))
node_gemini["Gemini service"]
node_round_operator(("Round operator"))

node_finance_user -->|"uploads PDFs"| node_streamlit_app
node_streamlit_app -->|"calls analysis"| node_document_analysis
node_document_analysis -->|"sends PDFs"| node_gemini
node_gemini -->|"returns analysis"| node_document_analysis
node_streamlit_app -->|"shows result"| node_finance_user
node_streamlit_app -->|"builds update"| node_local_update
node_streamlit_app -->|"posts update"| node_federated_api
node_federated_api -->|"adds update"| node_coordinator
node_round_operator -->|"requests round close"| node_federated_api
node_federated_api -->|"closes round"| node_coordinator
node_federated_api -.->|"reads current model"| node_coordinator

click node_streamlit_app "https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/app.py"
click node_document_analysis "https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/vision_llm.py"
click node_local_update "https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/federated_learning.py"
click node_federated_api "https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/main.py"
click node_coordinator "https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/federated_learning.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_streamlit_app,node_finance_user toneBlue
class node_document_analysis toneAmber
class node_local_update,node_federated_api,node_coordinator toneMint
class node_gemini,node_round_operator toneIndigo
```

## Components

### Reconciliation client

- [Upload and results UI](https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/app.py): `invoice-reconciliation-system/app.py`

### Document analysis

- [Three-way analysis](https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/vision_llm.py): `invoice-reconciliation-system/vision_llm.py`

### Federated learning

- [Build numeric update](https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/federated_learning.py): `invoice-reconciliation-system/federated_learning.py`
- [Federated API routes](https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/main.py): `invoice-reconciliation-system/main.py`
- [Update aggregation](https://github.com/pooja-sri-g/invoice-reconciliation-system/blob/main/invoice-reconciliation-system/federated_learning.py): `invoice-reconciliation-system/federated_learning.py`

### Other components

- **Finance user**
- **Gemini service**
- **Round operator**

## Connections

- Finance user → Upload and results UI: uploads PDFs
- Upload and results UI → Three-way analysis: calls analysis
- Three-way analysis → Gemini service: sends PDFs
- Gemini service → Three-way analysis: returns analysis
- Upload and results UI → Finance user: shows result
- Upload and results UI → Build numeric update: builds update
- Upload and results UI → Federated API routes: posts update
- Federated API routes → Update aggregation: adds update
- Round operator → Federated API routes: requests round close
- Federated API routes → Update aggregation: closes round
- Federated API routes → Update aggregation: reads current model
