Resumes
One master resume, a PDF per kind of role: Seekter keeps your facts in resume.json and prints an ATS-friendly PDF for every role type you apply for.
You can start with the resume PDF you already have. When you apply to more than one kind of role, Seekter can keep one master resume and print an ATS-friendly PDF for each kind of role, so every application gets the resume that fits its role family. It doesn't rewrite your resume for each posting.
Bringing Your Own PDF
/seekter-init asks for your resume's path and copies it into profile/documents/. To add or replace one later, drop the PDF in that folder and update the table in profile/profile.md §2: which resume is the default, and which one goes to which role type.
That's enough to run. Everything below is optional.
One Set of Facts, a Resume per Role
A product designer posting and an engineering posting look for different evidence in the first lines of every job. But several resume files drift apart: fix a date in one, and the others keep the old one.
So Seekter can keep one master resume, profile/resume/json/resume.json:
- Every job, date and number once.
- Under each job, a pool of bullets tagged by theme:
product,design-system,engineering,research,ui,ai… - Resume types that pick from that pool: their own headline and summary, the bullets that fit, in the order that fits, and how much to say about older jobs.
A type can choose and order the facts. It can't add one.
templates/resume/resume.example.json is a fictional master to start from.
The Commands
You don't need these: ask Seekter in the chat ("print my resumes", "check my resume") and it runs them. They're here for when you want to look yourself.
The resume types and their PDFs:
node scripts/resume.mjs list profile/resume/json/resume.json
Check the master resume against your profile: facts, dates, voice and length:
node scripts/resume.mjs validate profile/resume/json/resume.json
Print every type:
node scripts/resume.mjs pdf profile/resume/json/resume.json --all
Print a review copy of one type, drafts included:
node scripts/resume.mjs pdf profile/resume/json/resume.json --variant product-designer --drafts
The PDFs land in profile/resume/, one per type, named after the type (product-designer.pdf). Set file_prefix in resume.json to your name and every file starts with it (jane-doe-product-designer.pdf), so a recruiter sees who sent it. A run prints them again by itself whenever resume.json is newer than its PDFs.
What Validate Checks
validate holds the resume to your profile:
- Every number has to be in your profile's facts.
- Dates and titles have to match your work history.
- Overlapping jobs and banned phrases are flagged.
- Two pages is the ceiling, checked on A4 and US Letter.
- What a parser gets from the file: a PDF with fonts parsers can't read, no text layer, or over 2.5 MB is a problem.
The resume prints in Inter, which ships with the kit, so printing needs no network.
Drafts
New text (a bullet, a headline, a summary) carries "draft": true until you approve it. A PDF that would print a draft is refused. --drafts prints a review copy into profile/resume/drafts/ instead, and forms never receive anything from that folder.
Saying Less Instead of Cutting
Past two pages most screeners call a resume too long, and the first half of page one carries the decision. So a type can say less about older work instead of cutting it:
bullets_per_jobandoldertiers, for fewer bullets on older jobs.earlier: {before}folds older jobs into one closing line.short: trueprints each bullet's one-line short version.layout: "compact"puts each job on one line.
Which Resume a Form Gets
The run picks the type that matches the posting's role family and uploads its PDF. When no type fits well, it uses your default and says so in the report. Each application records the type that was sent, so /seekter-report can show how each one did.