# vinodff/hirewin architecture

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

- Interactive diagram: https://gitdiagram.com/vinodff/hirewin
- Repository: https://github.com/vinodff/hirewin

## Overview

HireWin is a career-tool web application for resume optimization, job discovery and application assistance, with adjacent LinkedIn and interview features. A representative user journey is to optimize a resume, explore job opportunities, and use job-scan or application tools; the tree also shows resume building, history, billing, and administration. The graph highlights these product areas and shared AI, authentication, usage, and opportunity-quality layers. README content is only a title, so product scope comes from the route and module tree; several feature connections remain unverified because their implementations were not sampled.

Main entry points: [`app/api/job-scan/route.ts`](https://github.com/vinodff/hirewin/blob/main/app/api/job-scan/route.ts) (Job Scan), [`app/api/analyze/route.ts`](https://github.com/vinodff/hirewin/blob/main/app/api/analyze/route.ts) (Analysis API), [`app/api/linkedin-optimize/route.ts`](https://github.com/vinodff/hirewin/blob/main/app/api/linkedin-optimize/route.ts) (LinkedIn Optimizer), [`lib/ai/router.ts`](https://github.com/vinodff/hirewin/blob/main/lib/ai/router.ts) (AI Failover Router)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_career["Resume and Career Tools"]
  node_resume_opt["Resume Analysis<br/>[page.tsx]"]
  node_analyze_api["Analysis API<br/>[route.ts]"]
  node_builder["Resume Builder<br/>[page.tsx]"]
  node_resume_store[("Saved Resumes<br/>[resume-store.ts]")]
  node_resume_history["Resume History<br/>[page.tsx]"]
  node_linkedin["LinkedIn Optimizer<br/>[route.ts]"]
  node_interview["Voice Interview"]
end

subgraph group_jobs["Discovery and Applications"]
  node_job_scan["Job Scan<br/>[route.ts]"]
  node_naukri_tools["Naukri Automation"]
  node_apply_engine["Application Runner<br/>[runner.ts]"]
  node_answer_engine["Application Answers<br/>[engine.ts]"]
  node_extension["Browser Extension<br/>[background.js]"]
  node_opportunities_ui["Opportunity Browser<br/>[page.tsx]"]
  node_opportunities_api["Opportunity Feed API<br/>[route.ts]"]
end

subgraph group_platform["Platform Services"]
  node_supabase["Supabase Access<br/>[server.ts]"]
  node_rate_limit["Rate Limiting<br/>[rate-limit.ts]"]
  node_usage["Plan and Quotas<br/>[usage.ts]"]
  node_admin["Admin Console"]
end

subgraph group_ai["AI and Opportunity Logic"]
  node_opportunity_logic["Feed and Verification"]
  node_quality["Quality Scoring<br/>[quality-engine.ts]"]
  node_ai_router["AI Failover Router<br/>[router.ts]"]
  node_anthropic["Analysis Models<br/>[anthropic.ts]"]
end

node_user(("Job Seeker"))

node_user -.->|"starts"| node_resume_opt
node_analyze_api -->|"streams analysis"| node_anthropic
node_analyze_api -->|"authenticates"| node_supabase
node_analyze_api -->|"checks limits"| node_rate_limit
node_job_scan -->|"authenticates"| node_supabase
node_job_scan -->|"checks limits"| node_rate_limit
node_job_scan -->|"checks quota"| node_usage
node_job_scan -->|"extracts role"| node_anthropic
node_linkedin -->|"authenticates"| node_supabase
node_linkedin -->|"checks limits"| node_rate_limit
node_linkedin -->|"logs usage"| node_usage
node_opportunities_api -->|"gets feed"| node_opportunity_logic
node_opportunities_api -->|"scores fallback"| node_quality
node_answer_engine -.->|"answers forms"| node_apply_engine
node_answer_engine -.->|"requests answers"| node_ai_router
node_ai_router -->|"reserves providers"| node_ai_router
node_quality -->|"assesses candidates"| node_opportunity_logic
node_resume_opt -.->|"submits analysis"| node_analyze_api
node_builder -.->|"saves resumes"| node_resume_store
node_resume_history -->|"loads resumes"| node_resume_store

click node_resume_opt "https://github.com/vinodff/hirewin/blob/main/app/analyze/page.tsx"
click node_analyze_api "https://github.com/vinodff/hirewin/blob/main/app/api/analyze/route.ts"
click node_builder "https://github.com/vinodff/hirewin/blob/main/app/builder/page.tsx"
click node_resume_store "https://github.com/vinodff/hirewin/blob/main/lib/resume-store.ts"
click node_resume_history "https://github.com/vinodff/hirewin/blob/main/app/history/page.tsx"
click node_linkedin "https://github.com/vinodff/hirewin/blob/main/app/api/linkedin-optimize/route.ts"
click node_interview "https://github.com/vinodff/hirewin/blob/main/components/voice-interview.tsx"
click node_job_scan "https://github.com/vinodff/hirewin/blob/main/app/api/job-scan/route.ts"
click node_naukri_tools "https://github.com/vinodff/hirewin/tree/main/lib/naukri"
click node_apply_engine "https://github.com/vinodff/hirewin/blob/main/lib/apply/runner.ts"
click node_answer_engine "https://github.com/vinodff/hirewin/blob/main/lib/apply/answers/engine.ts"
click node_extension "https://github.com/vinodff/hirewin/blob/main/extension/background.js"
click node_opportunities_ui "https://github.com/vinodff/hirewin/blob/main/app/opportunities/page.tsx"
click node_opportunities_api "https://github.com/vinodff/hirewin/blob/main/app/api/opportunities/route.ts"
click node_opportunity_logic "https://github.com/vinodff/hirewin/tree/main/lib/opportunities"
click node_quality "https://github.com/vinodff/hirewin/blob/main/lib/opportunities/quality-engine.ts"
click node_ai_router "https://github.com/vinodff/hirewin/blob/main/lib/ai/router.ts"
click node_anthropic "https://github.com/vinodff/hirewin/blob/main/lib/anthropic.ts"
click node_supabase "https://github.com/vinodff/hirewin/blob/main/lib/supabase/server.ts"
click node_rate_limit "https://github.com/vinodff/hirewin/blob/main/lib/rate-limit.ts"
click node_usage "https://github.com/vinodff/hirewin/blob/main/lib/usage.ts"
click node_admin "https://github.com/vinodff/hirewin/tree/main/app/admin"

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_resume_opt,node_analyze_api,node_builder,node_resume_store,node_resume_history,node_linkedin,node_interview toneBlue
class node_job_scan,node_naukri_tools,node_apply_engine,node_answer_engine,node_extension,node_opportunities_ui,node_opportunities_api toneAmber
class node_supabase,node_rate_limit,node_usage,node_admin toneMint
class node_opportunity_logic,node_quality,node_ai_router,node_anthropic toneRose
class node_user toneIndigo
```

## Components

### Resume and Career Tools

- [Resume Analysis](https://github.com/vinodff/hirewin/blob/main/app/analyze/page.tsx): `app/analyze/page.tsx`
- [Analysis API](https://github.com/vinodff/hirewin/blob/main/app/api/analyze/route.ts): `app/api/analyze/route.ts`
- [Resume Builder](https://github.com/vinodff/hirewin/blob/main/app/builder/page.tsx): `app/builder/page.tsx`
- [Saved Resumes](https://github.com/vinodff/hirewin/blob/main/lib/resume-store.ts): `lib/resume-store.ts`
- [Resume History](https://github.com/vinodff/hirewin/blob/main/app/history/page.tsx): `app/history/page.tsx`
- [LinkedIn Optimizer](https://github.com/vinodff/hirewin/blob/main/app/api/linkedin-optimize/route.ts): `app/api/linkedin-optimize/route.ts`
- [Voice Interview](https://github.com/vinodff/hirewin/blob/main/components/voice-interview.tsx): `components/voice-interview.tsx`

### Discovery and Applications

- [Job Scan](https://github.com/vinodff/hirewin/blob/main/app/api/job-scan/route.ts): `app/api/job-scan/route.ts`
- [Naukri Automation](https://github.com/vinodff/hirewin/tree/main/lib/naukri): `lib/naukri`
- [Application Runner](https://github.com/vinodff/hirewin/blob/main/lib/apply/runner.ts): `lib/apply/runner.ts`
- [Application Answers](https://github.com/vinodff/hirewin/blob/main/lib/apply/answers/engine.ts): `lib/apply/answers/engine.ts`
- [Browser Extension](https://github.com/vinodff/hirewin/blob/main/extension/background.js): `extension/background.js`
- [Opportunity Browser](https://github.com/vinodff/hirewin/blob/main/app/opportunities/page.tsx): `app/opportunities/page.tsx`
- [Opportunity Feed API](https://github.com/vinodff/hirewin/blob/main/app/api/opportunities/route.ts): `app/api/opportunities/route.ts`

### Platform Services

- [Supabase Access](https://github.com/vinodff/hirewin/blob/main/lib/supabase/server.ts): `lib/supabase/server.ts`
- [Rate Limiting](https://github.com/vinodff/hirewin/blob/main/lib/rate-limit.ts): `lib/rate-limit.ts`
- [Plan and Quotas](https://github.com/vinodff/hirewin/blob/main/lib/usage.ts): `lib/usage.ts`
- [Admin Console](https://github.com/vinodff/hirewin/tree/main/app/admin): `app/admin`

### AI and Opportunity Logic

- [Feed and Verification](https://github.com/vinodff/hirewin/tree/main/lib/opportunities): `lib/opportunities`
- [Quality Scoring](https://github.com/vinodff/hirewin/blob/main/lib/opportunities/quality-engine.ts): `lib/opportunities/quality-engine.ts`
- [AI Failover Router](https://github.com/vinodff/hirewin/blob/main/lib/ai/router.ts): `lib/ai/router.ts`
- [Analysis Models](https://github.com/vinodff/hirewin/blob/main/lib/anthropic.ts): `lib/anthropic.ts`

### Other components

- **Job Seeker**

## Connections

- Job Seeker → Resume Analysis: starts
- Analysis API → Analysis Models: streams analysis (evidence: `app/api/analyze/route.ts`)
- Analysis API → Supabase Access: authenticates (evidence: `app/api/analyze/route.ts`)
- Analysis API → Rate Limiting: checks limits (evidence: `app/api/analyze/route.ts`)
- Job Scan → Supabase Access: authenticates (evidence: `app/api/job-scan/route.ts`)
- Job Scan → Rate Limiting: checks limits (evidence: `app/api/job-scan/route.ts`)
- Job Scan → Plan and Quotas: checks quota (evidence: `app/api/job-scan/route.ts`)
- Job Scan → Analysis Models: extracts role (evidence: `app/api/job-scan/route.ts`)
- LinkedIn Optimizer → Supabase Access: authenticates (evidence: `app/api/linkedin-optimize/route.ts`)
- LinkedIn Optimizer → Rate Limiting: checks limits (evidence: `app/api/linkedin-optimize/route.ts`)
- LinkedIn Optimizer → Plan and Quotas: logs usage (evidence: `app/api/linkedin-optimize/route.ts`)
- Opportunity Feed API → Feed and Verification: gets feed (evidence: `app/api/opportunities/route.ts`)
- Opportunity Feed API → Quality Scoring: scores fallback (evidence: `app/api/opportunities/route.ts`)
- Application Answers → Application Runner: answers forms
- Application Answers → AI Failover Router: requests answers
- AI Failover Router → AI Failover Router: reserves providers (evidence: `lib/ai/router.ts`)
- Quality Scoring → Feed and Verification: assesses candidates (evidence: `lib/opportunities/quality-engine.ts`)
- Resume Analysis → Analysis API: submits analysis
- Resume Builder → Saved Resumes: saves resumes
- Resume History → Saved Resumes: loads resumes
