Skip to content

harikrishna8121999/jobpilot-ai

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ JobPilot AI

Automate your entire job search using AI β€” from a single Google Sheet.

Find jobs across LinkedIn, Indeed, RemoteOK & more. Match them to your resume. Draft personalized emails. Push to Gmail. Track everything. Zero hosting. Zero cost. Powered by Gemini.

Google Apps Script Gemini API License: MIT PRs Welcome


πŸ“Έ Screenshots

Job Tracker with Email Drafts

Job Tracker β€” track every job with match scores, statuses, and AI-drafted emails

Sidebar β€” AI Job Search

Sidebar β€” search jobs, add URLs, bulk import, all from the sidebar

Dashboard

Dashboard β€” auto-generated stats, status breakdown, top companies

Config

Config β€” just one API key, your preferences, and you're set


πŸ€” Why JobPilot AI?

Job searching is repetitive and time-consuming. You open 10 tabs, search the same query on 5 boards, copy-paste into a spreadsheet, write the same email 20 times. JobPilot AI automates all of it.

  • πŸ†“ 100% free β€” runs on Google's free tier (Gemini API + Apps Script)
  • 🚫 No hosting needed β€” everything runs serverlessly inside Google Sheets
  • πŸ”’ Your data stays yours β€” no external servers, no accounts, no tracking
  • ⚑ One-click pipeline β€” search β†’ match β†’ draft β†’ Gmail in a single click
  • πŸ€– AI-powered, not AI-dependent β€” direct scrapers run first, AI fills the gaps

✨ Features

Feature Description
πŸ“„ Resume Parsing Upload or paste your resume β€” Gemini extracts skills, experience, and target roles
πŸ” AI Job Search Searches the web for jobs across LinkedIn, Indeed, Glassdoor, Wellfound, RemoteOK & more
πŸ’Ό Direct Scrapers Built-in scrapers for LinkedIn, Indeed, RemoteOK, We Work Remotely β€” no API quota used
✍️ Manual Input Paste job URLs or descriptions β€” AI extracts structured job details
πŸ“‹ Bulk Import Paste multiple job listings from any source β€” AI parses them all at once
🎯 Job Matching AI scores every job (0-100) against your resume with detailed explanations
βœ‰οΈ Email Drafting Gemini writes personalized application emails (casual, formal, or custom style)
πŸ“§ Gmail Drafts One-click push emails to Gmail as drafts, ready to review and send
πŸ“Š Full Tracking Google Sheet tracks every job: status, match score, email draft, Gmail link
πŸš€ Full Pipeline Run search β†’ match β†’ draft β†’ Gmail in a single click from the sidebar

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  Google Sheets UI                    β”‚
β”‚         Custom Menu  Β·  HTML Sidebar                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚               Google Apps Script                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ Resume  β”‚ β”‚   Job    β”‚ β”‚   Job    β”‚ β”‚  Email  β”‚ β”‚
β”‚  β”‚ Parser  β”‚ β”‚  Search  β”‚ β”‚ Matcher  β”‚ β”‚ Drafter β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β”‚
β”‚       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚
β”‚                   β–Ό            β–Ό                     β”‚
β”‚           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”‚
β”‚           β”‚ Gemini 2.0   β”‚ β”‚  Gmail   β”‚             β”‚
β”‚           β”‚ Flash API    β”‚ β”‚  Drafts  β”‚             β”‚
β”‚           β”‚ + Search     β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β”‚
β”‚           β”‚  Grounding   β”‚                          β”‚
β”‚           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚         Direct Scrapers (no API needed)       β”‚   β”‚
β”‚  β”‚  LinkedIn Β· Indeed Β· RemoteOK Β· WWR           β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Single API key, multiple capabilities:

  • πŸ€– AI Analysis β€” Resume parsing, job matching, email drafting
  • πŸ” Web Search β€” Job discovery via Gemini Search Grounding
  • πŸ’Ό Direct Scrapers β€” LinkedIn, Indeed, RemoteOK, WeWorkRemotely (free, no Gemini quota used)
  • πŸ“§ Gmail β€” Draft creation and management

πŸš€ Quick Start

