# brotati/verifyxcity_ur architecture

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

- Interactive diagram: https://gitdiagram.com/brotati/verifyxcity_ur
- Repository: https://github.com/brotati/verifyxcity_ur

## Overview

This repository provides supervised document-transfer workflows from Barikoi Verify to City Bank CityFast: inspect eligible requests, identify and select source attachments, prepare reviewed PDFs, and optionally upload them without final bank submission. The principal daily workflow lives in the standalone runner; legacy agent tools provide separate inventory, download, packaging, and upload paths. Edges are limited to relationships explicit in the README or sampled source; other runner internals and unsampled modules are represented only where the README supports their capabilities.

Main entry points: [`daily_runner.py`](https://github.com/brotati/verifyxcity_ur/blob/main/daily_runner.py) (Daily runner), [`agent/upload_no_save.py`](https://github.com/brotati/verifyxcity_ur/blob/main/agent/upload_no_save.py) (Reviewed upload), [`agent/inspect_documents.py`](https://github.com/brotati/verifyxcity_ur/blob/main/agent/inspect_documents.py) (Document inventory), [`agent/probe_native_download.py`](https://github.com/brotati/verifyxcity_ur/blob/main/agent/probe_native_download.py) (Native downloads)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_daily["Daily workflow"]
  node_runner["Daily runner<br/>[daily_runner.py]"]
  node_checkpoint[("Run journal<br/>[daily_runner.py]")]
  node_localocr["Local OCR<br/>[daily_runner.py]"]
end

subgraph group_source["Verify source"]
  node_verify["Verify portal"]
  node_inventory["Document inventory"]
  node_native["Native downloads"]
end

subgraph group_bank["City Bank"]
  node_city["CityFast portal"]
  node_mis["MIS status gate<br/>[city_status.py]"]
  node_navigation["Bank file lookup<br/>[city_navigation.py]"]
  node_upload["Reviewed upload<br/>[upload_no_save.py]"]
end

subgraph group_pdf["PDF preparation"]
  node_packaging["PDF packaging<br/>[pdf_package.py]"]
end

subgraph group_shared["Shared agent"]
  node_config["Credentials and paths<br/>[common.py]"]
end

node_operator(("Operator"))

node_operator -->|"starts mode"| node_runner
node_runner -->|"records progress"| node_checkpoint
node_runner -->|"maps documents"| node_localocr
node_runner -->|"selects and downloads"| node_verify
node_runner -->|"checks and uploads"| node_city
node_operator -->|"requests inventory"| node_inventory
node_inventory -->|"checks eligibility"| node_city
node_inventory -->|"reads report attachments"| node_verify
node_operator -->|"requests download"| node_native
node_native -->|"downloads attachment"| node_verify
node_operator -->|"authorizes upload"| node_upload
node_upload -->|"uploads reviewed PDFs"| node_city
node_upload -->|"loads credentials"| node_config
node_upload -->|"checks MIS status"| node_mis
node_upload -->|"finds bank row"| node_navigation
node_inventory -->|"loads credentials"| node_config
node_native -.->|"packages PDFs"| node_packaging

click node_runner "https://github.com/brotati/verifyxcity_ur/blob/main/daily_runner.py"
click node_checkpoint "https://github.com/brotati/verifyxcity_ur/blob/main/daily_runner.py"
click node_localocr "https://github.com/brotati/verifyxcity_ur/blob/main/daily_runner.py"
click node_inventory "https://github.com/brotati/verifyxcity_ur/blob/main/agent/inspect_documents.py"
click node_native "https://github.com/brotati/verifyxcity_ur/blob/main/agent/probe_native_download.py"
click node_mis "https://github.com/brotati/verifyxcity_ur/blob/main/agent/city_status.py"
click node_navigation "https://github.com/brotati/verifyxcity_ur/blob/main/agent/city_navigation.py"
click node_upload "https://github.com/brotati/verifyxcity_ur/blob/main/agent/upload_no_save.py"
click node_packaging "https://github.com/brotati/verifyxcity_ur/blob/main/agent/pdf_package.py"
click node_config "https://github.com/brotati/verifyxcity_ur/blob/main/agent/common.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_runner,node_checkpoint,node_localocr toneBlue
class node_verify,node_inventory,node_native toneAmber
class node_city,node_mis,node_navigation,node_upload toneMint
class node_packaging toneRose
class node_config,node_operator toneIndigo
```

## Components

### Daily workflow

- [Daily runner](https://github.com/brotati/verifyxcity_ur/blob/main/daily_runner.py): `daily_runner.py`
- [Run journal](https://github.com/brotati/verifyxcity_ur/blob/main/daily_runner.py): `daily_runner.py`
- [Local OCR](https://github.com/brotati/verifyxcity_ur/blob/main/daily_runner.py): `daily_runner.py`

### Verify source

- **Verify portal**
- [Document inventory](https://github.com/brotati/verifyxcity_ur/blob/main/agent/inspect_documents.py): `agent/inspect_documents.py`
- [Native downloads](https://github.com/brotati/verifyxcity_ur/blob/main/agent/probe_native_download.py): `agent/probe_native_download.py`

### City Bank

- **CityFast portal**
- [MIS status gate](https://github.com/brotati/verifyxcity_ur/blob/main/agent/city_status.py): `agent/city_status.py`
- [Bank file lookup](https://github.com/brotati/verifyxcity_ur/blob/main/agent/city_navigation.py): `agent/city_navigation.py`
- [Reviewed upload](https://github.com/brotati/verifyxcity_ur/blob/main/agent/upload_no_save.py): `agent/upload_no_save.py`

### PDF preparation

- [PDF packaging](https://github.com/brotati/verifyxcity_ur/blob/main/agent/pdf_package.py): `agent/pdf_package.py`

### Shared agent

- [Credentials and paths](https://github.com/brotati/verifyxcity_ur/blob/main/agent/common.py): `agent/common.py`

### Other components

- **Operator**

## Connections

- Operator → Daily runner: starts mode (evidence: `README.md`)
- Daily runner → Run journal: records progress (evidence: `daily_runner.py`)
- Daily runner → Local OCR: maps documents (evidence: `daily_runner.py`)
- Daily runner → Verify portal: selects and downloads (evidence: `README.md`)
- Daily runner → CityFast portal: checks and uploads (evidence: `README.md`)
- Operator → Document inventory: requests inventory (evidence: `agent/inspect_documents.py`)
- Document inventory → CityFast portal: checks eligibility (evidence: `agent/inspect_documents.py`)
- Document inventory → Verify portal: reads report attachments (evidence: `agent/inspect_documents.py`)
- Operator → Native downloads: requests download (evidence: `agent/probe_native_download.py`)
- Native downloads → Verify portal: downloads attachment (evidence: `agent/probe_native_download.py`)
- Operator → Reviewed upload: authorizes upload (evidence: `agent/upload_no_save.py`)
- Reviewed upload → CityFast portal: uploads reviewed PDFs (evidence: `agent/upload_no_save.py`)
- Reviewed upload → Credentials and paths: loads credentials (evidence: `agent/upload_no_save.py`)
- Reviewed upload → MIS status gate: checks MIS status (evidence: `agent/upload_no_save.py`)
- Reviewed upload → Bank file lookup: finds bank row (evidence: `agent/upload_no_save.py`)
- Document inventory → Credentials and paths: loads credentials (evidence: `agent/inspect_documents.py`)
- Native downloads → PDF packaging: packages PDFs
