You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Unified backlog of 22 improvements to the job search pipeline and resume app, consolidated from four separate evaluation docs into a single prioritized iterable document.
The Document
~/code/docs/job-search-improvements.md - 22 items across 4 tiers (High Impact → Investigate), each with repo, sources, and first step
Source Documents
~/code/docs/resumeskills-evaluation.md - 9 categories evaluating 20 skills from ResumeSkills for pipeline integration
~/code/docs/job-search-tools-review.md - 5 tools and ideas from links collection (ResumeSkills, Magic Resume, Indy AI, auto-submit tools, hiring thesis)
~/code/docs/magic-resume-ideas.md - 5 features worth stealing from magic-resume for the resume app
~/code/docs/job-search-tools-to-evaluate.md - 10 tools and patterns from GitHub/HN/X for pipeline improvements
Unified backlog of improvements to the job search pipeline (~/code/jobsearch) and resume app (~/code/resume). Curated from four evaluation docs, de-duped, and prioritized by impact on application success rate, time saved, and existing infrastructure readiness.
Each item is self-contained. Work them in order within a tier, or cherry-pick across tiers based on what's relevant to the current batch of applications.
Pipeline context:search-jobs → curate-results → research-company → write-cover-letter → submit-application + check-email (standalone). Resume lives in YAML (~/code/resume/src/data/resume.yaml) with Playwright PDF generation.
Source docs:
~/code/docs/resumeskills-evaluation.md
~/code/docs/job-search-tools-review.md
~/code/docs/magic-resume-ideas.md
~/code/docs/job-search-tools-to-evaluate.md
Tier 1: High Impact
1. Per-Application Resume Tailoring
Repo: jobsearch (new skill) + resume (YAML/PDF pipeline)
The pipeline sends the same resume PDF to every application. The infrastructure for per-JD tailoring already exists - YAML source of truth, Playwright PDF generation, pre-commit hooks. The missing piece is a skill that reads a job description, identifies keyword gaps and emphasis shifts, modifies a copy of the YAML (reorder sections, adjust bullet emphasis, inject missing keywords), and generates a tailored PDF.
ATS optimization folds into this - keyword extraction from JDs, skills reordering, and the "80% job-specific / 20% general strengths" balance. Not a separate step.
First step: Read the ResumeSkills resume-tailor/skill.md and resume-ats-optimizer/skill.md at /tmp/ResumeSkills/skills/ for their tailoring frameworks. Design a tailor-resume skill that takes a JD URL and outputs a tailored PDF.
2. JD Analysis & Match Scoring
Repo: jobsearch (enhance curate-results and research-company)
Nobody in the pipeline says "here are the 3 keywords you're missing" or "this JD has red flags." Two gaps to close:
Scoring in curate-results: Currently LLM-vibes-based selection. Replace with a weighted rubric (e.g., 40% skills match + 25% salary fit + 20% role alignment + 15% company signals) that's explainable and auditable. Move scoring criteria from prompt prose to a tunable YAML config so weights and thresholds can be adjusted without editing the skill.
Gap analysis in research-company: After selection, produce a structured candidate-vs-JD fit output - matched skills, missing keywords, red flags (vague requirements, unrealistic stack breadth, no salary). This feeds directly into resume tailoring (item 1) - if you know the gaps, you know what to emphasize.
First step: Draft the weighted scoring rubric dimensions and a job-preferences.yaml config format. Prototype scoring on 3-4 past applications to calibrate weights.
3. Stale Posting Pre-Check
Repo: jobsearch (new phase in research-company or standalone skill)
11 of 22 trouble log entries are closed or 404'd job postings discovered only after investing time in full research. A lightweight pre-check before committing to research would save massive time: HEAD request to posting URL, "this position has been filled" text detection, careers page redirect detection.
Known patterns: Greenhouse "This job is no longer available", Lever "This position has been filled", Ashby "This job posting has been closed". Real failures from the trouble log: Speakeasy (careers page 404), Glide (posting removed), Matcha.fm (domain expired), Greenline/FreightRoll/Station A (careers page gone), Updater (posting closed).
Sources: job-search-tools-to-evaluate #7
First step: Build a quick URL health checker that runs against the curated batch before research-company. Test it against the 11 known-stale URLs from the trouble log.
4. Application Outcome Tracker
Repo: jobsearch (new application-status.yaml + enhance check-email)
Zero outcome tracking across 12+ submitted applications. No rejection analysis, no success metrics, no feedback loops. After submit-application marks a job as applied in jobs.md, nothing tracks what happens next.
Lightweight approach: an application-status.yaml file with entries tracking company, role, date applied, current stage (applied → acknowledged → phone screen → technical → onsite → offer/reject/ghosted), last activity date, and notes. check-email auto-updates status when it detects stage-change signals in Gmail (interview scheduling, rejection notices, "we'd like to move forward"). A check-status skill reports metrics and flags applications gone quiet for 7+ days.
Sources: job-search-tools-to-evaluate #9
First step: Design the application-status.yaml schema. Backfill it from existing jobs.md entries and progress files. Wire check-email to update it on status-change signals.
5. Company-Branded Color Variants
Repo: resume
Each application could ship with a subtly branded PDF - Kraken's dark blue headers, Strike's teal accents. The infrastructure already exists: OKLCH CSS variables cascading through --primary, Playwright PDF generation, pre-commit hooks. The missing piece is parameterization.
Add optional accentColor to resume.yaml (OKLCH value or named preset). The generate-assets script accepts a color flag, or YAML defines named variants. Pre-commit generates mikebannister.pdf (default) plus mikebannister-kraken.pdf etc.
Sources: magic-resume-ideas #1
First step: Add an accentColor CSS variable override path in the resume app. Test with one company's brand color → generate a branded PDF.
Tier 2: Medium Impact
6. Resume Content Sharpening
Repo: resume (YAML content improvements)
Three frameworks from ResumeSkills for making bullet points stronger: better action verbs, finding hidden metrics in existing bullets, and structuring sections for maximum impact. The resume data lives in YAML, so a sharpening pass could analyze each bullet against these frameworks and propose improvements.
Specifically relevant: tech resume optimization patterns for how to present technical experience, structure a skills section, and frame open-source/side projects for SWE roles.
First step: Read all four ResumeSkills skill files at /tmp/ResumeSkills/skills/. Extract the bullet frameworks and scoring rubrics into a reference checklist. Run the current resume bullets through them and identify the weakest 5-10.
7. Interview Prep Skill
Repo: jobsearch (new skill)
No pipeline phase exists between "application submitted" and "interview happening." When check-email detects an interview invitation, there's nowhere to hand off for preparation.
A prep-interview skill would: pull the original JD and research-company brief, scrape Glassdoor interview questions for the company, generate role-specific technical and behavioral question sets, build STAR-format answers grounded in resume.yaml (with truthfulness enforcement), and optionally run mock Q&A via pairctl. Inputs: company, role, interview type (phone screen / technical / behavioral / system design).
Also covers salary negotiation prep - when check-email detects offer-stage signals, generate a negotiation strategy beyond the current mechanical salary-negotiation.md.
First step: Design the skill's input/output contract. Start with the behavioral prep path since that's most common for first-round interviews.
8. Layout Density Settings
Repo: resume
The difference between a 1-page and 2-page resume is often just font size and spacing. Currently hardcoded in CSS. Making font size, line height, and section spacing configurable in YAML means the pipeline could generate both a dense single-pager and a readable two-pager from the same content.
Add a layout section to resume.yaml with named presets: dense, comfortable, spacious. Pass values as CSS custom properties on the root element.
Sources: magic-resume-ideas #2
First step: Identify the CSS values that control density (font size, line height, section margins). Add YAML config and wire them through as CSS custom properties.
9. Cover Letter Hook Taxonomy
Repo: jobsearch (enhance write-cover-letter)
The existing cover letter skill is the most mature in the pipeline but doesn't name opening archetypes. Adding a hook type taxonomy - anecdote hook, challenge hook, mission-alignment hook, mutual-connection hook - gives the LLM writer more specific patterns to choose from per application.
Additive, not a rewrite. Layer named hook patterns and quality checklists onto the existing cover-letter-guide.md.
Sources: resumeskills-evaluation #5
First step: Read the ResumeSkills cover-letter-generator/skill.md for their hook taxonomy. Extract the named patterns and merge into cover-letter-guide.md.
10. Company Blacklist for Curate-Results
Repo: jobsearch (enhance curate-results)
No persistent blacklist of companies to skip. Companies marked [-] in jobs.md get re-evaluated if they reappear on a different board in a later search. A simple company-blacklist.yaml that curate-results checks would prevent wasting time on known-bad matches.
First step: Create company-blacklist.yaml with entries from past [-] decisions. Add a check in curate-results to skip blacklisted companies.
11. Post-Apply LinkedIn Networking
Repo: jobsearch (new skill or manual checklist)
After submitting an application, the pipeline stops. A post-apply step that finds the hiring manager or recruiter on LinkedIn and sends a personalized connection request with a note referencing the application could meaningfully increase response rates.
Could be a full network-after-apply skill using agent-browser for LinkedIn, or start as a manual checklist appended to the submit-application output.
Sources: job-search-tools-to-evaluate #4
First step: Define the manual version first - a checklist of post-apply actions. Automate later if the pattern proves valuable.
Tier 3: Nice to Have
12. Page Break Control
Repo: resume
With Playwright generating the PDF, there's no visual feedback about where page breaks land. Experience entries can split across pages. Add optional pageBreakBefore: true to section or entry types in YAML. Renders as page-break-before: always in the PDF and a subtle line in the web view.
Sources: magic-resume-ideas #3
13. Schema-Driven Form Validation
Repo: jobsearch (enhance submit-application)
Validate form field inputs against expected types and constraints before filling them, rather than discovering mismatches after submission. Borrowed from ApplyPilot's approach of schema-driven input validation and graceful recovery from unexpected form states.
The pipeline interacts with LinkedIn heavily (Easy Apply is a primary submission path) but the profile itself hasn't been systematically optimized for recruiter search or keyword visibility. A focused one-off session, not a pipeline skill.
Sources: resumeskills-evaluation #7
15. Portfolio Case Studies
Repo: resume (new pages on the site)
The resume site presents bullet-level content. Expanding 2-3 key projects into detailed case study narratives (problem, approach, outcome, tech decisions) would give hiring managers who click through more substance to evaluate.
Sources: resumeskills-evaluation #7
16. Two-Column Layout Variant
Repo: resume
A second layout option - sidebar grid with contact/skills in a narrow column and experience in a wider main area. Toggled by a YAML flag (layout: classic vs layout: sidebar). Same data, same PDF pipeline, different visual.
Sources: magic-resume-ideas #4
17. Anti-Bot Fingerprint Mitigation
Repo: jobsearch (enhance submit-application or agent-browser config)
Ashby's anti-bot system flagged 2 applications as spam (Kraken, Prompt Health). Mitigation: randomized interaction timing, mouse movement simulation, WebDriver flag suppression. Only 2 confirmed blocks so far - worth monitoring before investing heavily.
Sources: job-search-tools-to-evaluate #8
18. Section Ordering & Visibility
Repo: resume
YAML-driven section order and visibility toggles. If a role values Projects over Experience, reorder without touching components. Low effort since components already render independently. Add optional sections array to YAML with name, enabled, and order fields.
Sources: magic-resume-ideas #5
Tier 4: Investigate / Research
19. Indy AI (Network-Based Discovery)
Contra's AI career assistant that surfaces opportunities through your existing network. Different angle from board-scraping. Worth evaluating whether it works for someone not embedded in the Contra ecosystem, and what the free tier looks like.
Eyal Toledano's argument: AI boosted individual output but created a team-coordination bottleneck. Companies now need people who can verify, coordinate, and operate at higher abstraction levels. Worth evaluating whether the current resume and cover letter language emphasizes orchestration and quality assurance of AI-assisted work enough.
CLI giving agents access to Twitter, Reddit, YouTube, GitHub, LinkedIn with zero API fees. Main value-add over existing scrapectl/searchctl is LinkedIn + Reddit channels specifically - employee sentiment on Reddit, hiring manager profiles on LinkedIn.
Mike's resume spans startups (Versal, MojoTech consulting), mid-size (Vermont Mutual), and indie/open-source work. Currently presented identically regardless of whether the target is a 10-person startup or 500-person enterprise. If per-application tailoring lands (item 1), audience-specific framing rules could feed into the tailoring logic - emphasize autonomy for startups, process and scale for enterprise.
The career-changer-translator skill from ResumeSkills has transferable patterns for framing experience differently for different audiences.
Sources: resumeskills-evaluation #8
Dropped (with reasoning)
ResumeSkills repo evaluation (tools-review #1) - already fully evaluated in resumeskills-evaluation.md, all ideas absorbed above
Magic Resume tool evaluation (tools-review #2) - already fully evaluated in magic-resume-ideas.md, all ideas absorbed above
Aidan Cramer auto-submit (tools-review #4) - overlaps with existing submit-application + ApplyPilot ideas captured in items 13/17
Resume version management (resumeskills #9) - deferred until per-application tailoring ships; naming conventions can be designed then
Reference list builder (resumeskills #9) - low value, manual process is fine
Salary negotiation strategy (resumeskills #6) - existing salary-negotiation.md covers the mechanical part; strategy prep folded into item 7
Offer comparison analyzer (resumeskills #6) - cross that bridge when offers arrive