Hanyu Liu

AI product / workflow automation / human-in-the-loop

Career OS

The same principle as the quoting system, pointed at my own job search: an AI pipeline may discover, score and draft, but it may not invent a fact about me, and it may not press "apply". Every tailored resume passes a gate that allows only two kinds of change; every submission is a person's click.

StatusIn daily use (v0.1.2)
RoleDefined, designed and built it for myself; most code written by AI coding agents under my direction
StackScheduled agent task (discovery), FastAPI + SQLite workstation, Playwright-based PDF builder, launchd autostart
PeriodOctober 2026
01

The pipeline

Discoverevery weekday, 07:53
A scheduled agent searches official career pages, aggregators and community channels for roles posted in the last seven days, following a written rulebook: which queries, which companies to watch, what to skip (anything behind a login, any form, any captcha).
Scorefour criteria, 0–5 each
Direction fit, industry fit, company type, and feasibility (city, years required, a public application route). Twelve or more is a recommendation; eight to eleven goes on a watch list; below that is counted but not stored. A culture note is mandatory — public reviews, recent layoffs or leadership changes, remote policy — because that is what I weigh most.
Tailorthree allowed moves
Pick one of three resume variants; reorder the skills line to match the posting's vocabulary using only words already in my own material; write three lines mapping requirements to resume entries. Requirements I do not meet go into a "gaps" note, never into the resume.
Fact-check gatebefore any PDF
The tailored draft is diffed line by line against the base resume. Only the positioning line (from a fixed list of six) and the order of the skills lines may differ. A new number, a new claim, a new technology name blocks the build and sends the draft back.
PDF and tracka person decides
The workstation calls the same measurement-driven PDF builder I use for the official resume (Chinese and English line-break rules, balance checks). I read the posting, decide, log in myself and submit. Status, interviews and outcomes are tracked locally.
02

The workstation

Screenshots from the running app with demo data — company names replaced, contact details masked.

Career OS dashboard: counts by status and tier, latest daily report, budget state
Dashboard: what came in, what is waiting for a decision, what the daily run reported.
A job entry with its four scores, decision buttons and tabs for matches, tailored resume, tracking and culture notes
One posting: four scores, the decision (apply / revisit / pass), and the tabs behind it.
Resume Studio: base versions and tailored drafts, a draft open with the fact-check result shown as passed
Resume Studio: base versions and tailored drafts; the green line is the fact-check verdict. Figures that have not been confirmed by the author carry a pending mark in drafts and never reach a PDF.
03

Decisions

Discovery runs in a subscription session, not on an API key

The daily search is a scheduled task inside the assistant I already pay for, so it costs nothing per run and holds no credentials. The workstation's optional API use has its own ledger: a monthly cap, a warning at 80%, a hard stop at 100%, no auto-reload, no quiet fallback to another budget. Running out means stopping and telling me — the same budget discipline I apply to a client system.

The gate is the product

The interesting part is not the search; it is the rule that a tailored resume can differ from the base in exactly two ways — the positioning line and the order of the skills line; the three tailoring moves (pick a variant, reorder skills, write the match notes) may only ever produce those two kinds of diff. It made the pipeline safe to run unattended, and it is a reusable pattern: define what an AI step is allowed to change, diff against that, and block the rest.

Submission stays human

No account creation, no passwords typed by a machine, no captcha solving, no form submissions. The system prepares; I decide and act. A pipeline that could apply on my behalf would be faster and worse.

Why it is in the portfolio: it shows the ability to find a need, define a product, draw the boundary between automation and judgment, and ship an end-to-end workflow — for one user, with the same rigour as for an enterprise.