The Daily Run
How Seekter auto-applies to jobs every day: the job sources it searches, its filters, the 1 to 5 job fit score, how forms get filled, and the daily report.
/seekter-run is the command you run every working day. It searches job boards and company career pages, filters every posting against your rules, auto-applies to the jobs that fit through each employer's own application form, and writes down everything it did.
Before You Start
- Open Chrome with the Claude in Chrome extension.
- Log in to your webmail in the same Chrome. LinkedIn alerts arrive there.
- Put any postings you found yourself in the chat or in
profile/links.txt. They're filled first.
Then, inside Claude Code:
/seekter-run
Without the Chrome extension only the API work runs, and the run says so.
What Happens, in Order
- Load and check. It reads your whole profile and
profile/settings.json, and stops if something required is missing. If you keep a master resume, any PDF older than its data is printed again first, so a form never gets a stale resume. - Sweep every source. Your links, the API sweeps, LinkedIn alert mails, then the other boards, the same order every day. A skipped source counts as a failed run, not a short one. If time runs short, the run cuts applications, never sources.
- Filter and rank. Every posting goes through the filters below and gets a fit score.
- Apply. Forms are filled best fit first.
- Log and report. Every application and every skip goes into the tracker, and the run ends with a report.
What Gets Filtered Out
Only hard rules remove a posting without opening it:
- Already tracked. Every posting is checked against the tracker right before its form opens, on the apply URL itself. The same job reached through LinkedIn, an aggregator and the company site is still caught.
- Your blacklist and the sectors you won't touch. The sector is read from the company's own description, not the job title.
- Language. A posting that requires a language you don't list is skipped.
- Location. Labels lie in both directions, so the run reads the posting's own eligibility line and the form's questions. An explicit country list that leaves yours out closes the door. A posting that simply doesn't say is applied to.
- Visa. A posting that says it won't sponsor, or a security clearance or export-control question you can't answer truthfully, is a skip. A "requires sponsorship" option in the form is an invitation.
- Aggregators and ghosts. Sites that only copy postings are traced back to the real employer or skipped. Closed postings are caught by asking the posting's own system whether it's still open.
- Same company, recently. One application per company inside your window. See Setting Up Your Search.
Anything else is opened and read. A posting with no positive signal in its description is still applied to; it just goes later in the queue.
The reading itself is done by a script, not in the chat. It fetches each posting from the employer's own system, saves the text, and answers in one line: the sentence that closes the door, quoted (another language, no visa sponsorship, a country list without yours), the sentences that need a closer look, or nothing at all. So a skip always comes with the posting's own words, and a long run doesn't fill up with posting text. See Scripts.
The Job Fit Score
Before opening a form, the run reads the posting and scores how well you match it, from 1 to 5:
| Score | Meaning |
|---|---|
| 5 | A target role at your level, every requirement met, and the core of the work is where your experience is strongest. |
| 4 | A target role at your level, the core requirements met, a nice-to-have or a tool missing. |
| 3 | One core requirement missing, or the level a step off. |
| 2 | Two or more core requirements missing, or the core of the job sits outside your strongest work. |
| 1 | Nothing rules it out, but almost nothing matches. |
The score orders the queue; it never removes anything. Location, sponsorship and pay never move it. /seekter-report checks later whether your scores actually predicted replies.
How Application Forms Are Filled
- Your answers, not guesses. Every field comes from your profile's standard answers. Salary comes from your bands for the employer's region.
- Never invented. Date of birth, current salary, metrics, team sizes, "tell us about a time…" stories: if your profile doesn't have it, an optional field stays blank and a required one turns the form into a hand-off with that one question for you.
- Free text is checked before it's typed. Cover letters and answers are written from your fact bank and voice, then run through a check that flags any number that's in neither your profile nor the posting, your banned phrases, and any sentence already sent to another company.
- Only your application email. Never your login address.
- Consent boxes. The standard application consent is ticked. Optional demographic surveys and marketing opt-ins are not.
It applies without asking when a posting fits. You're interrupted only for a knockout question answered No, personal data it would have to guess, a role that isn't really in scope, money, or a sector you marked "ask".
Hand-Offs
Some forms can't be finished by Seekter: a visible CAPTCHA, an account wall, a question only you can answer. Those are filled as far as they safely go, left open in their own browser tab, and recorded as pending with the exact next step.
They all appear in the Needs you table at the top of applications/README.md. Clear it before asking for more applications.
The Report
Every run ends with a short report, saved in runs/<date>.md:
- The source table: each step, whether it ran, jobs seen, candidates and applications. A skipped step is visible without you asking.
- Applied: role, company and why it fits, one line each.
- Needs you: each hand-off with a link and the action.
- On LinkedIn, yours to send: Easy Apply postings, with the resume to pick, best fit first. Seekter never fills these. Before a posting goes on this list, Seekter looks for the same role on the employer's own job board, and fills that form instead when it finds one. If the list is longer than you want to work through, set a minimum fit score (
easy_apply_min_fitinprofile/settings.json, or ask Claude to): postings below it are given as one count line, and shown when you ask for them. It is the only list a score shortens; postings Seekter fills itself are only ordered by it. - Skipped, grouped by reason, with same-company holds on their own line so you can overrule them.
Postings found but not reached are written to a queue in runs/, and the next run starts from it.
Teaching It Your Rules
When a run makes a call you disagree with, say so in the chat: "a lead role with one or two reports is fine", "never apply to Initech". The rule goes into profile/profile.md in your words, and every later run follows it.