DEV Community

Cover image for Get a Mac notification when a Greenhouse, Lever, or Ashby job is posted
Natali Hall
Natali Hall

Posted on

Get a Mac notification when a Greenhouse, Lever, or Ashby job is posted

I keep a short list of companies I actually want to work at. I work in marketing, and a broad search turns up a lot of roles outside those companies and outside the places I can work.

Once I have a link I use career-ops. It scores the role and drafts the resume. It has the capability to search for jobs for me, but it doesn't always identify the best fits and it also only runs when I tell it to. I built job-alerts for the step before that: a Mac notification when one of those companies posts something new so that I can apply as soon as a new vacancy drops.

It reads public Greenhouse, Lever, and Ashby feeds. It does not apply for you.

A notification as soon as a new job appears at a watched company

What you need

A Mac with Python 3, which is already there, and the board name for each company. The repo watches nobody until you add one.

git clone https://github.com/nataligmhall/job-alerts.git
cd job-alerts
cp companies.example.json companies.json
Enter fullscreen mode Exit fullscreen mode

companies.json is gitignored, so your list is not part of a public copy.

Add a company

[
  {
    "name": "Acme",
    "source": "greenhouse",
    "board": "acme",
    "keywords": ["content", "product marketing"],
    "locations": ["remote", "toronto"]
  }
]
Enter fullscreen mode Exit fullscreen mode

keywords and locations are optional. Leave them empty to hear about every new role. A role that does not match is still remembered, so changing the filter later does not replay the whole board. A role the board marks as remote matches a remote location even when the city is somewhere else.

Greenhouse. The token is the slug in https://boards-api.greenhouse.io/v1/boards/TOKEN/jobs. Open that URL. If you get JSON, the token is right. "source" is "greenhouse".

Lever. The site name is the last part of https://jobs.lever.co/SITE. The feed is https://api.lever.co/v0/postings/SITE?mode=json. "source" is "lever".

Ashby. The board name is the last part of https://jobs.ashbyhq.com/NAME. The feed is https://api.ashbyhq.com/posting-api/job-board/NAME. "source" is "ashby".

Turn on the notification

python3 watch.py --install
python3 watch.py --status
Enter fullscreen mode Exit fullscreen mode

This checks every 5 minutes while you are logged in and the Mac is awake. The first time, allow notifications for Vacancy tracker in System Settings.

Click a role banner and the job opens. The first time a company is added, every current role is remembered and no alert is sent. Alerts start with roles posted after that.

Closing the lid usually sleeps the Mac, so the banner for a role posted while you were away shows up when you open it.

To stop:

python3 watch.py --uninstall
Enter fullscreen mode Exit fullscreen mode

If the laptop is asleep

The GitHub Action in the repo can open an issue while the machine is off. It does nothing until companies.json is committed, so put that file in your own copy, made with Use this template. A fork of this repo stays public, which would publish your company list.

Each new role becomes an issue titled Company: Role, with the apply link. Close it when you have applied, or when you are not interested.

Then what

Paste the link into career-ops. That is the step that scores the fit and drafts the resume. You still press submit.

Top comments (0)