← All projects

GitHub Actions Job Scout

PythonGitHub ActionsAnthropic APIAutomation

The problem

Job searching for a niche role — remote GRC / compliance-automation engineering — means checking a rotating set of job boards and company pages every few days, most of which don’t have decent RSS feeds or alerts that actually match what you’re looking for.

What it does

job_scout.py uses the Anthropic API with the web search tool, given a natural-language SEARCH_CRITERIA block that describes target roles and my candidate profile (GRC/compliance automation, policy-as-code, GRC platforms like Vanta/Drata/ServiceNow GRC/OneTrust, remote-first, no hard CISA/CISSP requirement). It searches, filters, and summarizes matching postings, then emails me the results and logs a running history to job_scout_log.md.

Architecture

Notable gotchas

Getting the cron schedule right took a couple of iterations — three separate things can cause “extra” runs beyond your cron schedule: leftover manual workflow_dispatch triggers, edits made off the default branch, and a duplicate workflow file sitting in .github/workflows/.

What’s next

Adding a provider-abstraction layer (mirroring the pattern from my Flask migration-validation tool’s ai_assistant/ package) so the script isn’t locked to a single LLM provider — an LLM_PROVIDER environment variable will switch between Anthropic, OpenAI, and Gemini, with normalized cost tracking across all three.