# rishi-solanki07/tender-flow architecture

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

- Interactive diagram: https://gitdiagram.com/rishi-solanki07/tender-flow
- Repository: https://github.com/rishi-solanki07/tender-flow

## Overview

TenderFlow automates daily railway tender monitoring: a scheduled run opens IREPS, applies the date and search criteria, and scrapes tender results. A human must handle the OTP-related step; the README also describes CAPTCHA handling. The results are parsed and processed into a formatted daily Excel report, then emailed to configured recipients. The README documents these capabilities, but the notebook source was not available to inspect, so component links reflect documented workflow only; internal call ownership cannot be verified.

Main entry points: [`python_code.ipynb`](https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb) (Selenium browser)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_collection["Tender collection"]
  node_automation["Daily automation<br/>[python_code.ipynb]"]
  node_browser["Selenium browser<br/>[python_code.ipynb]"]
  node_otp_captcha["OTP and CAPTCHA<br/>[python_code.ipynb]"]
  node_html_parser["HTML parsing<br/>[python_code.ipynb]"]
  node_tender_data["Tender data<br/>[python_code.ipynb]"]
  node_date_filter["Date selection<br/>[python_code.ipynb]"]
end

subgraph group_reporting["Report generation"]
  node_excel_formatting["Excel formatting<br/>[python_code.ipynb]"]
  node_report_file["Daily Excel report<br/>[python_code.ipynb]"]
end

subgraph group_delivery["Report delivery"]
  node_email_config["Email configuration<br/>[python_code.ipynb]"]
  node_yagmail["Yagmail delivery<br/>[python_code.ipynb]"]
end

node_scheduler(("Task Scheduler"))
node_operator(("Human operator"))
node_ireps["IREPS website"]
node_recipients(("Report recipients"))

node_scheduler -->|"runs daily"| node_automation
node_automation -->|"starts browser"| node_browser
node_browser -->|"opens and searches"| node_ireps
node_automation -->|"selects yesterday"| node_date_filter
node_browser -->|"handles challenge"| node_otp_captcha
node_operator -->|"provides intervention"| node_otp_captcha
node_browser -->|"submits search"| node_ireps
node_ireps -->|"returns results"| node_browser
node_browser -->|"provides page HTML"| node_html_parser
node_html_parser -->|"extracts fields"| node_tender_data
node_tender_data -->|"formats results"| node_excel_formatting
node_excel_formatting -->|"saves report"| node_report_file
node_email_config -->|"configures sender"| node_yagmail
node_automation -->|"sends report"| node_yagmail
node_yagmail -->|"attaches report"| node_report_file
node_yagmail -->|"emails report"| node_recipients

click node_automation "https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb"
click node_browser "https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb"
click node_otp_captcha "https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb"
click node_html_parser "https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb"
click node_tender_data "https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb"
click node_date_filter "https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb"
click node_excel_formatting "https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb"
click node_report_file "https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb"
click node_email_config "https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb"
click node_yagmail "https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb"

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_automation,node_browser,node_otp_captcha,node_html_parser,node_tender_data,node_date_filter toneBlue
class node_excel_formatting,node_report_file toneAmber
class node_email_config,node_yagmail toneMint
class node_scheduler toneRose
class node_operator,node_ireps,node_recipients toneIndigo
```

## Components

### Tender collection

- [Daily automation](https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb): `python_code.ipynb`
- [Selenium browser](https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb): `python_code.ipynb`
- [OTP and CAPTCHA](https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb): `python_code.ipynb`
- [HTML parsing](https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb): `python_code.ipynb`
- [Tender data](https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb): `python_code.ipynb`
- [Date selection](https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb): `python_code.ipynb`

### Report generation

- [Excel formatting](https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb): `python_code.ipynb`
- [Daily Excel report](https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb): `python_code.ipynb`

### Report delivery

- [Email configuration](https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb): `python_code.ipynb`
- [Yagmail delivery](https://github.com/rishi-solanki07/tender-flow/blob/main/python_code.ipynb): `python_code.ipynb`

### Other components

- **Task Scheduler**
- **Human operator**
- **IREPS website**
- **Report recipients**

## Connections

- Task Scheduler → Daily automation: runs daily
- Daily automation → Selenium browser: starts browser
- Selenium browser → IREPS website: opens and searches
- Daily automation → Date selection: selects yesterday
- Selenium browser → OTP and CAPTCHA: handles challenge
- Human operator → OTP and CAPTCHA: provides intervention
- Selenium browser → IREPS website: submits search
- IREPS website → Selenium browser: returns results
- Selenium browser → HTML parsing: provides page HTML
- HTML parsing → Tender data: extracts fields
- Tender data → Excel formatting: formats results
- Excel formatting → Daily Excel report: saves report
- Email configuration → Yagmail delivery: configures sender
- Daily automation → Yagmail delivery: sends report
- Yagmail delivery → Daily Excel report: attaches report
- Yagmail delivery → Report recipients: emails report