Prerequisites

  • Google account (free or Workspace)
  • Gemini API key (get one free)

That's it! No other API keys, subscriptions, or services needed.

Setup (5 minutes)

  1. Create a new Google Sheet
  2. Open Apps Script Editor: Extensions β†’ Apps Script
  3. Copy all .gs files from the src/ folder into the script editor
  4. Copy Sidebar.html as an HTML file in the script editor
  5. Update appsscript.json: Show manifest file, replace contents with src/appsscript.json from this repo
  6. Reload the Sheet β€” the πŸš€ JobPilot AI menu appears
  7. Run Initialize from the menu to create tracker sheets
  8. Enter your Gemini API key via JobPilot AI β†’ Settings

πŸ“– Detailed setup guide: SETUP.md


πŸ“ Project Structure

src/
β”œβ”€β”€ appsscript.json      # Apps Script manifest (required by CLASP)
β”œβ”€β”€ Code.gs              # Entry point, custom menu, orchestration
β”œβ”€β”€ GeminiService.gs     # Gemini API wrapper (REST + Search Grounding)
β”œβ”€β”€ SheetManager.gs      # Google Sheets CRUD operations
β”œβ”€β”€ Config.gs            # Configuration & API key management
β”œβ”€β”€ ResumeParser.gs      # Resume analysis via Gemini
β”œβ”€β”€ JobSearch.gs         # AI-powered job discovery + direct scrapers + manual input
β”œβ”€β”€ JobMatcher.gs        # Job-resume matching & scoring
β”œβ”€β”€ EmailDrafter.gs      # Personalized email generation
β”œβ”€β”€ GmailService.gs      # Gmail draft creation
β”œβ”€β”€ Utils.gs             # Utility functions
└── Sidebar.html         # HTML sidebar UI

πŸ” Job Search Sources

JobPilot AI uses a hybrid approach: direct scrapers run first (free, no quota), then Gemini Search Grounding fills the gaps.

Source Method API Quota
LinkedIn Direct scraper (public pages) ❌ Free
Indeed Direct scraper (HTML parsing) ❌ Free
RemoteOK Direct scraper (JSON API) ❌ Free
We Work Remotely Direct scraper (RSS feed) ❌ Free
Glassdoor, Wellfound, Cutshort, Instahyre Gemini Search Grounding βœ… Uses quota
Company career pages Gemini Search Grounding βœ… Uses quota
Any URL or text Manual Add / Bulk Import βœ… Uses quota

Note: LinkedIn, Naukri, and Glassdoor job details may be login-gated. Use Add from URL or Bulk Import for jobs from these platforms.


πŸ”‘ API & Cost

API Free Tier Cost After Free Tier
Gemini API 15 requests/min, 1,500/day ~$0.001 per request
Gmail API 250 drafts/day Free (included with Google account)

πŸ’‘ Only one API key (Gemini) is required. It's free from Google AI Studio. This is NOT the same as a Gemini Pro subscription β€” the API key is completely free with generous daily limits.


πŸ› Troubleshooting

Issue Solution
Menu doesn't appear Reload the sheet, or run onOpen manually in Apps Script
Rate limit (429) errors Wait for quota reset (midnight PT) or enable billing
Search returns few results Try different keywords, or search multiple times (duplicates auto-skipped)
LinkedIn/Naukri jobs missing Use Bulk Import or Add from URL instead
URL added but no details Login-gated site β€” copy job text into Bulk Import

πŸ“– Full troubleshooting guide: SETUP.md#-troubleshooting


🀝 Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

  1. Fork the repo
  2. Create your feature branch (git checkout -b feature/awesome-feature)
  3. Commit your changes (git commit -m 'Add awesome feature')
  4. Push to the branch (git push origin feature/awesome-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License β€” see the LICENSE file for details.


πŸ™ Acknowledgments


🏷️ Topics

job-search job-automation google-apps-script gemini-api google-sheets job-tracker resume-parser email-automation job-board-scraper ai-automation job-hunting career-tools google-workspace gemini-ai job-application gmail-automation job-matching remote-jobs productivity open-source

Releases

No releases published

Packages

 
 
 

Contributors