Cole Wisniewski ← all projects

jobscout

Active

Finds infrastructure internships on company career sites and sends the best matches to my phone.

Stack

Fetch
Python · Kubernetes CronJob
Data
PostgreSQL
Delivery
ntfy

What it is

I made jobscout because general internship lists miss many infrastructure roles. It checks company career sites for DevOps, SRE and platform work. I get the best matches on my phone and review the rest in a dashboard.

Three terracotta lotus petals on a sage background

How it works

A Kubernetes CronJob wakes every six hours and reads configured career boards. Provider clients fetch postings from six applicant tracking systems and the Simplify lists. Filters check role, level, location and term before scoring and collapsing duplicates. PostgreSQL keeps each posting and its score. The top unsent matches go to ntfy.

Flow

  1. CronJob wakes up
  2. Fetch career boards
  3. Filter and score roles
  4. Collapse duplicates
  5. Save postings in PostgreSQL
  6. Push top matches to ntfy

The problem

My deployed filter rules changed while the defaults in the public repo did not. Tests stayed green against rules production no longer used. I found the drift when a test written for production behavior failed locally. I wrote shared contract cases for the expected decisions. Both CI workflows now run those cases against their own config.