# babarjanjua/career-pilot-ai architecture

> Architecture diagram of the GitHub repository babarjanjua/career-pilot-ai, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/babarjanjua/career-pilot-ai
- Repository: https://github.com/babarjanjua/career-pilot-ai

## Overview

Career Pilot AI is a career-application platform whose main flow analyzes a resume, finds and ranks jobs, presents recommendations for human approval, then generates materials for selected opportunities and tracks applications. The README documents the domain-stage sequence; sampled code confirms the review API’s workflow invocation and approval/resume behavior, the job-discovery implementation, and LLM service provider selection. Several other capabilities are represented from the README and repository tree, but their internal wiring is not inferred where source excerpts were unavailable.

Main entry points: [`app/workflows/careerpilot_workflow.py`](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/workflows/careerpilot_workflow.py) (CareerPilot workflow), [`streamlit_app/api_client.py`](https://github.com/babarjanjua/career-pilot-ai/blob/main/streamlit_app/api_client.py) (Backend API client), [`app/workflows/generation_nodes.py`](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/workflows/generation_nodes.py) (Generation nodes), [`app/llms/factory.py`](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/llms/factory.py) (Provider selection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_dashboard["Streamlit dashboard<br/>[app.py]"]
  node_api_client["Backend API client<br/>[api_client.py]"]
end

subgraph group_workflow["Career workflow"]
  node_review_api["Review endpoints"]
  node_resume_parse["Resume extraction<br/>[resume_parser.py]"]
  node_resume_intel["Resume intelligence"]
  node_discovery["Job discovery"]
  node_job_filter["Job filtering"]
  node_matching["Resume matching"]
  node_ats["ATS optimization<br/>[ats_service.py]"]
  node_strategy["Application strategy"]
  node_human_review["Approval guardrail<br/>[human_review.py]"]
  node_workflow_engine["CareerPilot workflow"]
end

subgraph group_generation["Application generation"]
  node_generation["Generation nodes"]
  node_resume_tailor["Tailored resume"]
  node_cover_letter["Cover letter"]
  node_outreach["Recruiter outreach"]
  node_linkedin["LinkedIn message"]
  node_interview_prep["Interview preparation"]
end

subgraph group_integrations["External integrations"]
  node_tracker[("Application tracker<br/>[tracker_db.py]")]
  node_github["GitHub analysis"]
  node_gmail["Gmail drafts<br/>[gmail_service.py]"]
  node_calendar["Calendar scheduling"]
end

subgraph group_runtime["Runtime services"]
  node_backend["FastAPI application<br/>[main.py]"]
  node_llm_service["LLM service<br/>[llm_service.py]"]
  node_llm_factory["Provider selection<br/>[factory.py]"]
  node_model_router["Model routing<br/>[router.py]"]
  node_llm_providers["LLM providers"]
  node_trace["LLM tracing<br/>[tracing.py]"]
end

node_jobseeker(("Job seeker"))
node_google_services["Google services"]
node_github_service["GitHub service"]

node_jobseeker -->|"uses"| node_dashboard
node_dashboard -->|"requests"| node_api_client
node_api_client -->|"calls API"| node_backend
node_backend -->|"routes"| node_review_api
node_review_api -->|"invokes or resumes"| node_workflow_engine
node_workflow_engine -->|"extracts resume"| node_resume_parse
node_workflow_engine -->|"analyzes profile"| node_resume_intel
node_workflow_engine -->|"finds jobs"| node_discovery
node_workflow_engine -->|"filters jobs"| node_job_filter
node_workflow_engine -->|"matches resume"| node_matching
node_workflow_engine -->|"checks ATS"| node_ats
node_workflow_engine -->|"recommends strategy"| node_strategy
node_workflow_engine -->|"pauses for review"| node_human_review
node_workflow_engine -->|"generates package"| node_generation
node_generation -->|"tailors resume"| node_resume_tailor
node_generation -->|"creates letter"| node_cover_letter
node_generation -->|"creates email"| node_outreach
node_generation -->|"creates message"| node_linkedin
node_generation -->|"prepares interview"| node_interview_prep
node_workflow_engine -->|"saves applications"| node_tracker
node_api_client -->|"requests tracker data"| node_tracker
node_api_client -.->|"requests analysis"| node_github
node_github -.->|"analyzes portfolio"| node_github_service
node_api_client -.->|"requests draft"| node_gmail
node_gmail -.->|"creates draft"| node_google_services
node_api_client -.->|"requests scheduling"| node_calendar
node_calendar -.->|"creates event"| node_google_services
node_llm_service -->|"selects provider"| node_llm_factory
node_llm_factory -->|"routes task"| node_model_router
node_llm_factory -->|"gets provider"| node_llm_providers
node_llm_service -->|"records span"| node_trace

click node_dashboard "https://github.com/babarjanjua/career-pilot-ai/blob/main/streamlit_app/app.py"
click node_api_client "https://github.com/babarjanjua/career-pilot-ai/blob/main/streamlit_app/api_client.py"
click node_backend "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/main.py"
click node_review_api "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/api/routes/careerpilot_review.py"
click node_resume_parse "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/parsers/resume_parser.py"
click node_resume_intel "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/resume_intelligence_service.py"
click node_discovery "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/job_discovery_service.py"
click node_job_filter "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/job_filter_service.py"
click node_matching "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/resume_match_service.py"
click node_ats "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/ats_service.py"
click node_strategy "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/application_strategy_service.py"
click node_human_review "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/guardrails/human_review.py"
click node_workflow_engine "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/workflows/careerpilot_workflow.py"
click node_generation "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/workflows/generation_nodes.py"
click node_resume_tailor "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/resume_tailor_service.py"
click node_cover_letter "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/cover_letter_service.py"
click node_outreach "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/outreach_email_service.py"
click node_linkedin "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/linkedin_message_service.py"
click node_interview_prep "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/interview_prep_service.py"
click node_tracker "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/core/tracker_db.py"
click node_github "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/github_analysis_service.py"
click node_gmail "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/gmail_service.py"
click node_calendar "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/calendar_service.py"
click node_llm_service "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/llm_service.py"
click node_llm_factory "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/llms/factory.py"
click node_model_router "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/llms/router.py"
click node_llm_providers "https://github.com/babarjanjua/career-pilot-ai/tree/main/app/llms/providers"
click node_trace "https://github.com/babarjanjua/career-pilot-ai/blob/main/app/core/tracing.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_dashboard,node_api_client toneBlue
class node_review_api,node_resume_parse,node_resume_intel,node_discovery,node_job_filter,node_matching,node_ats,node_strategy,node_human_review,node_workflow_engine toneAmber
class node_generation,node_resume_tailor,node_cover_letter,node_outreach,node_linkedin,node_interview_prep toneMint
class node_tracker,node_github,node_gmail,node_calendar toneRose
class node_backend,node_llm_service,node_llm_factory,node_model_router,node_llm_providers,node_trace,node_jobseeker,node_google_services,node_github_service toneIndigo
```

## Components

### User experience

- [Streamlit dashboard](https://github.com/babarjanjua/career-pilot-ai/blob/main/streamlit_app/app.py): `streamlit_app/app.py`
- [Backend API client](https://github.com/babarjanjua/career-pilot-ai/blob/main/streamlit_app/api_client.py): `streamlit_app/api_client.py`

### Career workflow

- [Review endpoints](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/api/routes/careerpilot_review.py): `app/api/routes/careerpilot_review.py`
- [Resume extraction](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/parsers/resume_parser.py): `app/parsers/resume_parser.py`
- [Resume intelligence](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/resume_intelligence_service.py): `app/services/resume_intelligence_service.py`
- [Job discovery](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/job_discovery_service.py): `app/services/job_discovery_service.py`
- [Job filtering](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/job_filter_service.py): `app/services/job_filter_service.py`
- [Resume matching](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/resume_match_service.py): `app/services/resume_match_service.py`
- [ATS optimization](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/ats_service.py): `app/services/ats_service.py`
- [Application strategy](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/application_strategy_service.py): `app/services/application_strategy_service.py`
- [Approval guardrail](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/guardrails/human_review.py): `app/guardrails/human_review.py`
- [CareerPilot workflow](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/workflows/careerpilot_workflow.py): `app/workflows/careerpilot_workflow.py`

### Application generation

- [Generation nodes](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/workflows/generation_nodes.py): `app/workflows/generation_nodes.py`
- [Tailored resume](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/resume_tailor_service.py): `app/services/resume_tailor_service.py`
- [Cover letter](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/cover_letter_service.py): `app/services/cover_letter_service.py`
- [Recruiter outreach](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/outreach_email_service.py): `app/services/outreach_email_service.py`
- [LinkedIn message](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/linkedin_message_service.py): `app/services/linkedin_message_service.py`
- [Interview preparation](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/interview_prep_service.py): `app/services/interview_prep_service.py`

### External integrations

- [Application tracker](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/core/tracker_db.py): `app/core/tracker_db.py`
- [GitHub analysis](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/github_analysis_service.py): `app/services/github_analysis_service.py`
- [Gmail drafts](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/gmail_service.py): `app/services/gmail_service.py`
- [Calendar scheduling](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/calendar_service.py): `app/services/calendar_service.py`

### Runtime services

- [FastAPI application](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/main.py): `app/main.py`
- [LLM service](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/services/llm_service.py): `app/services/llm_service.py`
- [Provider selection](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/llms/factory.py): `app/llms/factory.py`
- [Model routing](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/llms/router.py): `app/llms/router.py`
- [LLM providers](https://github.com/babarjanjua/career-pilot-ai/tree/main/app/llms/providers): `app/llms/providers`
- [LLM tracing](https://github.com/babarjanjua/career-pilot-ai/blob/main/app/core/tracing.py): `app/core/tracing.py`

### Other components

- **Job seeker**
- **Google services**
- **GitHub service**

## Connections

- Job seeker → Streamlit dashboard: uses
- Streamlit dashboard → Backend API client: requests
- Backend API client → FastAPI application: calls API
- FastAPI application → Review endpoints: routes
- Review endpoints → CareerPilot workflow: invokes or resumes
- CareerPilot workflow → Resume extraction: extracts resume
- CareerPilot workflow → Resume intelligence: analyzes profile
- CareerPilot workflow → Job discovery: finds jobs
- CareerPilot workflow → Job filtering: filters jobs
- CareerPilot workflow → Resume matching: matches resume
- CareerPilot workflow → ATS optimization: checks ATS
- CareerPilot workflow → Application strategy: recommends strategy
- CareerPilot workflow → Approval guardrail: pauses for review
- CareerPilot workflow → Generation nodes: generates package
- Generation nodes → Tailored resume: tailors resume
- Generation nodes → Cover letter: creates letter
- Generation nodes → Recruiter outreach: creates email
- Generation nodes → LinkedIn message: creates message
- Generation nodes → Interview preparation: prepares interview
- CareerPilot workflow → Application tracker: saves applications
- Backend API client → Application tracker: requests tracker data
- Backend API client → GitHub analysis: requests analysis
- GitHub analysis → GitHub service: analyzes portfolio
- Backend API client → Gmail drafts: requests draft
- Gmail drafts → Google services: creates draft
- Backend API client → Calendar scheduling: requests scheduling
- Calendar scheduling → Google services: creates event
- LLM service → Provider selection: selects provider
- Provider selection → Model routing: routes task
- Provider selection → LLM providers: gets provider
- LLM service → LLM tracing: records span
