JobPilot

JobsLeaderboardDocsHow it worksGitHub
Sign inGet started
Docs
OverviewGetting startedThe PilotCampaigns & skillsEmail setupCredentialsFAQ

Email setup

Connecting email powers the inbox (recruiter replies are classified and matched to applications), verification codes (the agent reads sign-in codes during applies), and networking (messages are sent from your own address).

JobPilot connects to Gmail with your own Google OAuth client. It ships no shared client, so nothing about your mail passes through anyone else's Google app, and no Google verification or security audit is needed. Setup is once per user and takes about five minutes.

Create your OAuth client

  1. In the Google Cloud Console, create a new project, then an OAuth 2.0 Client ID (type: Web application).
  2. Enable the Gmail API for the project under "APIs & Services".
  3. In JobPilot, open Settings → Email and copy the redirect URI shown there; add it as an authorized redirect URI on your OAuth client.
  4. Add the gmail.readonly and gmail.send scopes to the consent screen, under Google Auth Platform → Data access: Add or remove scopes, search for each, tick both Gmail API rows, then Save. readonly powers reply tracking and verification codes; send powers networking email.
  5. Keep the app in Testing mode and add your Gmail address under Audience → Test users. It's your own project with you as the only user, so Google verification is never required. One catch: Testing-mode refresh tokens expire after about seven days, so expect to reconnect roughly once a week. Publishing the app does not fix this. Gmail scopes are restricted, so a published app without Google verification fails at sign-in.
  6. Back in Settings → Email, paste your Client ID and Client secret, save, then Connect Gmail.

What JobPilot can and can't do

JobPilot can read mail and send it, and nothing more. The consent screen asks for four scopes: gmail.readonly and gmail.send do the work, while openid and email only tell JobPilot which address you connected. Deleting or modifying mail is outside what the token allows. Your client id and secret are stored encrypted per user (the secret never leaves the server) and the connected account is tied to your profile only.

Troubleshooting

  • "Access blocked: app has not completed the Google verification process". Your Gmail isn't on the Test users list. Add it under Audience → Test users.
  • 403 "Request had insufficient authentication scopes". A required Gmail scope isn't on the consent screen. Add both under Data access, then disconnect and reconnect in Settings → Email so a new token with the right scopes is issued.
  • Mailbox connects read-only, or networking can't send. The token was issued without gmail.send. Add the scope under Data access, then use Reconnect to enable sending in Settings → Email.
  • Google 500 after publishing. A published app using restricted Gmail scopes needs Google verification. Go back to Testing mode under Audience → Publishing status → Back to testing.

Outlook and IMAP support are planned; Gmail is the only provider today.

Next up: Credentials, so the agent can sign in to boards.

JobPilot

The job search, run by your own AI agent.

© 2026 Sukhrob Ilyosbekov

ProductBrowse jobsLeaderboardDocsSign inCreate account
ResourcesGitHubChangelogArchitecture