{"id":30039986,"url":"https://github.com/shwetam19/hr-copilot","last_synced_at":"2025-08-07T01:55:13.736Z","repository":{"id":308371747,"uuid":"1030868505","full_name":"shwetam19/HR-Copilot","owner":"shwetam19","description":"HR Copilot is a multi-agent, LangGraph-based automation system that simplifies and accelerates the hiring process. From analyzing job descriptions to parsing multiple resumes, ranking candidates, auto-generating emails, suggesting interview slots and notifying  — this tool acts as an AI hiring assistant for recruiters.","archived":false,"fork":false,"pushed_at":"2025-08-05T14:58:18.000Z","size":94,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-05T16:22:49.906Z","etag":null,"topics":["gemini-api","google-calendar-api","langraph","langsmith","multi-agent-systems","orchestration","resume","slack-bot"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shwetam19.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-02T13:56:59.000Z","updated_at":"2025-08-05T15:02:49.000Z","dependencies_parsed_at":"2025-08-05T16:38:54.552Z","dependency_job_id":null,"html_url":"https://github.com/shwetam19/HR-Copilot","commit_stats":null,"previous_names":["shwetam19/hr-copilot"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/shwetam19/HR-Copilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shwetam19%2FHR-Copilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shwetam19%2FHR-Copilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shwetam19%2FHR-Copilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shwetam19%2FHR-Copilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shwetam19","download_url":"https://codeload.github.com/shwetam19/HR-Copilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shwetam19%2FHR-Copilot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269185773,"owners_count":24374634,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-06T02:00:09.910Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gemini-api","google-calendar-api","langraph","langsmith","multi-agent-systems","orchestration","resume","slack-bot"],"created_at":"2025-08-07T01:54:54.588Z","updated_at":"2025-08-07T01:55:13.710Z","avatar_url":"https://github.com/shwetam19.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🤖 HR Copilot – AI-Powered Resume Screening Workflow\n\n\u003cdiv align=\"center\"\u003e\n\n**A fully autonomous, multi-agent AI workflow that streamlines the hiring pipeline**\n\n📄 **Resume Parsing** → 🔍 **JD Analysis** → 🎯 **Candidate Ranking** → ✉️ **Email Generation** → 📆 **Google Calendar Scheduling** → 📢 **Slack Notifications**\n\nBuilt with [LangGraph](https://github.com/langchain-ai/langgraph), [LangSmith](https://smith.langchain.com), Gemini, and Streamlit.\n\n\u003c/div\u003e\n\n---\n## System Architecture\n\n![System Architecture](./architecture.png)\n\n---\n\n## 🧠 Core Features\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\n\n✅ **JD Understanding**  \n✅ **Multi-Resume Processing**  \n✅ **Candidate Ranking System**  \n\n\u003c/td\u003e\n\u003ctd\u003e\n\n✅ **Automated Email Writing**  \n✅ **Calendar Slot Suggestion** (Google API)  \n✅ **Slack Channel Notifications**  \n\n\u003c/td\u003e\n\u003ctd\u003e\n\n✅ **Visual Streamlit UI**  \n✅ **LangGraph Workflow**  \n✅ **LangSmith Observability**  \n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## 🗂️ Project Structure\n\n```\nAI-AGENT/\n│\n├── agents/                    # Individual autonomous agents\n│   ├── calendar_agent.py      # Google Calendar integration agent\n│   ├── candidate_ranker.py    # Resume-JD matching and scoring\n│   ├── email_generator.py     # Automated email composition\n│   ├── jd_analyzer.py         # Job description parsing and analysis\n│   ├── notifier_agent.py      # Slack notification handling\n│   └── resume_parser.py       # PDF resume extraction and parsing\n│\n├── orchestrator/\n│   ├── graph/\n│   │   ├── graph_builder.py   # LangGraph workflow definition\n│   │   └── nodes.py           # Task-specific node logic\n│   └── state/\n│       └── context.py         # Shared LangGraph state schema\n│\n├── tools/                     # External utilities\n│   ├── google_calendar.py     # Google Calendar API integration\n│   └── slack_notifier.py      # Slack message handling\n│\n├── data/resumes/              # Sample resumes (PDFs)\n├── env/                       # Your virtualenv folder\n├── .env                       # Your environment variables\n├── credentials.json           # Google Cloud credentials\n├── token.pickle               # Google OAuth token\n├── app.py                     # Streamlit UI entry point\n├── main.py                    # (Optional) CLI script\n├── requirements.txt\n├── .gitignore\n└── README.md\n```\n\n---\n\n## 🔁 Workflow Agents\n\n| Stage | Agent Class | Description |\n|-------|-------------|-------------|\n| 🧾 **JD Parsing** | `JDAnalyzer` | Extracts role, skills, experience from job description |\n| 📄 **Resume Parsing** | `ResumeParser` | Parses candidate resumes into structured format |\n| 🎯 **Candidate Ranking** | `CandidateRanker` | Compares resume to JD and gives a match score |\n| ✉️ **Email Generator** | `EmailGenerator` | Creates custom invite/reject emails |\n| 📆 **Calendar Scheduler** | `CalendarAgent` | Suggests slots and generates Google Calendar event |\n| 📢 **Slack Notifier** | `NotifierAgent` | Posts Slack message in a channel with candidate status |\n\n---\n\n## ⚙️ Setup Instructions\n\n### 🐍 1. Create \u0026 Activate Virtual Environment\n\n```bash\npython -m venv env\nsource env/bin/activate     # Windows: env\\Scripts\\activate\n```\n\n### 📦 2. Install Dependencies\n\n```bash\npip install -r requirements.txt\n```\n\n### 🔐 3. Configure .env File\n\n```bash\ncp .env.example .env\n```\n\nFill in your API keys:\n\n```env\nGEMINI_API_KEY=your_google_gemini_key\nOPENAI_API_KEY=your_openai_key\nGOOGLE_API_KEY=your_google_api_key\nSLACK_BOT_TOKEN=your_slack_token\n```\n\n### 🔗 4. Google Calendar API Setup\n\n1. Go to [Google Cloud Console](https://console.cloud.google.com/)\n2. Create a new project → Enable Calendar API\n3. Create OAuth credentials (desktop app)\n4. Download `credentials.json` and place in project root\n5. First-time login will create `token.pickle` automatically\n6. Ensure scopes allow access to your calendar\n\n### 💬 5. Slack Bot Setup\n\n1. Go to [Slack API Apps](https://api.slack.com/apps)\n2. Create a new bot → Enable OAuth permissions:\n   - `chat:write`\n3. Install app to your workspace\n4. Get the Bot Token and paste in `.env`\n5. Set channel = `\"#hiring\"` (default) or configure in `NotifierAgent`\n\n---\n\n## ▶️ Run the App\n\n```bash\nstreamlit run app.py\n```\n\n**Access it at:** http://localhost:8501\n\n---\n\n## 🧪 Sample Usage\n\n| Step | Action |\n|------|--------|\n| 1️⃣ | Paste the JD in textarea |\n| 2️⃣ | Upload 1 or more resumes (PDF) |\n| 3️⃣ | Click \"🚀 Run Pipeline\" |\n| 4️⃣ | Watch each step in the workflow live |\n\n---\n\n### Output Includes:\n- 📊 Scores \u0026 summaries\n- ✉️ Email drafts\n- 📆 Interview slots booked \n- 📢 Slack updates\n\n---\n\n## 🧠 Tech Stack\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth\u003eTechnology\u003c/th\u003e\n\u003cth\u003eRole\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLangGraph\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003eAgent workflow orchestration\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eLangSmith\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003eMonitoring \u0026 debugging\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eGemini\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003eLLM provider for reasoning\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eStreamlit\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003eInteractive UI\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eGoogle API\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003eCalendar events\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eSlack SDK\u003c/strong\u003e\u003c/td\u003e\n\u003ctd\u003eNotifications\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n\n## 📝 Final Note\n\n\u003e **This project is a production-grade AI assistant tailored for HR teams and recruiters to drastically reduce manual screening effort. Plug in more agents, build UI logic, or deploy it on the cloud — it's built to scale.**\n\n\u003cdiv align=\"center\"\u003e\n\n### 🎉 **Happy hiring!** 🎉\n\n---\n\n⭐ **Star this repo if you found it helpful!** ⭐\n\n\u003c/div\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshwetam19%2Fhr-copilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshwetam19%2Fhr-copilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshwetam19%2Fhr-copilot/lists"}