No. 004 · Catalogue entry
Job Application Tailoring Pipeline
_
Moves
01 · Score Before Tailoring
Every posting gets a six-dimension weighted fit score (core skills, role shape, domain, scope, tools, qualifications) with a breakdown that can be re-derived by hand. A second score adjusts for employer tier and knockouts, and the two are never blended.
02 · Refuse to Invent
Each bullet must trace to a phrase that literally appears in the source resume or a verified-facts file. The builder refuses to compile a resume that fails this check, and also checks role order, role balance and duplicate facts.
03 · Fail, Don't Warn
A verifier passes or fails every PDF: one page, an ATS-readable text layer, no dashes or ligature glyphs, no leaked template text, enough real content, no title I have not held, no unverified estimate, and the name first.
04 · Draft, Never Send
The send function raises an error, so drafts are the only output. Each draft is checked for format and tone before it is saved, and I send everything myself.
05 · Gate the Inbox
Postings arrive from Gmail job alerts, a careers-page watchlist and a Telegram bot that logs every message before acting on it. Each one clears an evidence gate, a location and language gate, and a per-company cap before it reaches review.
06 · Approve From a Phone
A Vercel and Supabase dashboard shows fit and odds side by side, syncs both ways with the local tracker, and refuses an approval the database itself would refuse.
Outcome
A working system I use every day, with 20+ rules enforced as code and seven guardrails, each added after a real mistake. A scrubbed version is public on GitHub as a template anyone can run.
Evolution
It started as a resume-tailoring prompt and every mistake became a check. A nested HTML comment once leaked build instructions above my name, so the verifier now fails any page that does not start with the name. Scoring also turned out to rate a job higher the less of the posting it had read, so fit is now capped by how much of the job description exists and the cap lifts when the full posting is recovered.
Tracking runs on a fixed status flow with append-only notes and date stamps on every move. An outcome tracker reads employer replies and only marks a result when the company, role and date all match.
Postings without a usable job description, or left unreviewed for a week, expire on a 7-day clock. A full company is a contest, not a wall: a new posting only replaces an existing one if it scores higher.
Around it sit an interview-prep generator that tags every fact by confidence, a daily health check, and a morning pipeline run with a separate verify-only audit.
Role & scope
Solo, end to end: designed the rules, the scoring rubric and every check, and built the system with Claude Code on SQLite, Supabase and Vercel.