GetHired is an AI-powered job search platform designed to automate and streamline every stage of the job hunt. Leveraging intelligent agents, the platform performs job discovery, company research, and personalized resume tailoring to improve application outcomes and reduce manual effort.
-
Searches top job boards (e.g., LinkedIn, Indeed) using user-defined keywords, location, and preferences.
-
Learns user preferences over time to improve recommendation relevance.
-
Ranks jobs based on:
- Salary potential
- Role alignment
- Company reputation
- Analyzes job descriptions to extract required skills and qualifications.
- Recommends resume edits to enhance alignment and keyword match.
- Auto-generates personalized cover letters based on job context and tone.
- Auto-generates resume for specified jobs pulling data from users profile stored in Firebase to include only relevant experience and skills.
- Compiles insights on company culture, employee reviews, benefits, and salary range.
- Learns user preferences over time
- Sends reminders for follow-ups and interview prep
- Logs progress in Firestore
- Automated job searches with customizable schedules (daily/weekly/monthly)
- Smart email notifications with job results
- Cloud Tasks integration for reliable scheduling
- Timezone-aware with quiet hours support
- See SCHEDULED_SEARCH_README.md for detailed documentation
flowchart TB
%% Frontend Layer
subgraph Frontend [Frontend]
ReactUI["π React/TypeScript UI"]
SSEClient["π‘ SSE Client (Real-time Updates)"]
end
%% API Gateway
APIGateway["β‘ FastAPI Server"]
%% Orchestration Layer
subgraph Orchestration ["π§ Agent Orchestration Layer"]
Coordinator["π§ Coordinator Agent"]
Session["ποΈ Session Service (In-Memory)"]
end
%% Job Search Pipeline
subgraph JobSearchPipeline ["π Job Search Pipeline"]
Profile["π€ Profile Agent"]
Listing["π Listing Search Agent"]
Research["πΌ Company Research Agent"]
end
%% Resume Tailoring Pipeline
subgraph ResumePipeline ["π Resume Tailoring Pipeline"]
Cleanup["π§Ή Base Resume Cleanup"]
Optimize["π― Job Optimization"]
Experience["π Experience Optimization"]
ATS["𧬠ATS Optimization"]
Human["π Humanize Resume"]
Proof["β
Proof Reader"]
Doc["π Doc Creator"]
end
%% External Integrations
subgraph Integrations ["π External Integrations"]
Firebase["π₯ Firebase MCP Tool"]
JSearch["π JSearch MCP Tool"]
Glassdoor["πΌ Glassdoor MCP Tool"]
PyPDF2["π PyPDF2"]
Docx["π python-docx"]
Parser["π Custom Parser"]
Storage["βοΈ Cloud Storage"]
Docker["π³ Docker"]
Run["π Cloud Run"]
end
%% MCP Server
MCP["π GetHired MCP Server"]
%% Flow
ReactUI --> APIGateway
SSEClient <-- APIGateway
APIGateway --> Coordinator
Coordinator --> Session
Coordinator --> JobSearchPipeline
Coordinator --> ResumePipeline
Profile --> Listing --> Research
Cleanup --> Optimize --> Experience --> ATS --> Human --> Proof --> Doc
%% Tool usage via MCP
Listing --> MCP --> JSearch
Research --> MCP --> Glassdoor
%% Firebase + storage
Profile --> Firebase
Listing --> Firebase
Cleanup --> PyPDF2
Cleanup --> Parser
Doc --> Docx
Doc --> Storage
APIGateway --> Docker
APIGateway --> Run
Coordinator --> Docker
Coordinator --> Run
%% Infrastructure Support
Docker --> Run
%% Session Flow
Session <--> Profile
Session <--> Listing
Session <--> Research
Session <--> Cleanup
Session <--> Optimize
Session <--> Experience
Session <--> ATS
Session <--> Human
Session <--> Proof
Session <--> Doc
ReactUI <--> APIGateway
-
Agent Framework: Google Agent Development Kit (ADK) in Python
-
Prompt Engineering:
-
Cloud Infrastructure:
- Vertex AI for LLM-driven intelligence, reasoning, and content generation.
- Firestore to persist data on job listings, resumes, user preferences, and research
- Cloud Run used to deploy agent
-
Custom MCP Server:
- Provides access to tools that agents utilize to complete tasks. Here
- Multi-agent design: Each agent specializes in a key stage of the job application process.
- AI-driven personalization: Tailored output at every step β from job match to resume and company research.
- Scalable, modular architecture: Easy to expand with new agents (e.g., interview coaching, skill gap analysis).
- Node.js v16+
- npm
-
Clone the repository
git clone https://github.com/justliya/GetHired.git
-
Install dependencies
npm install
-
Configure environment variables
-
Create a
.envfile in the root directory:VITE_FIREBASE_API_KEY=<YOUR_PROJECT> VITE_FIREBASE_AUTH_DOMAIN=<YOUR_PROJECT> VITE_FIREBASE_PROJECT_ID=<YOUR_PROJECT> VITE_FIREBASE_STORAGE_BUCKET=<YOUR_PROJECT> VITE_FIREBASE_MESSAGING_SENDER_ID=<YOUR_PROJECT> VITE_FIREBASE_APP_ID=<YOUR_PROJECT>
-
Run the development server
npm run dev
- Python 3.11+
- A Google Cloud Platform (GCP) project
- A Firebase project
- IAM Permission: Vertex AI User
-
Add your Firebase service account key to the
jobsearch_agentsfolder -
Create a
.envfile in the backend root:GOOGLE_GENAI_USE_VERTEXAI=True GOOGLE_CLOUD_PROJECT=<YOUR_PROJECT> GOOGLE_CLOUD_LOCATION=us-central1 SERVICE_ACCOUNT_KEY_PATH=<YOUR_FIREBASE_SERVICE_KEY_PATH> FIREBASE_STORAGE_BUCKET=<YOUR_BUCKET>
gcloud auth application-default loginpython -m venv .venvMac/Linux:
source .venv/bin/activateWindows CMD:
.venv\Scripts\activate.batWindows PowerShell:
.venv\Scripts\Activate.ps1cd jobsearch_agentsexport GOOGLE_GENAI_USE_VERTEXAI=True
export GOOGLE_CLOUD_PROJECT=<YOUR_PROJECT>
export GOOGLE_CLOUD_LOCATION=us-central1Start the agent server with:
python -m coordinatorThe server should output something like:
INFO:__main__:Starting Coordinator Agent A2A Server initialization...
INFO:__main__:Agent timeout set to: 60.0 seconds
INFO:__main__:Agent instance created: coordinator_agent
INFO:coordinator.task_manager:Initializing TaskManager for agent: coordinator_agent
INFO:coordinator.task_manager:ADK Runner initialized for app 'jobsearch_agents'
INFO:__main__:Coordinator Agent A2A server starting on 0.0.0.0:8003
INFO: Started server process [35570]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8003 (Press CTRL+C to quit)
Open your browser and go to:
http://0.0.0.0:8003/docs