Every email gets exactly one label.
One prompt-cached call sorts each inbound email into 12 labels; the ones that matter fan out into the Job Apps pipeline.
12 labels · 1 per email7 job-app sublabels1 LLM call per email0 replies sent by machine
01 / FIG. 3The sorter
ribbon width = share of mail · numbers = label precedenceILLUSTRATIVE SHARES · PRECEDENCE (01–12) DECIDES EDGE CASES — SECURITY ALWAYS BEATS MARKETING · MESSAGE_ID DEDUPS REPLAYS
02The Job Apps pipeline
langgraph · opus · fired by dispatchDispatch → Notion
5 stagesDispatchBEARER POST FROM TRIAGER
ClassifyONE OF 7 SUBLABELS
SublabelAPPLIED IN GMAIL
MatchCASCADE → NOTION ROW
Status ↑NEVER BACKWARD
OfferInterview SchedulingAssessmentRecruiter OutreachStatus UpdateApplication ConfirmationRejectionThe match cascade
never guessesno match ↓
still ambiguous ↓
03 / FIG. 4The one-way line
status is monotonic · terminal stations are read-onlyLabeled, matched, advanced — never sent.
The job search runs itself in Notion; the replies stay yours.