Skip to content

CareerOS v1.0.0

Choose a tag to compare

@vbkatarnaware vbkatarnaware released this 09 Jul 08:06

CareerOS v1.0.0

An AI-powered, deterministic job discovery and recommendation engine.
Deterministic where possible, AI only where reasoning adds value.

This is the definitive v1.0.0 — hardened through a full production audit
(P2.8) after the initial public commit, with discovery now permanently
frozen
on evidence.

Highlights

  • End-to-end daily pipeline: discover → normalize → dedupe → constraints →
    AI gate → evaluate → two-tier threshold → resume/cover artifacts → daily
    report → Google Sheets — driven from your host coding CLI (Claude Code,
    Codex, Gemini CLI, etc.), zero server, zero database.
  • Discovery (frozen default): queries both Fantastic Jobs endpoints —
    active-ats (career sites/ATS) and active-jb (+LinkedIn/YC/Wellfound) —
    every run, splitting the record budget 50/50 rather than doubling it.
    Backed by a full 107-job production acceptance audit: the two sources
    score a statistically equal ~8% ≥4.0 rate but are 92% disjoint, so
    querying both roughly doubles interview-worthy jobs found at the same
    quota cost. A single endpoint remains selectable via config.
  • Quota guard: recommends a daily discovery limit from your plan/quota/
    goal, warns before exhaustion, and never silently overrides your
    configured limit — fully config-driven, no hardcoded numbers.
  • Two-tier selection: jobs scoring ≥ threshold (default 4.0) get the
    full pipeline (resume, cover, report, Drive, Sheet row); jobs in the
    Consider band (default 3.5–3.9) get a Sheet row with score + a concise
    reason only — no AI artifacts, no Drive cost — so near-misses stay
    visible for free.
  • Profile-driven segmented discovery — one query per work-mode tier instead
    of a single broad fetch.
  • Cache-everything AI stages, fingerprinted on job content + profile version
    • prompt version — an unchanged re-run costs zero tokens.
  • Optional Google Drive backup of shortlisted artifacts, additive and off
    by default. New step-by-step setup guide: docs/google-setup.md.
  • 204 tests, including a parity test proving the REST and legacy-actor
    providers map identical raw data to an identical Job shape, and a
    regression suite for the two-tier selection, quota guard, and Sheets
    schema-migration logic.

What changed in the P2.8 hardening pass

  • Fixed a real Sheets bug: dedup and row-writes now key columns by header
    name, not position, with additive self-healing migration for sheets
    created under an older column layout (dedup was silently broken on drift).
  • Fixed the day-level summary re-deriving Apply/Consider from raw evals
    independently of the actual selection — it now renders the same
    partitioned lists the pipeline already computed, so the report can never
    disagree with what's in your Sheet.
  • Fixed the quota guard crashing discover on a non-ISO --date label.
  • Removed dead code found during the audit (an unused selection function,
    unused helper constants) and corrected several stale docs.

Installation

pip install -e .

See the README for Quickstart and provider setup.

Advanced configuration

The default REST provider supports two interchangeable transports for the
same Fantastic Jobs dataset: the direct API
(developer.fantastic.jobs) or RapidAPI's
"Active Jobs DB" listing — pick whichever fits your pricing/free-tier needs
via config.api.transport. Discovery endpoint (both/active-ats/
active-jb) and the quota guard's plan/limit are also configurable — see
careeros/providers/README.md and templates/config.example.yaml.

Discovery is now frozen

No further discovery changes (endpoint, query strategy, provider set) unless
a production issue is found. Future work moves to P3 (outcome tracking) and
the v1.1 onboarding/Drive+PDF overhaul.