Job searching with a local AI agent
Job searching with a local AI agent
Job hunting is repetitive: checking the same boards, re-reading the same descriptions and keeping track of dozens of offers. This use case shows how Hermes Agent, the open-source self-improving agent from Nous Research, can take over the searching part. You give it your CV and your cover letter and it reads them, asks you questions to build your profile, then searches the web for current jobs that match, at whatever frequency you want and can email them to you every morning for example, in total autonomy.
What makes Hermes Agent powerful is that it connects to many of the services you already use. It reads and sends email from your account, works from your logged-in LinkedIn session and reaches you through any communication tool such as Telegram, Discord or WhatsApp. It operates from your own accounts and tools, so it searches, sends and follows up from the places you already work in every day.
Hermes can also refactor your resume: fix the missing information, spot mistakes in the dates, merge several versions and rewrite the whole thing, all tasks that are long and time-consuming.
From your laptop to an always-on machine
Start Hermes on the laptop you already use every day. That is the fastest way to test the workflow and refine your profile. But the real goal is an always-on computer: a small server, an old PC or a mini machine that never sleeps. It runs your searches at night, sends the morning email and updates the shortlist 24/24 while your laptop is closed.
The goal
Build a single working folder with all your application materials and let Hermes Agent:
- Read your CV and cover letter before searching
- Build your profile by asking you precise questions about the job type, locations and any detail it needs
- Search the web for current offers that match your criteria
- Consolidate the results over time so you never search the same job twice
Hermes, a person you employ
Think of Hermes as a person you employ for your job search. You explain your personal need, it takes notes, searches for you and gives you advice. It understands your profile, remembers your preferences from one session to the next and asks the right questions at the right time. Like a good assistant, it does not just collect results: it sorts them, deduplicates them, tracks your applications and suggests improvements to your documents. This working relationship, close to the one you would have with a human assistant, is what makes the search more pleasant and more effective.
The setup
Create a working folder and put your files in it:
my-resume.pdf— your resumecover-letter.pdf— your cover letter
Hermes generates the PROFILE.md file itself by asking you questions. This file is the key, it gives Hermes the context it cannot infer from your CV alone and looks like this:
# Profile
Target role: Machine Learning Engineer
Skills: Python, PyTorch, distributed training, Rust
Experience: 7 years
Languages: French, English
Job type: CDI (full-time permanent), open to contract
Locations: Paris, full remote in France
Remote: full remote or hybrid
Salary expectation: from 70k €
Industries: SaaS, fintech
Choosing a model for Hermes with Ollama
Hermes runs against any OpenAI-compatible provider, including a local model served by Ollama. Running an autonomous agent locally on modest hardware means balancing three competing factors: reasoning capability ("thinking"), structured tool execution and inference speed.
Models that support reasoning traces generate extra "thinking" tokens before emitting their action output. On CPU-only systems, a large model produces so many tokens that each tool-calling loop slows down drastically. The fix is a small model that still reasons, like deepseek-r1:1.5b or qwen3:1.7b. It keeps the token count low enough for fast execution on CPU while keeping enough structured output quality for Hermes to call tools reliably.
Pull the model, then let Ollama configure Hermes:
ollama pull deepseek-r1:1.5b
# create the 64k context size model -> deepseek-r1:1.5b-64k
ollama launch hermes
# choose the deepseek-r1:1.5b-64k model by prompting "/models"
The model context size must be above 64k for Hermes to run reliably. Ollama defaults to a much smaller context window, so you need to reconfigure your model with the extended context hack described in Fix raw XML tool calls from Ollama models.
ollama launch hermes asks you which model to use, installs Hermes if needed and sets the local Ollama provider for you. Everything is configured automatically, no server address to type.
You can raise the parameter size later on a more powerful machine; the workflow stays the same.
A local model is also the most private option. Your resume and cover letter are sensitive personal data. With Ollama serving the model on your own GNU/Linux machine, your documents are read and analysed locally and never leave your hardware. Only the web search goes out to the internet and what travels are the job descriptions, not your files.
Launching Hermes and ask for the first prompt
Ask Hermes to read the files first, then search:
Read CV.pdf and lettre-motivation.pdf from this folder.
Build my profile by asking me questions, then search the web
for current job offers that match.
Let Hermes ask questions
Hermes will read your files and almost certainly come back with questions. Answer them precisely, because these details are what the web search filters on:
- Job type: CDI, CDD, freelance, contract
- Exact locations: a city, a region, a country or full remote
- Salary range and seniority level
- Company size and industries to include or exclude
- Whether you are open to on-site, hybrid or remote only
For example, answer with a complete sentence such as:
CDI full remote in France, open to hybrid in Paris.
From 70k €, senior level. SaaS companies, under 500 employees.
The more specific your answers, the more relevant the shortlist. Your answers also build and enrich the PROFILE.md file over the sessions.
Consolidating results over time
Hermes persists every session, so the search does not restart from zero each time:
- Resume the conversation with
hermes --continueorhermes -cin the same folder - Ask Hermes to maintain a
jobs.mdtracker: every offer it finds is logged with a status (new, applied, rejected, interview) - Its memory and skills improve with use, so repeated searches get faster and better at filtering noise
- For a hands-off approach, schedule a weekly search with
hermes cronand review the digest when you want
Over a few sessions you get a living shortlist that grows, deduplicates and remembers every offer you already saw.
Automating the email digest
Add the email step to the workflow: after each search, Hermes sends you the new offers by email, every morning, fully on its own.
Start by creating a dedicated address, used only by Hermes, so EMAIL_PASSWORD is never your personal password. The easiest way for beginners is a free Gmail account:
- Create a new address at gmail.com, for example
hermes-job-search@gmail.com - In the Google security settings, enable two-step verification
- Generate an app password on the official page:
https://myaccount.google.com/apppasswords - Put the generated app password in
EMAIL_PASSWORD, not your Gmail password
Then add the email settings to Hermes:
EMAIL_ADDRESS=your-agent@email.com
EMAIL_PASSWORD=your-app-password
EMAIL_IMAP_HOST=imap.gmail.com
EMAIL_SMTP_HOST=smtp.gmail.com
EMAIL_HOME_ADDRESS=your@email.com
While reviewing the alternatives, we found that every privacy-focused provider requires a paid account to expose IMAP and SMTP to a tool like Hermes:
- Proton Mail: the free tier has no IMAP/SMTP, it needs a paid plan plus the Bridge app
- Zoho Mail: the free plan no longer includes IMAP access for new signups
- Mailfence: IMAP and SMTP are available only on paid plans
- Tuta: no IMAP/SMTP support at all
- Mailbox.org, Posteo, Runbox, Fastmail: paid only
Gmail is therefore the pragmatic free choice: a dedicated address and an app password are enough, no payment involved.
EMAIL_HOME_ADDRESS is the default destination for scheduled deliveries. If you only want outbound digests, without a mailbox to receive email, configure Hermes in outbound-only mode with SMTP only. Then start the gateway:
hermes gateway
Finally, tell Hermes to run the search on a schedule and email you the results:
Every morning at 7:00, fetch the new job offers matching my profile
and email them to me.
Hermes creates the scheduled task and runs it. The morning email then arrives in your inbox with the new offers, consolidated with what you already saw.
Connecting your own LinkedIn account
Anonymous LinkedIn searches hit strict limits quickly, especially during an active job search. To lift those limits, let Hermes work from your own logged-in account instead.
Hermes browser automation can attach to your running Chrome, Brave, Chromium or Edge browser through the Chrome DevTools Protocol (CDP). Attach it to the browser profile where you are already logged into LinkedIn:
- Enable browser automation with the local Chromium backend in Hermes
- Choose the browser profile that has your LinkedIn session open
- Ask Hermes to search for jobs on LinkedIn with your session
Once attached, every LinkedIn request Hermes makes comes from your authenticated session, so it no longer hits the anonymous visitor limits. You can use the full search filters, save jobs and track applications as usual. Keep in mind that automating LinkedIn must respect LinkedIn's terms of service and stay within your account's normal usage, otherwise LinkedIn may restrict the account.
The final verdict
Hermes Agent is comprehensive on every part of the job search: it reads and understands all your files, from the resume to the cover letter and every past application. The best part is that it behaves like a very talented teammate on the task. It gives you advice, spots the mistakes you would have missed and remembers everything you have worked on together. Because it keeps every session and has access to your accounts, it can take the best actions for the mission on its own, right where you work. You are not following a script; you are working with someone who knows your situation deeply and follows it through to the end.