Back to Projects
Project 10 - Jul 16, 2026

LinkedIn Jobs Autopilot

Fresh Microsoft job postings land in my inbox every morning as ready-to-paste LinkedIn posts — salary, level, and link included

A fully serverless pipeline that reverse-engineers Microsoft Careers' new Eightfold API (the old GCS API died when Microsoft migrated), pulls every US job posted in the last 24 hours, enriches each with pay range, seniority level, and a description snippet from the detail endpoint, and formats each job as a complete LinkedIn post with emojis and hashtags. Two Azure Function timers deliver via Gmail SMTP: 7 AM ET sends the first 50 (software engineer roles sorted first), and 10 AM PT sends the overflow batch when more than 50 dropped. Every post is archived to Blob Storage. Runs on the consumption plan free grant — effectively $0/month.

Tech Stack

AZ
Azure Functions

Two timer triggers, consumption plan

PY
Python 3.11

Scraper + post generator

EF
Eightfold API

Reverse-engineered from JS bundle

GM
Gmail SMTP + Blob

Inbox delivery + daily archive

The Problem

Sharing daily job leads on LinkedIn is valuable but brutally manual:

  • Checking careers pages daily and copying details takes 30+ minutes
  • Salary is buried deep inside each job description
  • Formatting a clean post per job doesn't scale past a handful
  • Microsoft killed its old careers API mid-project — the site moved to Eightfold
  • Auto-posting bots violate LinkedIn ToS and risk the account

The Solution

Automate everything except the final human click:

  • Found the new /api/pcsx/search endpoint by reading the site's webpack bundle
  • Regex-extracts USD pay ranges from job descriptions (US disclosure law)
  • One job = one complete post: title, location, level, salary, snippet, link, hashtags
  • Software engineer roles sorted first; 50 per batch, overflow at 10 AM PT
  • Human stays in the loop — copy, add image, post. ToS-safe by design

Daily Pipeline

  • 7:00 AM ET — timer fires: paginate Eightfold search API, keep jobs posted in last 24h
  • Sort — software engineer titles first, then other engineering, then everything else
  • Enrich — hit the detail endpoint per job: pay range regex, level, snippet (rate-limited, 429-aware)
  • Render — each job becomes a standalone LinkedIn post with ✂️ dividers between posts
  • Deliver — email batch 1 (50 jobs) via Gmail SMTP + archive to Blob Storage
  • 10:00 AM PT — second timer sends the parked overflow batch if more than 50 jobs dropped

By the Numbers

  • 50-100 ready-to-paste posts delivered daily
  • ~2 min pipeline runtime per batch
  • $0/month — consumption plan free grant covers it
  • 100% of US postings include salary range
  • 2 delivery channels: Gmail inbox + Blob archive
  • 0 LinkedIn ToS violations — human posts manually

See It in Action

This is not a demo — the posts generated by this pipeline are live on my LinkedIn right now. Check a real one below, or grab the code and point it at any Eightfold-powered careers site.