[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-83667":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":9,"trendingCount":15,"starSnapshotCount":15,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},83667,"ai-job-search","MadsLorentzen\u002Fai-job-search","MadsLorentzen","AI-powered job application framework built on Claude Code. Fork it, fill in your profile, and let Claude evaluate jobs, tailor CVs, write cover letters, and prepare you for interviews.",null,"TypeScript",3158,1364,24,1,0,588,594,1764,111.41,"MIT License",false,"master",[],"2026-06-12 04:01:41","\u003Cp align=\"center\">\n  \u003Cimg src=\"claude_animation.gif\" alt=\"Claude Job Search Assistant\" width=\"200\">\n\u003C\u002Fp>\n\n# AI Job Search\n\nAn AI-powered job application framework built on [Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code). Fork it, fill in your profile, and let Claude evaluate job postings, tailor your CV, write cover letters, and prepare you for interviews.\n\n## What this is\n\nA structured workflow that turns Claude Code into a full-stack job application assistant. The core workflow (self-profiling, fit evaluation, and the drafter-reviewer application pipeline) is **language- and country-agnostic**. The job portal search skills are built for the Danish market (Jobindex, Jobnet, Akademikernes Jobbank, etc.), but the pattern is designed to be swapped for your local job boards.\n\n```\n\u002Fsetup          \u002Fscrape              \u002Fapply \u003Curl>\n  |                |                     |\n  v                v                     v\nFill in        Search job           Evaluate fit\nyour profile   portals              Score & recommend\n  |                |                     |\n  v                v                     v\nProfile        Present matches      Draft CV + Cover Letter\nfiles ready    with fit ratings     (LaTeX, tailored)\n                   |                     |\n                   v                     v\n               Pick a match         Reviewer agent critiques\n               -> \u002Fapply            -> Revise -> Final output\n```\n\nThe framework encodes career guidance best practices, including structured evaluation criteria, forward-looking cover letter framing, and optional salary benchmarking.\n\n## Prerequisites\n\n- [Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code) (CLI)\n- Python 3.10+\n- [Bun](https:\u002F\u002Fbun.sh) (for Danish job search CLI tools)\n- LaTeX distribution with `lualatex` and `xelatex`: [TeX Live](https:\u002F\u002Ftug.org\u002Ftexlive\u002F) or [MiKTeX](https:\u002F\u002Fmiktex.org\u002F). The CV compiles with `lualatex` (pdflatex often fails on modern MiKTeX installs with `fontawesome5` font-expansion errors); the cover letter compiles with `xelatex` because `cover.cls` requires `fontspec`.\n\n## Quick start\n\n### 1. Fork and clone\n\n```bash\ngh repo fork MadsLorentzen\u002Fai-job-search --clone\ncd ai-job-search\n```\n\n### 2. Install job search tools\n\n```bash\ncd .agents\u002Fskills\u002Fjobbank-search\u002Fcli && bun install && cd ..\u002F..\u002F..\u002F..\ncd .agents\u002Fskills\u002Fjobdanmark-search\u002Fcli && bun install && cd ..\u002F..\u002F..\u002F..\ncd .agents\u002Fskills\u002Fjobindex-search\u002Fcli && bun install && cd ..\u002F..\u002F..\u002F..\ncd .agents\u002Fskills\u002Fjobnet-search\u002Fcli && bun install && cd ..\u002F..\u002F..\u002F..\n```\n\n### 3. Set up your profile\n\n```bash\nclaude\n# Then inside Claude Code:\n\u002Fsetup\n```\n\n`\u002Fsetup` offers three paths: read your `documents\u002F` folder if you have one populated (CV PDF, LinkedIn export, diplomas, reference letters, past applications), import a single CV pasted in chat, or walk through an interview. It auto-detects what you have and asks. Documents-folder mode is idempotent and safe to re-run as you add more material; see `documents\u002FREADME.md` for the layout.\n\n### 4. Search for jobs\n\n```bash\n\u002Fscrape\n```\n\nThis searches multiple job portals for positions matching your profile, deduplicates results, and presents them sorted by fit. Pick a match to run `\u002Fapply` on it directly.\n\n### 5. Apply to a job\n\n```bash\n\u002Fapply https:\u002F\u002Fjobindex.dk\u002Fjob\u002F1234567\n```\n\nIf the URL can't be fetched (some job portals block automated access), you can paste the job description directly instead:\n\n```bash\n\u002Fapply \u003Cpaste the full job description here>\n```\n\nThis runs the full workflow: evaluate fit, draft CV + cover letter, review with a second agent, revise, and present the final output.\n\n## Other commands\n\n`\u002Fsetup`, `\u002Fscrape`, and `\u002Fapply` form the core workflow. Two more commands extend it once your profile is in place:\n\n- **`\u002Fexpand`** enriches your profile by scanning public sources you've already linked in it (GitHub repos, portfolio site, Kaggle, Google Scholar) and looking up syllabi for named courses and certifications. Discovered competencies are added to your profile with a source tag. Useful right after `\u002Fsetup` to surface skills that documents alone don't make explicit.\n- **`\u002Fupskill`** analyzes the gap between your profile and your tracked job postings (or a single posting via `\u002Fupskill \u003CURL>`). Produces a prioritized heatmap of skill gaps and a learning plan with web-searched study resources and time estimates. Useful for career planning between applications.\n\n`\u002Freset` is also available, see [Starting over](#starting-over) below.\n\n## File structure\n\n```\nai-job-search\u002F\n├── CLAUDE.md                          # Main candidate profile + workflow rules\n├── .claude\u002F\n│   ├── commands\u002F\n│   │   ├── apply.md                   # \u002Fapply workflow (drafter-reviewer)\n│   │   ├── setup.md                   # \u002Fsetup onboarding (documents folder, CV import, or interview)\n│   │   ├── expand.md                  # \u002Fexpand competency enrichment from documents and online presence\n│   │   └── reset.md                   # \u002Freset wipe profile data or documents folder\n│   ├── skills\u002F\n│   │   ├── job-application-assistant\u002F  # Core application skill\n│   │   │   ├── SKILL.md               # Skill definition\n│   │   │   ├── 01-candidate-profile.md # Your education, experience, skills\n│   │   │   ├── 02-behavioral-profile.md# PI\u002FDISC\u002Fpersonality assessment\n│   │   │   ├── 03-writing-style.md    # Tone, structure, do's and don'ts\n│   │   │   ├── 04-job-evaluation.md   # Scoring framework for job fit\n│   │   │   ├── 05-cv-templates.md     # LaTeX CV structure + tailoring rules\n│   │   │   ├── 06-cover-letter-templates.md # LaTeX cover letter templates\n│   │   │   └── 07-interview-prep.md   # STAR examples + interview framework\n│   │   ├── job-scraper\u002F               # Job search orchestration\n│   │   └── upskill\u002F                   # \u002Fupskill skill gap analysis and learning plan\n│   └── settings.local.json            # Claude Code permissions\n├── .agents\u002Fskills\u002F                    # Job portal CLI tools (Denmark)\n│   ├── jobbank-search\u002F                # Akademikernes Jobbank\n│   ├── jobdanmark-search\u002F             # Jobdanmark.dk\n│   ├── jobindex-search\u002F               # Jobindex.dk\n│   └── jobnet-search\u002F                 # Jobnet.dk (government portal)\n├── cv\u002F\n│   └── main_example.tex               # moderncv LaTeX template\n├── cover_letters\u002F\n│   ├── cover.cls                      # Custom cover letter LaTeX class\n│   └── OpenFonts\u002F                     # Lato + Raleway fonts\n├── documents\u002F                         # Career source materials for \u002Fsetup Path A and \u002Fexpand\n│   ├── README.md                      # Folder layout instructions\n│   ├── cv\u002F                            # Master CV (PDF or .tex)\n│   ├── linkedin\u002F                      # LinkedIn profile export (PDF)\n│   ├── diplomas\u002F                      # Degree certificates and transcripts\n│   ├── references\u002F                    # Reference letters\n│   └── applications\u002F                  # Past application records (\u003Ccompany>_\u003Crole>\u002F)\n├── salary_lookup.py                   # Salary benchmarking tool (BYO data)\n├── tools\u002F\n│   ├── convert_salary_excel.py        # Convert salary Excel to JSON\n│   └── README_SALARY_TOOL.md          # Salary tool setup instructions\n├── job_scraper\u002F                       # Scraper state (seen jobs, results)\n├── upskill\u002F                           # \u002Fupskill report output (markdown reports per run)\n├── job_search_tracker.csv             # Application tracking spreadsheet\n└── SETUP.md                           # Detailed setup guide\n```\n\n## How `\u002Fapply` works\n\nThe `\u002Fapply` command runs a **drafter-reviewer workflow** with mandatory PDF compilation:\n\n1. **Parse** the job posting (URL or text)\n2. **Evaluate fit** against your profile (skills, experience, culture, location, career alignment)\n3. **Draft** a tailored CV and cover letter in LaTeX\n4. **Spawn a reviewer agent** that researches the company and critiques the drafts\n5. **Revise** based on the reviewer's feedback\n6. **Compile and inspect** both PDFs: lualatex for the CV, xelatex for the cover letter. Claude reads the rendered pages and iterates on the LaTeX until the CV is exactly 2 pages with no orphaned entry titles, and the cover letter is exactly 1 page with the signature visible and fonts consistent.\n7. **Present** the final output with a verification checklist\n\nAll claims in the CV and cover letter are verified against your actual profile. The system never fabricates skills or experience.\n\n### What makes this workflow different\n\n- **PDF verification loop.** Most LaTeX-resume templates produce \"looks fine in the .tex\" output that breaks in the PDF: job titles orphan to the next page, cover letters spill onto page 2, bullet fonts silently fall back to the body font. The `\u002Fapply` command compiles and visually inspects every PDF and applies targeted fixes (`\\needspace`, `\\enlargethispage`, font-matching wrappers for list items) until the layout is clean. This runs automatically on every application.\n- **Relevance-weighted CV cutting.** When a CV overflows 2 pages, the workflow does not cut mechanically from the \"oldest\" section. It scores each candidate line by (a) relevance to the target posting, (b) uniqueness in the document, and (c) whether the cover letter depends on it, and cuts the lowest-total-score line first. An older-role bullet that hits posting keywords survives ahead of a recent-role bullet that does not.\n- **Drafter-reviewer separation.** The drafter writes; a second Claude agent, spawned with a fresh context, researches the company and critiques the drafts. The drafter then revises. This catches missed keywords, weak framing, and generic language that a single pass often leaves in.\n- **Token-efficient reviewer dispatch.** The reviewer agent receives drafts inline rather than re-reading them, and the verification checklist runs once at the end of the workflow rather than being duplicated by both agents. Note: the new compile-and-inspect step in Step 5 spends some of those savings on PDF rendering and layout iteration — the workflow trades some end-to-end token cost for a real reduction in broken PDFs reaching the user.\n\n## Customization\n\n### Which files to edit manually\n\nIf you prefer editing files directly instead of using `\u002Fsetup`:\n\n| File | What to change |\n|------|---------------|\n| `CLAUDE.md` | Your full profile (name, education, experience, skills, goals) |\n| `01-candidate-profile.md` | Structured version of your CV data |\n| `02-behavioral-profile.md` | Your behavioral assessment or self-assessment |\n| `04-job-evaluation.md` | Skill match areas, career goals, motivation filters |\n| `05-cv-templates.md` | Profile statement templates for different role types |\n| `07-interview-prep.md` | Your STAR examples from actual experience |\n| `search-queries.md` | Job search queries for your skills and location |\n\n### Updating your search queries\n\nAs your priorities evolve, you can reconfigure just the job search without re-running the full profile setup:\n\n```\n\u002Fsetup --section search\n```\n\nThis re-runs the search configuration interview: which roles to target, which skills to search for, which locations, and which portals. It also suggests role types you may not have considered based on your profile.\n\n### LaTeX templates\n\nThe CV uses [moderncv](https:\u002F\u002Fctan.org\u002Fpkg\u002Fmoderncv) (banking style). The cover letter uses a custom `cover.cls` with Lato\u002FRaleway fonts. You can replace these with your own templates; just update the guidance in `05-cv-templates.md` and `06-cover-letter-templates.md`.\n\n### Job search tools\n\nThe four CLI tools in `.agents\u002Fskills\u002F` are specific to the **Danish job market** (Jobbank, Jobdanmark, Jobindex, Jobnet). They demonstrate the pattern for building job portal integrations. If you're in a different country, you can build equivalent tools for your local job portals using the same structure.\n\n### Salary benchmarking\n\nThe salary tool works with any salary data you provide (union statistics, Glassdoor exports, personal research, etc.). See `tools\u002FREADME_SALARY_TOOL.md` for the expected format and setup. If you don't have salary data, the salary step is simply skipped.\n\n### Starting over\n\nTo wipe your profile data and start fresh:\n\n```\n\u002Freset profile    # clears skill files, preserves framework rules\n\u002Freset documents  # deletes files from documents\u002F folder\n\u002Freset all        # both\n```\n\n`\u002Freset` shows exactly what will be deleted and requires you to type `RESET` to confirm. Nothing is deleted until you do.\n\n## Tips for better results\n\n### Profile depth matters\n\nThe single biggest factor in output quality is how much detail you put into your profile. A thin profile produces generic applications; a detailed one enables genuinely tailored results.\n\n- **Role descriptions:** Don't just list job titles. Describe what you actually did in each position: specific projects, tools used, responsibilities, and measurable achievements. The more material you provide, the more precisely the system can reframe your experience for different roles.\n- **Skills in context:** Instead of listing \"Python\" or \"project management,\" describe how and where you applied them. \"Built ML pipelines for customer churn prediction in Python using scikit-learn\" gives the system far more to work with than \"Python, machine learning.\"\n- **All onboarding paths work:** Whether you point `\u002Fsetup` at your `documents\u002F` folder, paste a single CV, or walk through the interview, the principle is the same: richer input produces sharper output.\n\n### Career path discovery\n\nThe framework supports two distinct modes of job searching:\n\n- **Explicit targeting:** You know which roles or sectors you want. The system helps refine and prioritize based on fit.\n- **Latent opportunity discovery:** By analyzing your full history (not just job titles, but the actual work you did), the system can surface career paths you haven't considered. Transferable skills that map to unexpected industries, patterns in what you enjoyed or excelled at, or emerging roles that combine your domain expertise with new technology.\n\nTo get the most from this, invest time during `\u002Fsetup` in describing not just your experience, but what energized you, what drained you, and what you'd want more of. This context directly shapes how the system evaluates fit and which roles it surfaces during `\u002Fscrape`.\n\n## Acknowledgements\n\n- [Mikkel Krogholm](https:\u002F\u002Fgithub.com\u002Fmikkelkrogsholm) ([skills repo](https:\u002F\u002Fgithub.com\u002Fmikkelkrogsholm\u002Fskills)) for the job search CLI skills\n- Built with [Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code) by [Anthropic](https:\u002F\u002Fanthropic.com)\n\n## License\n\nMIT\n",2,"2026-06-11 04:11:27","high_star"]