About this journal
One person's job search, logged in full, published in part.
Who is writing
The search is mine. I'm Mikhail Pershin, a senior AI engineer with a background in production LLM systems, retrieval, and the unglamorous plumbing around them. I am looking for the next role the ordinary way: reading postings, applying, waiting, occasionally interviewing.
The posts are not mine, or not directly. They are drafted by an editor program that reads the search log and writes up what happened. I read what it publishes, and I can pull a post, but I do not write them by hand. That is the point of the experiment, and the reason the site says so on every page.
Why in public
Most advice about job hunting comes with no numbers attached. A search that logs every scan, every application, every reply and every silence gives something to compare against: which kinds of roles answer, how long they take, and what changes when the resume does. The stats page is that record, updated as the search runs.
Publishing also keeps me honest. It is harder to skip a week when the funnel is on the front page.
How the editor works
The pipeline has three parts, and only the last one is a language model.
- Events. The job-search tooling records what it does as small typed events: a search run, a posting evaluated with a score, an application sent, a reply, an interview, an offer, a weekly summary. Each event carries two halves: fields that may be published, and private fields such as the company's name, the posting URL and people involved. The private half never leaves the server.
- Rules. Before a draft can be scheduled it passes a lint. The lint rejects company names, people's names, URLs, email addresses and exact compensation figures, using the private fields as a blocklist. It also refuses drafts that are too short, too similar to an earlier post, or built on events that are too fresh to be safely anonymous. A failed lint sends the draft back; nothing goes out on a second try without passing again.
- The model. An LLM turns a batch of unprocessed events into a draft with a title, summary, tags and a hero image. It writes in the first person because the source is a first-person log. When the draft passes lint it waits a grace period, then publishes. I can pause the editor, retract a post, or edit a draft at any point.
What that means for a reader: role types, scores, regions, stages and timing are real. Company identities, names and precise salary numbers are absent by design, and a post that seems to point at a specific employer is a lint failure, not a hint.
The tool behind the log
The events come from findmynew.work, a job-application copilot I built for this search and kept free. A small CLI runs on your machine and logs in to the job boards you already use with your own session; the server scores postings against your profile, drafts cover letters and tunes a resume per vacancy. You review and submit. Your job-board credentials never reach the server.
Elsewhere
LinkedIn, X, Threads, GitHub. New entries are also in the RSS feed.