# nayancy022-an/evaluation-workflow architecture

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

- Interactive diagram: https://gitdiagram.com/nayancy022-an/evaluation-workflow
- Repository: https://github.com/nayancy022-an/evaluation-workflow

## Overview

EvalFlow takes recruiter-supplied candidate and role evidence, evaluates GitHub, LeetCode, and resume signals, combines them into an overall fit and competency view, and maintains a persistent shortlist. The README also documents role discovery, rubric-based summaries, and dashboard JSON export. The tree contains no separate frontend source modules, so the dashboard is represented by its visible HTML entry point; its internal implementation and exact UI-to-API calls are not shown.

Main entry points: [`server.js`](https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js) (Candidate intake), [`index.html`](https://github.com/nayancy022-an/evaluation-workflow/blob/main/index.html) (Dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Recruiter interface"]
  node_dashboard["Dashboard<br/>[index.html]"]
  node_json_export["JSON export<br/>[index.html]"]
end

subgraph group_api["Evaluation API"]
  node_api_routes["API routes<br/>[server.js]"]
  node_role_catalog["Role catalog<br/>[server.js]"]
  node_candidate_intake["Candidate intake<br/>[server.js]"]
end

subgraph group_evaluation["Scoring and evidence"]
  node_github_enrichment["GitHub enrichment<br/>[server.js]"]
  node_github_score["GitHub scoring<br/>[server.js]"]
  node_leetcode_score["LeetCode scoring<br/>[server.js]"]
  node_resume_score["Resume scoring<br/>[server.js]"]
  node_fit_score["Overall fit<br/>[server.js]"]
  node_competencies["Competency heatmap<br/>[server.js]"]
  node_rubric_summary["Rubric summary<br/>[server.js]"]
end

subgraph group_persistence["Shortlist storage"]
  node_shortlist_logic["Shortlist operations<br/>[server.js]"]
  node_shortlist_file[("Shortlist JSON")]
end

node_recruiter(("Recruiter"))
node_github_api["GitHub API"]

node_recruiter -->|"enters evidence"| node_dashboard
node_dashboard -.->|"uses API"| node_api_routes
node_api_routes -->|"serves roles"| node_role_catalog
node_api_routes -->|"evaluates candidate"| node_candidate_intake
node_candidate_intake -->|"fetches profile"| node_github_enrichment
node_github_enrichment -->|"requests profile"| node_github_api
node_candidate_intake -->|"scores evidence"| node_github_score
node_candidate_intake -->|"scores evidence"| node_leetcode_score
node_candidate_intake -->|"scores evidence"| node_resume_score
node_candidate_intake -->|"combines scores"| node_fit_score
node_candidate_intake -->|"builds heatmap"| node_competencies
node_candidate_intake -->|"builds summary"| node_rubric_summary
node_api_routes -->|"saves evaluation"| node_shortlist_logic
node_shortlist_logic -->|"reads and writes"| node_shortlist_file
node_shortlist_logic -->|"serves shortlist"| node_api_routes
node_dashboard -->|"exports JSON"| node_json_export

click node_dashboard "https://github.com/nayancy022-an/evaluation-workflow/blob/main/index.html"
click node_api_routes "https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js"
click node_role_catalog "https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js"
click node_candidate_intake "https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js"
click node_github_enrichment "https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js"
click node_github_score "https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js"
click node_leetcode_score "https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js"
click node_resume_score "https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js"
click node_fit_score "https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js"
click node_competencies "https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js"
click node_rubric_summary "https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js"
click node_shortlist_logic "https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js"
click node_json_export "https://github.com/nayancy022-an/evaluation-workflow/blob/main/index.html"

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_dashboard,node_json_export toneBlue
class node_api_routes,node_role_catalog,node_candidate_intake toneAmber
class node_github_enrichment,node_github_score,node_leetcode_score,node_resume_score,node_fit_score,node_competencies,node_rubric_summary,node_github_api toneMint
class node_shortlist_logic,node_shortlist_file toneRose
class node_recruiter toneIndigo
```

## Components

### Recruiter interface

- [Dashboard](https://github.com/nayancy022-an/evaluation-workflow/blob/main/index.html): `index.html`
- [JSON export](https://github.com/nayancy022-an/evaluation-workflow/blob/main/index.html): `index.html`

### Evaluation API

- [API routes](https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js): `server.js`
- [Role catalog](https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js): `server.js`
- [Candidate intake](https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js): `server.js`

### Scoring and evidence

- [GitHub enrichment](https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js): `server.js`
- [GitHub scoring](https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js): `server.js`
- [LeetCode scoring](https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js): `server.js`
- [Resume scoring](https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js): `server.js`
- [Overall fit](https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js): `server.js`
- [Competency heatmap](https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js): `server.js`
- [Rubric summary](https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js): `server.js`

### Shortlist storage

- [Shortlist operations](https://github.com/nayancy022-an/evaluation-workflow/blob/main/server.js): `server.js`
- **Shortlist JSON**

### Other components

- **Recruiter**
- **GitHub API**

## Connections

- Recruiter → Dashboard: enters evidence (evidence: `README.md`)
- Dashboard → API routes: uses API (evidence: `README.md`)
- API routes → Role catalog: serves roles (evidence: `server.js`)
- API routes → Candidate intake: evaluates candidate (evidence: `server.js`)
- Candidate intake → GitHub enrichment: fetches profile (evidence: `server.js`)
- GitHub enrichment → GitHub API: requests profile (evidence: `server.js`)
- Candidate intake → GitHub scoring: scores evidence (evidence: `server.js`)
- Candidate intake → LeetCode scoring: scores evidence (evidence: `server.js`)
- Candidate intake → Resume scoring: scores evidence (evidence: `server.js`)
- Candidate intake → Overall fit: combines scores (evidence: `server.js`)
- Candidate intake → Competency heatmap: builds heatmap (evidence: `server.js`)
- Candidate intake → Rubric summary: builds summary (evidence: `server.js`)
- API routes → Shortlist operations: saves evaluation (evidence: `server.js`)
- Shortlist operations → Shortlist JSON: reads and writes (evidence: `README.md`)
- Shortlist operations → API routes: serves shortlist (evidence: `server.js`)
- Dashboard → JSON export: exports JSON (evidence: `README.md`)
