Smart Apply is your AI assistant that automates the process of applying to jobs directly on company websites.
It uses LLM to analyze websites, understand forms, and automatically:
- Fill out job application forms
- Send emails via Gmail API
- Bypasses Cloudflare protection and the Google reCAPTCHA challenge.
Warning: running browser under docker is pretty slow
-
Ensure you have uv installed.
-
Install
ffmpegon your system.- Ubuntu/Debian:
sudo apt-get install ffmpeg - macOS (Homebrew):
brew install ffmpeg - Windows (winget):
winget install ffmpeg
- Ubuntu/Debian:
-
Install dependencies and the project in editable/development mode:
uv syncThis also installs
smart_applyas an editable package, which is required for the absolute imports used throughout the codebase.
docker compose build-
Create a Google Cloud project https://developers.google.com/workspace/guides/create-project#project
-
Enable Gmail API for this project https://developers.google.com/gmail/api/quickstart/python#enable_the_api
-
Configure the OAuth consent screen https://developers.google.com/gmail/api/quickstart/python#configure_the_oauth_consent_screen
-
Authorize credentials for a desktop application https://developers.google.com/gmail/api/quickstart/python#authorize_credentials_for_a_desktop_application
-
Install the Google client library https://developers.google.com/gmail/api/quickstart/python#install_the_google_client_library
NOTE: to renew expired gmail auth token run the following command:
uv run smart_apply/gmail.py-
Rename
config.yaml.exampletoconfig.yaml. -
Configure
azure_openaisection.
NOTE: Smart Apply uses Azure OpenAI by default, but you can switch to any LLM.
-
Fill in your personal information (your full name, email, message, pdf resume, etc.) that will be used during job applications.
-
Optional Configure Langfuse for LLM tracing/debugging.
-
Create a
urls.txtfile containing the URLs of the companies you want to apply to. -
Smart Apply can run either locally or with Docker — choose one of the options below.
uv run applyOr
docker compose up -d