Job Application Pipeline
Applications that sound like me, not a template
The Problem
My background crosses neuroscience, fintech, and ML engineering. The same experience needs completely different framing depending on the role. Tools that swap in a company name and call it personalization don't work when the whole narrative has to shift.
The Approach
I automated my own applications — but built in three points where a human (me) has to actually think.
Underneath that is a pretty strict system. Existing notes, cover letters, CV variants, and routing logic get pulled into a runtime knowledge base. Jobs can enter through search or manual intake. The posting is extracted into structured fields before any analysis or generation step sees it.
- Search and scoring: Scrapes job boards, scores across 6 dimensions, recommends a CV variant. I pick which ones to pursue. The pipeline won't proceed until I do.
- Interview before generation: A structured interview — why this company, which experiences are relevant, what's the honest angle. Generation is blocked at code level until the interview notes exist. No notes, no draft.
- Voice-matched generation: Few-shot anchoring from cover letters I actually wrote, plus an anti-pattern blocklist ("passionate about", "leverage", the usual). Every claim has to cite a specific experience.
State tracked in SQLite: new → scored → analyzed → interview_done → generated. You can't skip steps. I tried.
What Shipped
28 / 28 v1 requirements built for the single-application workflow.
- Multi-board search plus manual intake by URL, raw text, or LinkedIn email parse.
- MD5 deduplication, six-dimension scoring, tiering, and CV-mode routing.
- Structured analysis briefs before interview, instead of dumping raw job posts straight into prompts.
- A single editable
application.mdpackage with source citations for generated claims.
The Outcome
The interview step turned out to be everything. Without it, drafts read like they could be about anyone. With it, the output connects specific experience to specific requirements — and someone who knows my writing would recognise the voice.
What I'd change: the scoring weights are tuned by gut feeling right now. A feedback loop that adjusts weights based on which scored jobs I actually ended up pursuing would make the filter learn my preferences over time instead of just reflecting my initial guesses.