Skip to content
Back

Job Application Pipeline

Applications that sound like me, not a template

2026 · Solo developer · v1 complete
PythonCLILLMAnthropicSQLite

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.

  1. 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.
  2. 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 is finished.
  3. Voice-matched generation: Few-shot anchoring from manually written cover letters, 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 a single step.

Scrape + Score Human Gate 1 Interview Human Gate 2 Generate Human Gate 3 Send
Every application passes through three human checkpoints before sending

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.md package with source citations for generated claims.

The Outcome

The interview step is what keeps it from being bulk-apply with extra steps. Structured questions first — why this company, which of my experiences actually map to it, what the honest framing is — so by the time anything gets generated, the draft has deep context I thought about, enabling me to put out a quality application.

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.