# abhinandan12317/niyogenai architecture

> Architecture diagram of the GitHub repository abhinandan12317/niyogenai, 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/abhinandan12317/niyogenai
- Repository: https://github.com/abhinandan12317/niyogenai

## Overview

This Flask application supports recruiter and client accounts, job posting, applications, and candidate review. Its central workflow is: recruiters publish jobs with attached PDFs; clients browse jobs and submit resumes; recruiters review applications. A separate resume-matching module extracts text from resumes and job PDFs and requests an OpenAI relevance score. The sampled routes show application persistence and file uploads, but do not show the matching module being invoked from the web workflow, so it is represented as a separate capability. Some route implementations were omitted from the excerpts.

Main entry points: [`app.py`](https://github.com/abhinandan12317/niyogenai/blob/main/app.py) (Flask Routes), [`resumeparser.py`](https://github.com/abhinandan12317/niyogenai/blob/main/resumeparser.py) (Resume Matcher), [`data.py`](https://github.com/abhinandan12317/niyogenai/blob/main/data.py) (ORM Models), [`Data/Recruiter`](https://github.com/abhinandan12317/niyogenai/tree/main/Data/Recruiter) (Job PDFs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_accounts["Accounts &amp; Roles"]
  node_flask["Flask Routes<br/>[app.py]"]
  node_auth_pages["Login &amp; Roles<br/>[login.html]"]
  node_role_pages["Role Pages<br/>[selectrole.html]"]
end

subgraph group_jobs["Job Listings"]
  node_job_pages["Job Views<br/>[jobs.html]"]
  node_recruiter_page["Recruiter Page<br/>[recruiter.html]"]
  node_job_editor["Job Editor<br/>[edit_job.html]"]
  node_client_page["Client Page<br/>[client.html]"]
end

subgraph group_applications["Applications &amp; Matching"]
  node_application_page["Application Form<br/>[application.html]"]
  node_review_page["Candidate Review<br/>[start_hiring.html]"]
  node_parser["Resume Matcher<br/>[resumeparser.py]"]
end

subgraph group_storage["Persistence &amp; Files"]
  node_models["ORM Models<br/>[data.py]"]
  node_database[("Application Database<br/>[database.db]")]
  node_recruiter_files["Job PDFs"]
  node_client_files["Resume Files"]
end

node_visitor(("User"))
node_openai{{"OpenAI API"}}

node_visitor -->|"uses routes"| node_flask
node_flask -->|"renders"| node_auth_pages
node_flask -->|"renders"| node_role_pages
node_flask -->|"renders"| node_recruiter_page
node_flask -->|"renders"| node_client_page
node_flask -->|"renders"| node_job_pages
node_flask -->|"renders"| node_job_editor
node_flask -->|"renders"| node_application_page
node_flask -->|"renders"| node_review_page
node_flask -->|"queries and updates"| node_models
node_models -->|"persists records"| node_database
node_flask -->|"stores and serves PDFs"| node_recruiter_files
node_flask -->|"stores and serves resumes"| node_client_files
node_parser -->|"loads application and job"| node_models
node_parser -->|"reads job PDF"| node_recruiter_files
node_parser -->|"reads resume"| node_client_files
node_parser -.->|"requests match score"| node_openai

click node_flask "https://github.com/abhinandan12317/niyogenai/blob/main/app.py"
click node_auth_pages "https://github.com/abhinandan12317/niyogenai/blob/main/templates/login.html"
click node_role_pages "https://github.com/abhinandan12317/niyogenai/blob/main/templates/selectrole.html"
click node_job_pages "https://github.com/abhinandan12317/niyogenai/blob/main/templates/jobs.html"
click node_recruiter_page "https://github.com/abhinandan12317/niyogenai/blob/main/templates/recruiter.html"
click node_job_editor "https://github.com/abhinandan12317/niyogenai/blob/main/templates/edit_job.html"
click node_client_page "https://github.com/abhinandan12317/niyogenai/blob/main/templates/client.html"
click node_application_page "https://github.com/abhinandan12317/niyogenai/blob/main/templates/application.html"
click node_review_page "https://github.com/abhinandan12317/niyogenai/blob/main/templates/start_hiring.html"
click node_parser "https://github.com/abhinandan12317/niyogenai/blob/main/resumeparser.py"
click node_models "https://github.com/abhinandan12317/niyogenai/blob/main/data.py"
click node_database "https://github.com/abhinandan12317/niyogenai/blob/main/instance/database.db"
click node_recruiter_files "https://github.com/abhinandan12317/niyogenai/tree/main/Data/Recruiter"
click node_client_files "https://github.com/abhinandan12317/niyogenai/tree/main/Data/Client"

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_flask,node_auth_pages,node_role_pages,node_visitor toneBlue
class node_job_pages,node_recruiter_page,node_job_editor,node_client_page toneAmber
class node_application_page,node_review_page,node_parser,node_openai toneMint
class node_models,node_database,node_recruiter_files,node_client_files toneRose
```

## Components

### Accounts & Roles

- [Flask Routes](https://github.com/abhinandan12317/niyogenai/blob/main/app.py): `app.py`
- [Login & Roles](https://github.com/abhinandan12317/niyogenai/blob/main/templates/login.html): `templates/login.html`
- [Role Pages](https://github.com/abhinandan12317/niyogenai/blob/main/templates/selectrole.html): `templates/selectrole.html`

### Job Listings

- [Job Views](https://github.com/abhinandan12317/niyogenai/blob/main/templates/jobs.html): `templates/jobs.html`
- [Recruiter Page](https://github.com/abhinandan12317/niyogenai/blob/main/templates/recruiter.html): `templates/recruiter.html`
- [Job Editor](https://github.com/abhinandan12317/niyogenai/blob/main/templates/edit_job.html): `templates/edit_job.html`
- [Client Page](https://github.com/abhinandan12317/niyogenai/blob/main/templates/client.html): `templates/client.html`

### Applications & Matching

- [Application Form](https://github.com/abhinandan12317/niyogenai/blob/main/templates/application.html): `templates/application.html`
- [Candidate Review](https://github.com/abhinandan12317/niyogenai/blob/main/templates/start_hiring.html): `templates/start_hiring.html`
- [Resume Matcher](https://github.com/abhinandan12317/niyogenai/blob/main/resumeparser.py): `resumeparser.py`

### Persistence & Files

- [ORM Models](https://github.com/abhinandan12317/niyogenai/blob/main/data.py): `data.py`
- [Application Database](https://github.com/abhinandan12317/niyogenai/blob/main/instance/database.db): `instance/database.db`
- [Job PDFs](https://github.com/abhinandan12317/niyogenai/tree/main/Data/Recruiter): `Data/Recruiter`
- [Resume Files](https://github.com/abhinandan12317/niyogenai/tree/main/Data/Client): `Data/Client`

### Other components

- **User**
- **OpenAI API**

## Connections

- User → Flask Routes: uses routes
- Flask Routes → Login & Roles: renders
- Flask Routes → Role Pages: renders
- Flask Routes → Recruiter Page: renders
- Flask Routes → Client Page: renders
- Flask Routes → Job Views: renders
- Flask Routes → Job Editor: renders
- Flask Routes → Application Form: renders
- Flask Routes → Candidate Review: renders
- Flask Routes → ORM Models: queries and updates
- ORM Models → Application Database: persists records
- Flask Routes → Job PDFs: stores and serves PDFs
- Flask Routes → Resume Files: stores and serves resumes
- Resume Matcher → ORM Models: loads application and job
- Resume Matcher → Job PDFs: reads job PDF
- Resume Matcher → Resume Files: reads resume
- Resume Matcher → OpenAI API: requests match score
