Senior job hunting is high-effort and low-signal: roles are scattered across ATS feeds, descriptions are noisy, and generic applications waste the short window where applying matters. Most AI writing tools make it worse by inventing claims. ZenGrowth narrows the loop — discover, score, tailor — while refusing to fabricate facts and keeping personal data on your own machine.

The loop

Five stages, each cost-aware and audited. Discovery pulls roles from public Greenhouse and Lever JSON feeds only — no scraping — or takes a pasted job description. Dedup and precheck drop duplicates and archive obvious non-targets with no LLM cost. Scoring is a single strict-JSON Claude call returning per-dimension scores across roughly ten dimensions, a rationale, and an expected value — a deterministic, explainable ranking signal rather than a black-box number. Generation produces a tailored CV and cover letter. Review lets you request plain-language changes and mark final.

Grounding as a hard gate

The load-bearing design decision: generated claims must map to verified evidence. Any number or named entity a draft can’t trace back to approved evidence is blocked — not softened, blocked. CV tailoring is structure-preserving: it realigns the summary and reorders evidence-backed lines instead of rewriting your history into something you’d have to defend in an interview.

If a draft can’t trace a claim to evidence, the claim doesn’t ship.

Local-first, fail-closed

SQLite and local files keep your data on disk; it leaves your machine only on the LLM and discovery calls you explicitly trigger. Keys are encrypted at rest, passwords are hashed with PBKDF2-SHA256 at 600,000 iterations, and the internal-only FastAPI app fails closed without operator credentials behind a single nginx edge. A default-off daily spend cap bounds cost, an ingestion heartbeat and readiness probe watch reliability, and every ingest, score, and edit streams live to an audit log over SSE. In CI: 303 automated tests, ruff, and frontend checks.

The transferable idea

Grounding gates aren’t job-search-specific. Any generative system that drafts on your behalf — reports, bids, applications — can hold the same line: draft only from verified evidence, block what can’t be traced, and log everything so decisions can be reconstructed. ZenGrowth is the small, complete worked example of that discipline, wrapped around a problem almost everyone eventually has.

ZenGrowth is an early beta (v0.1.0). It assists discovery and drafting — it does not promise interviews, offers, or job outcomes. Generated materials are drafts for human review, performance and cost figures are project targets rather than benchmarks, and the example names and companies in the public repo are synthetic fixtures.

Under the hood Python, FastAPI, SQLModel, React 19, Claude, Tavily, SQLite, Docker, nginx, GitHub Actions.