An AI-powered, deterministic job discovery engine.
CareerOS finds jobs, scores them against your real experience, and writes the results into a Google Sheet you open every morning. Not an application bot.
$ git clone https://github.com/vbkatarnaware/careeros$ pip install -e .$ careeros start # build your profile, once$ careeros daily # discover, score, and fill your SheetWhy CareerOS exists
Most AI job tools fail in one of two ways.
They spam applications with generic resumes. Or they burn expensive AI calls evaluating and writing long reports for every job they find — most of which you will never apply to.
CareerOS is built around one rule: use deterministic code wherever possible, and AI only where reasoning genuinely adds value. The KPI is simple — more interviews, for the least amount of AI and compute cost. A day with zero interview-worthy jobs is a legitimate outcome, never a reason to lower the bar.
The pipeline
Cheap, deterministic filtering first. Expensive reasoning last.
Each stage reads one file and writes the next. A job is only shown a model once it has survived every step that costs nothing.
Discover
Query every enabled provider with one segmented search per work-mode tier, then merge the results.
Constraints
Hard-reject on the two objective deal-breakers — location and salary — before a single token is spent.
AI Gate
A cheap, batched keep/drop triage against your headline and targets. Biased to keep — recall over precision.
Evaluate
The one real reasoning step. Scores each surviving job against the rubric and writes structured JSON only — no long report.
Threshold
Partition evaluated jobs into two tiers and re-check the hard constraints as a backstop.
Application Package
Draft answers to a form's real questions, render a zero-cost daily report from the eval JSON, and append a row per job to your Google Sheet.
Selector, not writer
Two files. Everything else is a derivation.
Everything CareerOS generates traces back to exactly two files: your
profile.yaml
— your facts, written once — and each job's evaluation JSON, its fit
judgment, written once by the evaluate stage.
A resume never invents a bullet. A cover letter never claims something not in your profile.
Your verbatim experience, targets, and constraints. Generated once
via careeros start, edited rarely.
Not a mockup
Watch it actually run.
Real terminal output from a real careeros daily run — unedited, including where the pipeline pushes back.
What makes it different
Architecture decisions you can read end to end.
A deterministic pipeline
Discovery, dedupe, constraints, thresholding, and the daily report are plain Python. Zero tokens spent before a job earns them.
AI only where it reasons
Two model calls that need judgment: a cheap keep/drop gate, and one real evaluation per job that survives it. Nothing else.
Two sources of truth
Your profile facts and each job's evaluation are written once. Every resume, cover letter, and report is a derivation, never a re-derivation.
Everything is cached
Each AI output is fingerprinted by job, profile version, and prompt version. Re-run a day with nothing changed and it costs zero calls.
CLI-agnostic by construction
The host coding agent is both runtime and model. Runs under Claude Code, Codex, Gemini CLI, or OpenCode without changing a line.
No server, no database
The filesystem is the message bus. Every stage reads one JSON file and writes another, so every run is inspectable and resumable.
Open source, MIT-licensed, and honest about what it does.
Read the code, run it locally, and see every decision for yourself.