# chandrasekharthunduru-droid/careerpilotjobai architecture

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

## Overview

CareerPilotJobAI helps candidates build a career plan, discover and evaluate jobs, track applications, and prepare application materials with AI. The principal workflow runs through the career-pipeline orchestrator; separate profile, authentication, application-tracking, chat, and reporting/settings surfaces support it. The README documents Gemini and MongoDB integrations, and the sampled source confirms key AI, persistence, and API paths. Several route handlers, pages, and agent implementations were not sampled, so their internal wiring is represented only where the tree or explicit documentation supports it.

Main entry points: [`server/server.js`](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/server.js) (Express API), [`server/services/orchestrator.js`](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/services/orchestrator.js) (Career pipeline), [`server/controllers/aiController.js`](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/controllers/aiController.js) (AI workflows), [`server/models/Job.js`](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/models/Job.js) (Job records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Candidate application"]
  node_webapp["CareerPilot web app<br/>[App.jsx]"]
  node_dashboard["Dashboard and reports"]
  node_jobdetail["Job details<br/>[JobDetail.jsx]"]
  node_assistant["AI assistant<br/>[AIAssistant.jsx]"]
  node_clientapi["API client<br/>[api.js]"]
end

subgraph group_identity["Identity and profile"]
  node_authcontroller["Authentication<br/>[authController.js]"]
  node_authmiddleware["JWT authorization<br/>[auth.js]"]
  node_profilecontroller["Profile management"]
end

subgraph group_career["Career discovery"]
  node_jobcontroller["Job discovery<br/>[jobsController.js]"]
  node_applicationcontroller["Application tracking"]
  node_orchestrator["Career pipeline<br/>[orchestrator.js]"]
  node_agents["Career agent suite"]
end

subgraph group_preparation["AI preparation"]
  node_aicontroller["AI workflows<br/>[aiController.js]"]
  node_content[("Generated materials")]
  node_gemini["Gemini service<br/>[geminiService.js]"]
end

subgraph group_platform["API and persistence"]
  node_authroutes["Auth routes<br/>[auth.js]"]
  node_profileroutes["Profile routes<br/>[profile.js]"]
  node_profiledata[("Candidate profile")]
  node_user[("User records<br/>[User.js]")]
  node_jobroutes["Job routes<br/>[jobs.js]"]
  node_applicationroutes["Application routes<br/>[applications.js]"]
  node_jobs[("Job records<br/>[Job.js]")]
  node_applications[("Application records<br/>[Application.js]")]
  node_airoutes["AI routes<br/>[ai.js]"]
  node_agenttasks[("Agent task log<br/>[AgentTask.js]")]
  node_server["Express API<br/>[server.js]"]
end

node_candidate(("Candidate"))
node_mongodb[("MongoDB")]

node_candidate -->|"uses"| node_webapp
node_webapp -->|"routes to"| node_dashboard
node_webapp -->|"routes to"| node_jobdetail
node_webapp -->|"routes to"| node_assistant
node_dashboard -->|"requests data"| node_clientapi
node_jobdetail -->|"requests data"| node_clientapi
node_assistant -->|"requests AI"| node_clientapi
node_clientapi -->|"calls API"| node_server
node_server -->|"mounts"| node_authroutes
node_server -->|"mounts"| node_profileroutes
node_server -->|"mounts"| node_jobroutes
node_server -->|"mounts"| node_applicationroutes
node_server -->|"mounts"| node_airoutes
node_authroutes -->|"dispatches"| node_authcontroller
node_authcontroller -->|"reads and writes"| node_user
node_profileroutes -->|"authorizes"| node_authmiddleware
node_profileroutes -->|"dispatches"| node_profilecontroller
node_profilecontroller -->|"reads and writes"| node_profiledata
node_profilecontroller -->|"runs profile agent"| node_agents
node_jobroutes -->|"authorizes"| node_authmiddleware
node_jobroutes -->|"dispatches"| node_jobcontroller
node_jobcontroller -->|"reads and writes"| node_jobs
node_applicationroutes -->|"authorizes"| node_authmiddleware
node_applicationroutes -->|"dispatches"| node_applicationcontroller
node_applicationcontroller -->|"reads and writes"| node_applications
node_applicationcontroller -->|"checks job"| node_jobs
node_airoutes -->|"authorizes"| node_authmiddleware
node_airoutes -->|"dispatches"| node_aicontroller
node_aicontroller -->|"runs career pipeline"| node_orchestrator
node_orchestrator -->|"reads profile"| node_profiledata
node_orchestrator -->|"reads and updates"| node_jobs
node_orchestrator -->|"saves evaluations"| node_applications
node_orchestrator -->|"executes agents"| node_agents
node_orchestrator -->|"logs tasks"| node_agenttasks
node_agents -->|"generates AI output"| node_gemini
node_aicontroller -->|"saves materials"| node_content
node_aicontroller -->|"reads and updates"| node_profiledata
node_aicontroller -->|"reads job"| node_jobs
node_aicontroller -->|"updates tracking"| node_applications
node_server -->|"connects"| node_mongodb
node_profiledata -->|"persists"| node_mongodb
node_user -->|"persists"| node_mongodb
node_jobs -->|"persists"| node_mongodb
node_applications -->|"persists"| node_mongodb
node_content -->|"persists"| node_mongodb
node_agenttasks -->|"persists"| node_mongodb
node_gemini -.->|"requests generation"| node_candidate

click node_webapp "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/client/src/App.jsx"
click node_dashboard "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/tree/main/client/src/pages"
click node_jobdetail "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/client/src/pages/JobDetail.jsx"
click node_assistant "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/client/src/pages/AIAssistant.jsx"
click node_clientapi "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/client/src/services/api.js"
click node_authroutes "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/routes/auth.js"
click node_authcontroller "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/controllers/authController.js"
click node_authmiddleware "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/middleware/auth.js"
click node_profilecontroller "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/controllers/profileController.js"
click node_profileroutes "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/routes/profile.js"
click node_profiledata "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/models/CandidateProfile.js"
click node_user "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/models/User.js"
click node_jobroutes "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/routes/jobs.js"
click node_jobcontroller "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/controllers/jobsController.js"
click node_applicationroutes "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/routes/applications.js"
click node_applicationcontroller "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/controllers/applicationsController.js"
click node_jobs "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/models/Job.js"
click node_applications "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/models/Application.js"
click node_airoutes "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/routes/ai.js"
click node_aicontroller "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/controllers/aiController.js"
click node_orchestrator "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/services/orchestrator.js"
click node_agents "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/tree/main/server/services/agents"
click node_content "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/models/GeneratedContent.js"
click node_agenttasks "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/models/AgentTask.js"
click node_gemini "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/services/geminiService.js"
click node_server "https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/server.js"

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_webapp,node_dashboard,node_jobdetail,node_assistant,node_clientapi toneBlue
class node_authcontroller,node_authmiddleware,node_profilecontroller,node_mongodb toneAmber
class node_jobcontroller,node_applicationcontroller,node_orchestrator,node_agents toneMint
class node_aicontroller,node_content,node_gemini toneRose
class node_authroutes,node_profileroutes,node_profiledata,node_user,node_jobroutes,node_applicationroutes,node_jobs,node_applications,node_airoutes,node_agenttasks,node_server,node_candidate toneIndigo
```

## Components

### Candidate application

- [CareerPilot web app](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Dashboard and reports](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/tree/main/client/src/pages): `client/src/pages`
- [Job details](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/client/src/pages/JobDetail.jsx): `client/src/pages/JobDetail.jsx`
- [AI assistant](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/client/src/pages/AIAssistant.jsx): `client/src/pages/AIAssistant.jsx`
- [API client](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/client/src/services/api.js): `client/src/services/api.js`

### Identity and profile

- [Authentication](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/controllers/authController.js): `server/controllers/authController.js`
- [JWT authorization](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/middleware/auth.js): `server/middleware/auth.js`
- [Profile management](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/controllers/profileController.js): `server/controllers/profileController.js`

### Career discovery

- [Job discovery](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/controllers/jobsController.js): `server/controllers/jobsController.js`
- [Application tracking](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/controllers/applicationsController.js): `server/controllers/applicationsController.js`
- [Career pipeline](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/services/orchestrator.js): `server/services/orchestrator.js`
- [Career agent suite](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/tree/main/server/services/agents): `server/services/agents`

### AI preparation

- [AI workflows](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/controllers/aiController.js): `server/controllers/aiController.js`
- [Generated materials](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/models/GeneratedContent.js): `server/models/GeneratedContent.js`
- [Gemini service](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/services/geminiService.js): `server/services/geminiService.js`

### API and persistence

- [Auth routes](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/routes/auth.js): `server/routes/auth.js`
- [Profile routes](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/routes/profile.js): `server/routes/profile.js`
- [Candidate profile](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/models/CandidateProfile.js): `server/models/CandidateProfile.js`
- [User records](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/models/User.js): `server/models/User.js`
- [Job routes](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/routes/jobs.js): `server/routes/jobs.js`
- [Application routes](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/routes/applications.js): `server/routes/applications.js`
- [Job records](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/models/Job.js): `server/models/Job.js`
- [Application records](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/models/Application.js): `server/models/Application.js`
- [AI routes](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/routes/ai.js): `server/routes/ai.js`
- [Agent task log](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/models/AgentTask.js): `server/models/AgentTask.js`
- [Express API](https://github.com/chandrasekharthunduru-droid/careerpilotjobai/blob/main/server/server.js): `server/server.js`

### Other components

- **Candidate**
- **MongoDB**

## Connections

- Candidate → CareerPilot web app: uses
- CareerPilot web app → Dashboard and reports: routes to
- CareerPilot web app → Job details: routes to
- CareerPilot web app → AI assistant: routes to
- Dashboard and reports → API client: requests data
- Job details → API client: requests data
- AI assistant → API client: requests AI
- API client → Express API: calls API
- Express API → Auth routes: mounts
- Express API → Profile routes: mounts
- Express API → Job routes: mounts
- Express API → Application routes: mounts
- Express API → AI routes: mounts
- Auth routes → Authentication: dispatches
- Authentication → User records: reads and writes
- Profile routes → JWT authorization: authorizes
- Profile routes → Profile management: dispatches
- Profile management → Candidate profile: reads and writes
- Profile management → Career agent suite: runs profile agent
- Job routes → JWT authorization: authorizes
- Job routes → Job discovery: dispatches
- Job discovery → Job records: reads and writes
- Application routes → JWT authorization: authorizes
- Application routes → Application tracking: dispatches
- Application tracking → Application records: reads and writes
- Application tracking → Job records: checks job
- AI routes → JWT authorization: authorizes
- AI routes → AI workflows: dispatches
- AI workflows → Career pipeline: runs career pipeline
- Career pipeline → Candidate profile: reads profile
- Career pipeline → Job records: reads and updates
- Career pipeline → Application records: saves evaluations
- Career pipeline → Career agent suite: executes agents
- Career pipeline → Agent task log: logs tasks
- Career agent suite → Gemini service: generates AI output
- AI workflows → Generated materials: saves materials
- AI workflows → Candidate profile: reads and updates
- AI workflows → Job records: reads job
- AI workflows → Application records: updates tracking
- Express API → MongoDB: connects
- Candidate profile → MongoDB: persists
- User records → MongoDB: persists
- Job records → MongoDB: persists
- Application records → MongoDB: persists
- Generated materials → MongoDB: persists
- Agent task log → MongoDB: persists
- Gemini service → Candidate: requests generation
