How the system works
This is not a script you run manually. It is an autonomous agent that fires at 9am every morning, does its job, and emails you a digest — whether your machine is open or not.
The execution engine is Claude Cowork, Anthropic's desktop tool for running autonomous Claude tasks on a schedule. Each morning the task fires, Cowork loads a plain markdown file called SKILL.md into a fresh Claude session, and Claude runs the full workflow with zero memory from previous runs. Everything it needs is in the file.
No browser tab open. No Terminal window. No manual trigger. Your machine just needs to be awake.
What you need first
Four things need to be in place before running anything. All four are required.
| Requirement | What it is | Why it is needed |
|---|---|---|
| Claude Cowork | Anthropic's desktop agent tool | Runs the scheduled task. Without it there is no execution engine. |
| Gmail account | The inbox the agent reads and sends from | Agent checks for interview emails and sends your digest from here. |
| Gmail app password | 16-character token from Google settings | Lets Claude send email via SMTP without your real password exposed. |
| Mac on power | MacBook connected to mains or powered monitor | Task only fires if the machine is awake. Sleep = missed run. |
| Windows PC on power | PC connected to mains with sleep prevention on | Task only fires if the machine is awake. Sleep = missed run. |
How the 5 filters work
Every job found gets passed through all 5 filters in sequence. Fail any one and it is dropped. Only roles that clear all 5 reach your inbox.
Gmail app password
This step is identical on Mac and Windows. Do not use your regular Gmail password — it will not work and it is not secure.
Enable 2-Step Verification
3.1App passwords only work when 2FA is active. Go to myaccount.google.com, click Security, and enable 2-Step Verification if it is not already on.
Generate the app password
3.2Still in myaccount.google.com, use the search bar and search for App passwords. Type Job Agent as the name and click Create. Google shows a 16-character password in groups of four:
abcd efgh ijkl mnopCopy it immediately. Google only shows it once.
Remove the spaces before saving
3.3Google adds spaces for readability. Remove them before using it anywhere:
abcdefghijklmnop # 16 chars, no spaces
Email config file
The Gmail app password lives in a plain text file on your machine. Claude reads it from disk at runtime — it is never hardcoded in the prompt, never exposed in a log.
Open Terminal and create the file
4.1# Create the folder mkdir -p ~/Downloads/Job\ Search # Open the config file in nano nano ~/Downloads/Job\ Search/email_config.txt
Type exactly this inside the file
4.2GMAIL_USER=your.email@gmail.com GMAIL_APP_PASSWORD=abcdefghijklmnop
Replace both values with your actual Gmail address and 16-character app password from Section 3.
Save and exit nano
4.3Ctrl+O # Write the file Enter # Confirm filename Ctrl+X # Exit nano
Verify the file
4.4cat ~/Downloads/Job\ Search/email_config.txt
Both lines should print back. If not, repeat from step 4.1.
Open Notepad
4.1Press Win + R, type notepad, and press Enter.
Type exactly this inside Notepad
4.2GMAIL_USER=your.email@gmail.com GMAIL_APP_PASSWORD=abcdefghijklmnop
Replace both values with your actual Gmail address and app password from Section 3.
Save to the right location
4.3File → Save As → navigate to Downloads → create a folder called Job Search → save as email_config.txt. Set Save as type to All Files to avoid a .txt.txt double extension. Full path:
C:\Users\YourName\Downloads\Job Search\email_config.txtVerify in PowerShell
4.4Press Win + X → Terminal or PowerShell, then run:
Get-Content "$env:USERPROFILE\Downloads\Job Search\email_config.txt"
Both lines should print back. If not, re-check the save path.
Setting up Cowork
Cowork is Anthropic's desktop tool for running Claude autonomously on a schedule. The setup is the same on Mac and Windows.
Download and install the Claude desktop app
5.1Go to claude.ai, download the desktop app for your OS, install it, and sign in with your Anthropic account.
Switch to Cowork mode
5.2Open the Claude desktop app. Look for the Cowork option in the sidebar or via the mode switcher at the top. Switch to it. Cowork is the mode that supports scheduled autonomous tasks.
claude.ai/settings before proceeding.Connecting Gmail MCP
MCP stands for Model Context Protocol. It gives Claude live access to your Gmail inbox during each run. You authorize it once — it persists on both Mac and Windows.
Open Connectors in Cowork
6.1Inside Cowork, look for a Connectors or Integrations section in the settings panel. Click Add connector.
Connect Gmail
6.2Find Gmail in the list and click Connect. A Google OAuth screen will appear. Sign in with the same account your email_config.txt uses. Grant the read permissions.
Confirm the connection
6.3Gmail should now appear as a connected service in your Cowork connectors list. The agent will use this to search your inbox for application emails from the past 24 hours on every run.
Getting Claude to write your SKILL.md
You do not write this file yourself. You open a Claude chat, describe what you want in plain language, and Claude writes the entire SKILL.md for you. Your job is to know what you want clearly enough to describe it.
The SKILL.md is the brain of the agent — a plain markdown file Claude reads cold at the start of every run with no memory from previous days. Everything the agent needs must be in this file. Claude builds it from your description.
Open a new Claude chat
7.1Go to claude.ai or open the Claude desktop app in standard chat mode (not Cowork). Start a new conversation.
Describe your profile and requirements
7.2Tell Claude who you are and what you are looking for. Be specific — vague descriptions produce vague filters. Here is a template that works well:
I want you to write a SKILL.md file for an autonomous job search agent running in Claude Cowork.
About me:
— [X]+ years in L&D
— Targeting: Senior Instructional Designer, Learning Technologist, Senior LXD, eLearning Developer
— Location: [Your City] — remote or hybrid [Your City] only
— Timezone: [Your timezone] — no overnight shifts
— Core tools: [Your stack — Storyline, xAPI, LMS, etc.]
— Email: your@gmail.com
My hard filters — every job must pass ALL of these:
1. Remote from [Country] or Hybrid [Your City] only
2. [Timezone]-compatible hours only, nothing past [time]
3. Senior, Lead, or Principal titles only — no Analyst or Associate
4. Internal L&D teams only — no agencies, no outsourcing firms
5. Blocked companies: [list any you want excluded]
Job boards to search: Himalayas, Remotive, WeWorkRemotely, Wellfound, Greenhouse, LinkedIn
The agent should check my Gmail inbox daily for interview calls, assessments, and rejections from the last 24 hours.
Credentials file: ~/Downloads/Job Search/email_config.txtC:\Users\YourName\Downloads\Job Search\email_config.txt
Send me a formatted daily email digest with new roles and application updates. Include filter reasoning for rejected roles. Handle failures gracefully — log them, never crash silently.
Iterate until it is right
7.3Claude will generate the full SKILL.md. Read through it. If anything is wrong — a filter is too loose, a job board is missing, the email format is not what you want — just tell Claude in plain language. It revises immediately.
You are the product manager. Claude is the engineer writing the spec file. Keep going until the file reflects exactly what you want.
Save the file Claude produces
7.4Once you are happy with it, copy the full SKILL.md content and save it as a plain text file:
~/Downloads/Job Search/SKILL.md
Open TextEdit, paste the content, go to Format → Make Plain Text, then save.
C:\Users\YourName\Downloads\Job Search\SKILL.md
Open Notepad, paste the content, and save as SKILL.md with Save as type set to All Files.
What Claude builds — reference only
## Candidate Profile Name: Your Full Name Role targets: Senior Learning Experience Designer, Learning Technologist, eLearning Developer Location: [Your City, Country] Work mode: Remote or Hybrid [Your City] only Experience: [X]+ years across L&D Core stack: [Your tools] Email: your.email@gmail.com
## Hard Filters — ALL must pass Filter 1 — Location: Remote [Country] OR Hybrid [City] only. Filter 2 — Shift timing: [Timezone]-compatible only. No overnight. Filter 3 — Seniority: Senior, Lead, Principal, Specialist only. Reject: Analyst, Associate, Coordinator, Intern, Trainee. Filter 4 — Role type: Internal L&D only. Reject: agencies, outsourcing, client-billing models. Filter 5 — Blocked companies: [List — one per line]
## Search Instructions Run all 9 queries. Use WebFetch to read full listing before filtering. # Queries cover: Himalayas, Remotive, WeWorkRemotely, # Wellfound, Greenhouse, LinkedIn × multiple role titles ## Gmail Inbox Check Use Gmail MCP. Search last 24h for: interview, assessment, application, offer, next steps, unfortunately. Classify and include in digest under APPLICATION UPDATES. ## Email Config Read from: ~/Downloads/Job Search/email_config.txtRead from: C:\Users\YourName\Downloads\Job Search\email_config.txt Use Python SMTP. Subject: Daily Job Search Update — [date] — [N] new roles. If file missing: log warning, skip sending, continue run. ## Failure Handling Never fail silently. Log every run to agent_log.txt. Format: [DATE] [TIME] — Screened: N. Passed: N. Sent: yes/no
Scheduling the task
On Mac, Cowork manages the schedule internally. No Terminal needed for this step.
Create a scheduled task in Cowork
8.1Task name: daily-job-search Prompt source: ~/Downloads/Job Search/SKILL.md Schedule: Daily at 9:00 AM Connectors: Gmail MCP (must be enabled)
Save and activate
8.2Save the task. Cowork will fire it daily at your chosen time as long as the Mac is awake and the Claude app is running.
On Windows, Cowork manages the schedule internally. You also need Claude in Startup apps so it launches automatically after any reboot.
Create a scheduled task in Cowork
8.1Task name: daily-job-search Prompt source: C:\Users\YourName\Downloads\Job Search\SKILL.md Schedule: Daily at 9:00 AM Connectors: Gmail MCP (must be enabled)
Add Claude to Startup apps
8.2Press Win + I → Apps → Startup → find Claude → toggle On. Without this, a reboot leaves Cowork offline and the task will not fire.
Verify in Task Scheduler (optional)
8.3Press Win + S, search Task Scheduler, open it. Look for daily-job-search in the library. Next Run Time should show tomorrow at 9:00 AM.
Keeping your machine awake
The scheduled task only fires if the machine is awake. Sleep means a missed run — no catch-up, just a gap in that day's digest.
Prevent sleep on power adapter
9.1System Settings → Battery → Options and enable:
Prevent automatic sleeping on power adapter when display is off ONThis path applies to macOS Ventura (13) and later. On older macOS, find the equivalent in System Preferences → Energy Saver.
Add Claude to Login Items
9.2System Settings → General → Login Items → click + → add the Claude desktop app. Cowork starts automatically on every boot.
Clamshell mode with a powered monitor
9.3If your external monitor charges the Mac via USB-C Power Delivery, closing the laptop lid keeps the Mac fully awake without fan noise. The Mac draws power from the monitor, stays awake, and the agent fires at 9am regardless. This is the cleanest always-on setup for this workflow.
Disable sleep when plugged in
9.1Settings → System → Power and sleep and set:
When plugged in, PC goes to sleep after: NeverThis applies to both Windows 10 and Windows 11. The path is the same.
Screen can sleep, PC cannot
9.2On the same screen you can allow the display to turn off while keeping the PC awake:
When plugged in, turn off display after: 30 minutes When plugged in, PC goes to sleep after: Never
The agent fires regardless of whether the display is on or off.
Confirm Claude is in Startup apps
9.3Settings → Apps → Startup → confirm Claude is toggled On. A reboot without this leaves Cowork offline and the task will not fire.
Your first run
Before waiting until 9am tomorrow, trigger a manual test run to confirm everything works end to end.
Trigger a manual run in Cowork
10.1Find your saved task in Cowork and look for a Run now or Test option. Trigger it. Watch the activity panel as Claude works through each step in sequence.
What to expect during the run
10.2The first run takes longer because Claude fetches each listing URL to read the full description before filtering. Expect 8 to 15 minutes across 9 boards. Subsequent daily runs are faster as fewer new listings appear each day.
Check your inbox
10.3The digest should arrive within a minute or two of the run completing. If it lands in spam, mark it as not spam and add your own Gmail address to your Contacts — this resolves permanently within one or two runs.
Check the log file
10.4cat ~/Downloads/Job\ Search/agent_log.txt
Open PowerShell and run:
Get-Content "$env:USERPROFILE\Downloads\Job Search\agent_log.txt"
A timestamped entry should confirm: roles screened, roles passed, email sent yes/no.
What the email looks like
A representative example of the digest you receive each morning. This uses sanitized data — not real applications or companies.
Daily Job Search Update
April 20, 2026 · 2 new roles found
Boards: 9 · Screened: 34 · Passed: 2 · Filtered: 32
Application Updates (last 24h)
New Roles Found: 2
Why 32 roles were filtered out
Troubleshooting
No email received after a run
FixCheck the log file first (Section 10). If it shows "Sent: no", the SMTP step failed. Most likely the Gmail app password in email_config.txt has spaces, is wrong, or the file path is incorrect. Re-check Section 4.
Email arrives but lands in spam
FixGmail sometimes flags self-addressed SMTP email. Open it in spam, click Not spam, and add your own address to Google Contacts. Resolves permanently within one or two runs.
Scheduled task did not fire at 9am
FixAlmost always because the Mac was asleep or Cowork was not running. Confirm System Settings → Battery → Options has sleep prevention enabled. Confirm Claude is in Login Items. The task will fire correctly from tomorrow.
Scheduled task did not fire at 9am
FixConfirm the PC was not asleep. Confirm Settings → Power and sleep → sleep is set to Never when plugged in. Confirm Claude is in Startup apps. Open Task Scheduler and check Last Run Time — if it shows never, re-create the task in Cowork.
Gmail MCP shows as disconnected
FixGo to Cowork → Connectors and reconnect Gmail. The OAuth token may have expired or been revoked — Google can invalidate tokens after extended inactivity (several months). Re-authorize using the same Google account. Takes under two minutes.
Too many irrelevant roles passing the filters
FixOpen a new Claude chat, paste your current SKILL.md, and ask Claude to tighten Filter 4. Tell it which types of roles are slipping through. Also add specific agency names to Filter 5. Claude will rewrite the relevant sections — save the updated file and the next run will use the tighter criteria.
Gmail app password stopped working
FixApp passwords are invalidated if you change your main Google password, disable 2FA, or revoke them manually. Go to myaccount.google.com, generate a new app password named "Job Agent", remove the spaces, update email_config.txt, and the next run picks it up automatically.
Questions about the setup?
Go back to the newsletter post on LinkedIn and leave a comment. If something here is unclear, your question probably helps the next person who reads this guide.
Find me on LinkedIn →