An end-to-end RPA bot that scrapes, structures, filters & emails job-market data — fully hands-free
Driving Chrome across five major job portals to turn hours of manual research into a one-click, automated report.
Searching job portals by hand is slow, repetitive, and error-prone — open a site, run a search, click each listing, copy the salary, benefits, and requirements, paste them into a spreadsheet, repeat. Job_Bot does all of it automatically.
It drives a real Chrome browser through five popular job sites — LinkedIn, Indeed, Glassdoor, Monster, and SimplyHired — reads each posting, extracts the details that matter, lets you filter the results by keyword, exports everything to Excel, and emails you the finished report. No manual copy-pasting, no missed listings.
| 🔎 5 job portals automated | LinkedIn · Indeed · Glassdoor · Monster · SimplyHired |
| 🧩 Structured extraction | Parses raw postings into 7 clean fields (compensation, benefits, experience, responsibilities, qualifications, schedule, requirements) |
| 🎛️ Interactive filtering | Filter results by any column + keyword at runtime — no code edits |
| 📊 Excel reporting | Auto-writes results and filtered copies to spreadsheets |
| 📧 Automated email delivery | Sends the final report over SMTP to any recipient |
| ♻️ Modular & reusable | Shared sub-workflows for extraction & filtering, reused across every scraper |
| 🛡️ Resilient | Try/Catch + app-state checks survive slow loads, pop-ups & layout quirks |
- Multi-portal job scraping — Dedicated workflows scrape listings from LinkedIn, Indeed, Glassdoor, Monster, and SimplyHired.
- Structured data extraction — A reusable
Data_Extractionworkflow parses each raw job-detail blob into clean fields: compensation, benefits, experience, responsibilities, qualifications, schedule, and requirements. - Personal & organization data collection —
Personal.xamlandOrganization.xamlgather employee-level and company-level records (name, address, job title, industry, company name, employment status, and more). - Excel export — Collected data is written to workbooks (
Employee_Data.xlsx,Employment.xlsx) via Write Range. - Interactive keyword filtering —
Data_Filteringprompts the user to choose a filter column and enter a keyword, then removes non-matching rows and saves a filtered copy (Filtered_Employee_Data.xlsx,Filtered_Employment.xlsx). - Automated email delivery — Results are emailed to a user-supplied address via SMTP.
- Resilient navigation — Try/Catch blocks and
Check App State/ Target appears checks handle pages that load slowly or differ between listings.
| Area | Technology |
|---|---|
| Automation platform | UiPath Studio 21.10 (Workflow / .xaml) |
| Runtime | .NET Framework (Legacy profile) |
| Expression language | VB.NET |
| Web / UI automation | UiPath.UIAutomation.Activities — Chrome automation, selectors, Extract Table Data, Check App State |
| Spreadsheets | UiPath.Excel.Activities — Read/Write Range |
UiPath.Mail.Activities — Send SMTP Mail Message |
|
| Core logic | UiPath.System.Activities — control flow, assigns, input dialogs |
| Version control | Git / GitHub |
Main.xaml # Entry point (workflow shell)
│
├── Personal.xaml # Orchestrates job scraping + employee data + filtering + email
│ ├── Extract_Data_Linkedin.xaml ┐
│ ├── Extract_Data_Indeed.xaml │
│ ├── Extract_Data_Glassdoor.xaml ├─ Site scrapers → each invokes Data_Extraction
│ ├── Extract_Data_Monster.xaml │
│ └── Extract_Data_SimplyHired.xaml ┘
│
├── Organization.xaml # Collects organization/company data + filtering + email
│
├── Data_Extraction.xaml # ♻️ Reusable: parses raw job text → structured fields
└── Data_Filtering.xaml # ♻️ Reusable: keyword-based row filtering + Excel write
Design principle: common logic lives in shared, argument-driven sub-workflows (
Data_Extraction,Data_Filtering) instead of being copy-pasted into every scraper — keeping the project DRY and easy to extend with new job sites
- Windows OS
- UiPath Studio
21.10.x(Community Edition is free) - Google Chrome with the UiPath Browser Extension enabled (Studio → Tools → UiPath Extensions → Chrome)
- A reachable SMTP server / email account for the email step
-
Clone the repository
git clone https://github.com/HarshTanwar1/Job_Bot.git
-
Open in UiPath Studio
- Launch Studio → Open a Local Project → select
project.json. - Studio restores dependencies automatically (Excel, Mail, System, UIAutomation). If not, restore them via Manage Packages.
- Launch Studio → Open a Local Project → select
-
Verify the Chrome extension is installed and enabled (the bot uses Use Browser Chrome).
-
Configure email — Open
Personal.xaml/Organization.xamland set your SMTP server, port, and credentials in the Send SMTP Mail Message activity. -
Run a workflow
- Employee + job data: open and Run
Personal.xaml - Organization data: open and Run
Organization.xaml - Follow the on-screen dialogs to enter your email, choose whether to filter, pick a column, and enter a keyword.
- Employee + job data: open and Run
-
Check the output — Results land in the
.xlsxfiles (Employee_Data.xlsx,Employment.xlsx, and theFiltered_*.xlsxcopies) and in your inbox.
⚠️ Note: Scrapers depend on each site's current page layout. If a site changed its markup since this project was built, some selectors may need to be re-indicated in UiPath Studio
- Building modular, reusable UiPath workflows by extracting shared logic into separate
argument-driven
.xamlfiles instead of duplicating it across every scraper. - Designing robust web selectors and handling the reality that every job portal — and even individual listings on the same site — renders its pages differently.
- Using
Check App State/ Target appears and Try/Catch to make automation resilient to slow loads, missing elements, and pop-ups instead of crashing on the first surprise. - Passing data between workflows with In / InOut arguments and moving structured data around using DataTables.
- Integrating Excel read/write and SMTP email to turn raw scraped data into a finished, deliverable report.
- Adding interactive input dialogs so the same bot can be re-run with different keywords, filter criteria, and recipients without touching the workflow.
- Stronger error handling & logging — Structured logs, retry scopes, and failure screenshots.
- Selector resilience — Anchor-based / fuzzy selectors to reduce maintenance as sites change.
- Deduplication & validation — Drop duplicate listings and validate fields before export.
- Scheduling — Run unattended via UiPath Orchestrator/Assistant for automated daily digests.
- Auth handling — Gracefully handle login walls (e.g. LinkedIn's auth wall) that block guest scraping.
⭐ If you found this project helpful or interesting, consider giving it a star! ⭐