# srijata613/talentiq architecture

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

## Overview

TalentIQ is a recruiter-facing resume screening and talent intelligence application. Its principal documented workflow takes resumes and a job description, parses candidate data, ranks candidates using weighted skill, experience, education, and bonus scores, then returns explainable results for the web interface. The backend also exposes comparison, search, matching, shortlisting, interview, clustering, and duplicate-management capabilities. The README documents the frontend-to-API architecture; sampled source confirms the ranking endpoint’s parsing and ranking calls, but does not show frontend action wiring or the internals of the ranker.

Main entry points: [`backend/app/main.py`](https://github.com/srijata613/talentiq/blob/main/backend/app/main.py) (FastAPI App), [`backend/src/ranker.py`](https://github.com/srijata613/talentiq/blob/main/backend/src/ranker.py) (Candidate Ranker), [`frontend/app`](https://github.com/srijata613/talentiq/tree/main/frontend/app) (Hiring Interface), [`backend/src/candidate_pipeline.py`](https://github.com/srijata613/talentiq/blob/main/backend/src/candidate_pipeline.py) (Candidate Processing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Recruiter Interface"]
  node_web["Hiring Interface"]
  node_web_actions["UI Actions"]
end

subgraph group_api["API Layer"]
  node_api_main["FastAPI App<br/>[main.py]"]
  node_job_routes["Job Routes<br/>[jobs.py]"]
  node_matching_routes["Matching Routes<br/>[matching.py]"]
  node_search_routes["Search Route<br/>[search.py]"]
  node_other_routes["Talent Routes"]
end

subgraph group_intelligence["Ranking Intelligence"]
  node_resume_parser["Resume Parser<br/>[resume_parser.py]"]
  node_llm_parser["LLM Parser<br/>[parser.py]"]
  node_ranker["Candidate Ranker<br/>[ranker.py]"]
  node_skill_scoring["Skill Scoring<br/>[skill_scoring.py]"]
  node_experience_scoring["Experience Scoring"]
  node_education_bonus["Education And Bonus<br/>[education_bonus.py]"]
  node_embeddings["Embeddings<br/>[embeddings.py]"]
end

subgraph group_talent["Talent Workflows"]
  node_comparison["Candidate Comparison<br/>[comparison.py]"]
  node_search_engine["Candidate Search<br/>[search_engine.py]"]
  node_retrieval["Semantic Retrieval"]
  node_candidate_pipeline["Candidate Processing"]
  node_interview["Interview Planning"]
  node_shortlisting["Shortlisting<br/>[shortlisting.py]"]
  node_clustering["Candidate Clustering"]
  node_duplicates["Duplicate Resolution"]
end

node_recruiter(("Recruiter"))

node_recruiter -->|"uses"| node_web
node_web -->|"initiates"| node_web_actions
node_web -->|"uses API"| node_api_main
node_api_main -->|"mounts"| node_job_routes
node_api_main -->|"mounts"| node_matching_routes
node_api_main -->|"mounts"| node_search_routes
node_api_main -->|"mounts"| node_other_routes
node_api_main -->|"parses resumes"| node_resume_parser
node_api_main -->|"ranks candidates"| node_ranker
node_api_main -->|"compares candidates"| node_comparison
node_search_routes -->|"calls"| node_search_engine
node_candidate_pipeline -->|"parses job"| node_llm_parser
node_candidate_pipeline -->|"builds candidate graph"| node_embeddings
node_retrieval -->|"embeds query and profiles"| node_embeddings
node_ranker -->|"scores skills"| node_skill_scoring
node_ranker -->|"scores experience"| node_experience_scoring
node_ranker -->|"scores education and bonus"| node_education_bonus

click node_web "https://github.com/srijata613/talentiq/tree/main/frontend/app"
click node_web_actions "https://github.com/srijata613/talentiq/tree/main/frontend/actions"
click node_api_main "https://github.com/srijata613/talentiq/blob/main/backend/app/main.py"
click node_job_routes "https://github.com/srijata613/talentiq/blob/main/backend/app/routes/jobs.py"
click node_matching_routes "https://github.com/srijata613/talentiq/blob/main/backend/app/routes/matching.py"
click node_search_routes "https://github.com/srijata613/talentiq/blob/main/backend/app/routes/search.py"
click node_other_routes "https://github.com/srijata613/talentiq/tree/main/backend/app/routes"
click node_resume_parser "https://github.com/srijata613/talentiq/blob/main/backend/src/resume_parser.py"
click node_llm_parser "https://github.com/srijata613/talentiq/blob/main/backend/src/llm/parser.py"
click node_ranker "https://github.com/srijata613/talentiq/blob/main/backend/src/ranker.py"
click node_skill_scoring "https://github.com/srijata613/talentiq/blob/main/backend/src/skill_scoring.py"
click node_experience_scoring "https://github.com/srijata613/talentiq/blob/main/backend/src/experience_scoring.py"
click node_education_bonus "https://github.com/srijata613/talentiq/blob/main/backend/src/education_bonus.py"
click node_embeddings "https://github.com/srijata613/talentiq/blob/main/backend/src/embeddings.py"
click node_comparison "https://github.com/srijata613/talentiq/blob/main/backend/src/comparison.py"
click node_search_engine "https://github.com/srijata613/talentiq/blob/main/backend/src/search_engine.py"
click node_retrieval "https://github.com/srijata613/talentiq/blob/main/backend/src/retrieval_engine.py"
click node_candidate_pipeline "https://github.com/srijata613/talentiq/blob/main/backend/src/candidate_pipeline.py"
click node_interview "https://github.com/srijata613/talentiq/blob/main/backend/src/interview_engine.py"
click node_shortlisting "https://github.com/srijata613/talentiq/blob/main/backend/src/shortlisting.py"
click node_clustering "https://github.com/srijata613/talentiq/blob/main/backend/src/candidate_clustering.py"
click node_duplicates "https://github.com/srijata613/talentiq/blob/main/backend/src/duplicate_resolution.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_web,node_web_actions toneBlue
class node_api_main,node_job_routes,node_matching_routes,node_search_routes,node_other_routes toneAmber
class node_resume_parser,node_llm_parser,node_ranker,node_skill_scoring,node_experience_scoring,node_education_bonus,node_embeddings toneMint
class node_comparison,node_search_engine,node_retrieval,node_candidate_pipeline,node_interview,node_shortlisting,node_clustering,node_duplicates toneRose
class node_recruiter toneIndigo
```

## Components

### Recruiter Interface

- [Hiring Interface](https://github.com/srijata613/talentiq/tree/main/frontend/app): `frontend/app`
- [UI Actions](https://github.com/srijata613/talentiq/tree/main/frontend/actions): `frontend/actions`

### API Layer

- [FastAPI App](https://github.com/srijata613/talentiq/blob/main/backend/app/main.py): `backend/app/main.py`
- [Job Routes](https://github.com/srijata613/talentiq/blob/main/backend/app/routes/jobs.py): `backend/app/routes/jobs.py`
- [Matching Routes](https://github.com/srijata613/talentiq/blob/main/backend/app/routes/matching.py): `backend/app/routes/matching.py`
- [Search Route](https://github.com/srijata613/talentiq/blob/main/backend/app/routes/search.py): `backend/app/routes/search.py`
- [Talent Routes](https://github.com/srijata613/talentiq/tree/main/backend/app/routes): `backend/app/routes`

### Ranking Intelligence

- [Resume Parser](https://github.com/srijata613/talentiq/blob/main/backend/src/resume_parser.py): `backend/src/resume_parser.py`
- [LLM Parser](https://github.com/srijata613/talentiq/blob/main/backend/src/llm/parser.py): `backend/src/llm/parser.py`
- [Candidate Ranker](https://github.com/srijata613/talentiq/blob/main/backend/src/ranker.py): `backend/src/ranker.py`
- [Skill Scoring](https://github.com/srijata613/talentiq/blob/main/backend/src/skill_scoring.py): `backend/src/skill_scoring.py`
- [Experience Scoring](https://github.com/srijata613/talentiq/blob/main/backend/src/experience_scoring.py): `backend/src/experience_scoring.py`
- [Education And Bonus](https://github.com/srijata613/talentiq/blob/main/backend/src/education_bonus.py): `backend/src/education_bonus.py`
- [Embeddings](https://github.com/srijata613/talentiq/blob/main/backend/src/embeddings.py): `backend/src/embeddings.py`

### Talent Workflows

- [Candidate Comparison](https://github.com/srijata613/talentiq/blob/main/backend/src/comparison.py): `backend/src/comparison.py`
- [Candidate Search](https://github.com/srijata613/talentiq/blob/main/backend/src/search_engine.py): `backend/src/search_engine.py`
- [Semantic Retrieval](https://github.com/srijata613/talentiq/blob/main/backend/src/retrieval_engine.py): `backend/src/retrieval_engine.py`
- [Candidate Processing](https://github.com/srijata613/talentiq/blob/main/backend/src/candidate_pipeline.py): `backend/src/candidate_pipeline.py`
- [Interview Planning](https://github.com/srijata613/talentiq/blob/main/backend/src/interview_engine.py): `backend/src/interview_engine.py`
- [Shortlisting](https://github.com/srijata613/talentiq/blob/main/backend/src/shortlisting.py): `backend/src/shortlisting.py`
- [Candidate Clustering](https://github.com/srijata613/talentiq/blob/main/backend/src/candidate_clustering.py): `backend/src/candidate_clustering.py`
- [Duplicate Resolution](https://github.com/srijata613/talentiq/blob/main/backend/src/duplicate_resolution.py): `backend/src/duplicate_resolution.py`

### Other components

- **Recruiter**

## Connections

- Recruiter → Hiring Interface: uses
- Hiring Interface → UI Actions: initiates
- Hiring Interface → FastAPI App: uses API
- FastAPI App → Job Routes: mounts
- FastAPI App → Matching Routes: mounts
- FastAPI App → Search Route: mounts
- FastAPI App → Talent Routes: mounts
- FastAPI App → Resume Parser: parses resumes
- FastAPI App → Candidate Ranker: ranks candidates
- FastAPI App → Candidate Comparison: compares candidates
- Search Route → Candidate Search: calls
- Candidate Processing → LLM Parser: parses job
- Candidate Processing → Embeddings: builds candidate graph
- Semantic Retrieval → Embeddings: embeds query and profiles
- Candidate Ranker → Skill Scoring: scores skills
- Candidate Ranker → Experience Scoring: scores experience
- Candidate Ranker → Education And Bonus: scores education and bonus
