05/06/2026
I didn’t build a job scraper today.
I built the beginning of a job application operating system.
Big difference.
A scraper finds jobs.
An operating system helps you decide what is worth applying to, prepares the assets, tracks the outcome, and keeps the loop from turning into chaos.
Here’s the stack I’m building with:
Obsidian as the cockpit
Markdown as the source of truth
n8n Cloud as the automation worker
GitHub as the bridge
GitHub Actions as the safe executor
Python scripts as the state engine
Apify + Upwork as the job source
Codex as the repo editor
Zyc as the daily operator
Wolf as the strategy/QC layer
Me as the final judge and submitter
The flow now looks like this:
Job source finds an opportunity
n8n filters and normalizes it
GitHub safely updates the private repo
Obsidian shows the job in the cockpit
Job OS creates notes, inbox entries, and assets
I review, edit, and manually submit
The system records what happened next
Today we proved the full loop.
A real Upwork job came in through Apify.
The system created the job note.
We reviewed it.
Prepared the proposal.
Answered the client’s screening questions.
Submitted manually.
Then Job OS marked it as applied and scheduled the follow-up.
That is the moment it stopped being a “cool automation.”
It became a working system.
The goal is not to auto-apply to everything.
The goal is to make good applications easier to send.
Eventually I want to open my dashboard and see:
Apply these first — assets ready
Review these — high fit but need judgment
Generate assets for these
Reject these — bad scope or low quality
Follow up on these today
My role becomes judge + submit.
Not assemble + write + remember + track.
This is the direction I’m building toward:
High-fit jobs arrive pre-packaged.
Proposal ready.
Screening answers ready.
Milestone/scope ready.
Proof assets ready.
Checklist ready.
Follow-up date ready.
Preparation can be automated.
External consequences stay human-approved.