- Role
- Designed, specified and tested by me, with AI-assisted development
- Goal
- Find the right companies, people and job ads, and prepare each application
- Built
- October 2026
- Result
- In first use. Numbers follow once there are enough
Problem
A job search in Denmark means hundreds of companies, most of them wrong for you, and finding the one right person at each of the rest. Done by hand, that is reading websites all evening and writing notes that end up generic.
What I built
A desktop program for lead qualification and outreach. It takes a company list, reads each website, scores the fit against my profile, picks the person to write to, works out the address and drafts a short personal note. A second lane reads my job-agent mail read-only, fetches each posted job, scores it and prepares the CV changes and an opening line.
The language model runs locally (local LLM inference on my own PC), capped at under half of its capacity so it can work in the background. A keyword prefilter screens out obvious non-fits before any model call, and every send stays human-in-the-loop.
What it changed
It is built and tested on test data, and I am starting to use it in my own job search now. The numbers that matter (companies screened, notes sent, replies, interviews) go here once there are enough of them to mean something.
What stayed manual, and why
Sending, applying and every final word. The system never sends mail and never applies on its own.
Stack: Python, a local language model, SQLite. Designed, specified and tested by me with AI-assisted development.
Code: On request.