# sai-maanas0716/job-portal-with-resume-recommendation architecture

> Architecture diagram of the GitHub repository sai-maanas0716/job-portal-with-resume-recommendation, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sai-maanas0716/job-portal-with-resume-recommendation
- Repository: https://github.com/sai-maanas0716/job-portal-with-resume-recommendation

## Overview

This is a Streamlit smart-job portal demonstrating candidate applications and recruiter screening with hybrid resume/job matching. The candidate flow computes skill and semantic scores, then submits an application through the database layer; recruiters browse eligible candidates, review ranked applications, and run shortlisting. The app also exposes data inspection and audit features. Source excerpts show the UI-to-database and matching calls, and the database’s Oracle/SQLite modes; SQL-script integration details are not sampled, so those links remain unverified.

Main entry points: [`src/db.py`](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/src/db.py) (Database operations), [`app.py`](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/app.py) (Streamlit portal), [`src/matcher.py`](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/src/matcher.py) (Hybrid match scoring), [`src/sample_data.py`](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/src/sample_data.py) (Demo seed data)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portals["Portal workflows"]
  node_portal["Streamlit portal<br/>[app.py]"]
  node_candidate_jobs["Browse and apply<br/>[app.py]"]
  node_recruiter_screen["Screen candidates<br/>[app.py]"]
  node_rank_shortlist["Rank and shortlist<br/>[app.py]"]
  node_data_admin["Data and audit views<br/>[app.py]"]
end

subgraph group_matching["Hybrid matching"]
  node_matcher["Hybrid match scoring<br/>[matcher.py]"]
  node_sentence_model["Sentence-Transformers"]
end

subgraph group_persistence["Data and persistence"]
  node_sample_data["Demo seed data<br/>[sample_data.py]"]
  node_db_api["Database operations<br/>[db.py]"]
  node_sqlite[("SQLite demo store<br/>[db.py]")]
  node_schema["Relational schema<br/>[01_schema.sql]"]
  node_plsql["PL/SQL workflows<br/>[02_plsql.sql]"]
end

node_candidate(("Candidate user"))
node_recruiter(("Recruiter user"))
node_oracle[("Oracle database")]

node_candidate -->|"uses"| node_portal
node_recruiter -->|"uses"| node_portal
node_portal -->|"routes to"| node_candidate_jobs
node_portal -->|"routes to"| node_recruiter_screen
node_portal -->|"routes to"| node_rank_shortlist
node_portal -->|"routes to"| node_data_admin
node_candidate_jobs -->|"submits applications"| node_db_api
node_candidate_jobs -->|"computes scores"| node_matcher
node_recruiter_screen -->|"loads candidates"| node_db_api
node_recruiter_screen -->|"computes scores"| node_matcher
node_rank_shortlist -->|"loads and shortlists"| node_db_api
node_data_admin -->|"queries and updates"| node_db_api
node_db_api -->|"calculates scores"| node_matcher
node_db_api -->|"loads seed records"| node_sample_data
node_db_api -->|"uses demo store"| node_sqlite
node_db_api -->|"connects to"| node_oracle
node_matcher -.->|"optionally loads"| node_sentence_model
node_db_api -.->|"implements against"| node_schema
node_db_api -.->|"mirrors procedures"| node_plsql

click node_portal "https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/app.py"
click node_candidate_jobs "https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/app.py"
click node_recruiter_screen "https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/app.py"
click node_rank_shortlist "https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/app.py"
click node_data_admin "https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/app.py"
click node_matcher "https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/src/matcher.py"
click node_sample_data "https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/src/sample_data.py"
click node_db_api "https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/src/db.py"
click node_sqlite "https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/src/db.py"
click node_schema "https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/sql/01_schema.sql"
click node_plsql "https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/sql/02_plsql.sql"

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_portal,node_candidate_jobs,node_recruiter_screen,node_rank_shortlist,node_data_admin,node_candidate,node_recruiter toneBlue
class node_matcher,node_sentence_model,node_oracle toneAmber
class node_sample_data,node_db_api,node_sqlite,node_schema,node_plsql toneMint
```

## Components

### Portal workflows

- [Streamlit portal](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/app.py): `app.py`
- [Browse and apply](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/app.py): `app.py`
- [Screen candidates](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/app.py): `app.py`
- [Rank and shortlist](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/app.py): `app.py`
- [Data and audit views](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/app.py): `app.py`

### Hybrid matching

- [Hybrid match scoring](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/src/matcher.py): `src/matcher.py`
- **Sentence-Transformers**

### Data and persistence

- [Demo seed data](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/src/sample_data.py): `src/sample_data.py`
- [Database operations](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/src/db.py): `src/db.py`
- [SQLite demo store](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/src/db.py): `src/db.py`
- [Relational schema](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/sql/01_schema.sql): `sql/01_schema.sql`
- [PL/SQL workflows](https://github.com/sai-maanas0716/job-portal-with-resume-recommendation/blob/master/sql/02_plsql.sql): `sql/02_plsql.sql`

### Other components

- **Candidate user**
- **Recruiter user**
- **Oracle database**

## Connections

- Candidate user → Streamlit portal: uses (evidence: `app.py`)
- Recruiter user → Streamlit portal: uses (evidence: `app.py`)
- Streamlit portal → Browse and apply: routes to (evidence: `app.py`)
- Streamlit portal → Screen candidates: routes to (evidence: `app.py`)
- Streamlit portal → Rank and shortlist: routes to (evidence: `app.py`)
- Streamlit portal → Data and audit views: routes to (evidence: `app.py`)
- Browse and apply → Database operations: submits applications (evidence: `app.py`)
- Browse and apply → Hybrid match scoring: computes scores (evidence: `app.py`)
- Screen candidates → Database operations: loads candidates (evidence: `app.py`)
- Screen candidates → Hybrid match scoring: computes scores (evidence: `app.py`)
- Rank and shortlist → Database operations: loads and shortlists (evidence: `app.py`)
- Data and audit views → Database operations: queries and updates (evidence: `app.py`)
- Database operations → Hybrid match scoring: calculates scores (evidence: `src/db.py`)
- Database operations → Demo seed data: loads seed records (evidence: `src/db.py`)
- Database operations → SQLite demo store: uses demo store (evidence: `src/db.py`)
- Database operations → Oracle database: connects to (evidence: `src/db.py`)
- Hybrid match scoring → Sentence-Transformers: optionally loads (evidence: `src/matcher.py`)
- Database operations → Relational schema: implements against
- Database operations → PL/SQL workflows: mirrors procedures
