A simple automation tool for generating tailored resumes and organizing job applications using Google Drive and Sheets.
This script reads a Word document (.docx), replaces placeholder values like [Job Title] and [Desc], uploads the result to a Google Drive folder (named by company and date), exports a PDF copy, and logs the job application in a Google Sheet.
- Reads and modifies a
.docxresume file - Uploads the generated resume to Google Drive
- Exports the uploaded Google Doc to PDF
- Saves both
.docxand.pdflocally - Logs job applications in a Google Sheet with company, date, site, and job link
Python 3.13+
To get this script working, we need to give it permission to talk to your Google Drive and Google Sheets. It's like giving a robot a key to a specific room so it can do a job for you. We'll get two special keys from Google.
Think of this as creating a new folder for a school project.
- Go to the Google Cloud Console. You might need to sign in with your Google account.
- In the top-left corner, click the project dropdown menu and select "New Project".
- Give your project a name, like "My Resume Helper", and click "Create".
Now, we need to give our project the superpowers to use Google Drive and Sheets.
- Make sure your new project is selected at the top of the page.
- Click the navigation menu (the three horizontal lines ☰) in the top-left.
- Go to "APIs & Services" > "Library".
- In the search bar, type "Google Drive API" and press Enter.
- Click on it and then click the big blue "Enable" button.
- Go back to the Library and do the same thing for the "Google Sheets API".
This key is for you. When you run the script, Google will ask, "Hey, is it really you? Can this app access your files?" This key proves it's you.
- In the navigation menu (☰), go to "APIs & Services" > "Credentials".
- Click "+ Create Credentials" at the top and choose "OAuth client ID".
- If it asks, click "Configure Consent Screen".
- Choose "External" and click "Create".
- Give your app a name (e.g., "Resume App").
- Select your email for the user support and developer contact fields.
- Click "Save and Continue" all the way to the end.
- Go back to the "Credentials" tab.
- Click "+ Create Credentials" > "OAuth client ID" again.
- For the "Application type", choose "Desktop app".
- Click "Create". A window will pop up. Click "Download JSON".
- Find the downloaded file and rename it to
credentials.json. Move this file into your project folder.
This key is for the script itself, like a robot helper that can work on its own without asking for your password every time.
- You should still be on the "Credentials" page.
- Click "+ Create Credentials" and choose "Service Account".
- Give the service account a name, like "sheet-updater-robot".
- Click "Create and Continue".
- Click the "Role" dropdown and select "Project" > "Editor". This lets the robot edit things in your project.
- Click "Continue", then "Done".
- Find the service account you just created in the list. Click on its email address.
- Go to the "Keys" tab.
- Click "Add Key" > "Create new key".
- Choose "JSON" as the key type and click "Create".
- A file will download automatically. Rename this file to
keyfile.jsonand move it into your project folder.
Your robot helper has a key, but you still need to give it permission to open the specific spreadsheet you want it to write in.
- Open the
keyfile.jsonfile. You will see an email address next to"client_email". It will look something likerobot-name@your-project.iam.gserviceaccount.com. Copy this email address. - Open the Google Sheet you want to use for logging your job applications.
- Click the green "Share" button in the top-right corner.
- Paste the robot's email address into the box and give it "Editor" access.
- Click "Share".
This is the final step where you tell the script where to find everything.
- Make a copy of the
.env.examplefile and rename it to.env. - Open the
.envfile and fill in the details:CLIENT_SECRETS_FILE:credentials.jsonAUTHORIZED_USER_FILE:token.json(the script will create this for you)JSON_KEYFILE:keyfile.jsonTEMPLATE_FILE_ID: Go to your resume template (.docx format) in Google Drive, and the ID is the long string of letters and numbers in the URL.PARENT_FOLDER_ID: Same as above, but for the folder where you want to save the generated resumes. e.g.: 'Resumes'SHEET_NAME: The exact name of your Google Sheet you'll use to keep track of applications. e.g.: 'Applications'
pip install -r requirements.txtpython resume.pyThe first time you run the application, a browser window will open asking you to log in to your Google account to give it permission. After that, it will use the token.json file to remember you.