Andrej Karpathy's LLM Wiki pattern has recently gained significant attention for building a "second brain" or a small, targeted knowledge base. If you’re like me, you don't need a second brain because your first isn't even fully utilized yet (sigh).
While job hunting, I found that cherry-picking past projects and experiences consumes most of the time spent on applications. I tried describing my projects with high level descriptions into memory markdown files so that the LLM could tailor my CV better, but it tends to hallucinate on what I did. Wouldn't it be great if you could maintain a Wiki of your professional profile, add a job description, and let an LLM select the most relevant directed bullet points for your template? You simply review the LLM's entries and apply the final touches such as determining which experiences/projects gets more details and which maintains a more generalized description.
Have fun approving entries about yourself :) Feel free to improve upon what's here.
This is how my profile currently looks in Obsidian's graph view:
I built this for Obsidian and Claude Code. But you can use anything else. Just modify the CLAUDE.md to what you use. Feel free to make PRs that would add other platform supports as well.
The premise: stop re-deriving your career story on every application. Build a structured, interlinked wiki once (incrementally, over time), and let CV generation become a selection problem instead of a composition problem.
- I personally use frontier models such as Opus to run the skill and handle wiki ingestions. I tested this with a local model such as Qwen3.5-9B Q8 from unsloth with about 131072 context length to perform the codebase wiki creation and while it worked, the output was rather high-level when doing side-by-side comparison against frontier models (Opus 4.7 in my case).
- If you do want to try local models and have the hardware to do so, I believe models with high long-context comprehension, instruction following and tool-use scores would perform well. Look for maybe LongBench v2, IFEval and SWE-bench?
Step 1: Clone repository.
git clone https://github.com/Thenolypus/claude-code-cv-wiki my-career-wiki
cd my-career-wiki
claudeOn first run, ask Claude to bootstrap the wiki. There are two paths to do so:
- Path A — CV-seeded (recommended).
- Path B — Cold start.
See Wiki Setup below for a more detailed explanation.
Step 2: Install the skills for Claude. Make sure you are in Claude Code before writing this.
/plugin marketplace add Thenolypus/claude-code-cv-wiki
/plugin install claude-code-cv-wiki@claude-code-cv-wiki
To verify, run /plugin and confirm claude-code-cv-wiki appears as installed.
Step 3: Add information about yourself in the raw/ folder (see Skill usage if you are a programmer with codebases as projects) and let the knowledge base grow! :D
Path A — CV-seeded (recommended). Drop your most recent CV (PDF / .docx / .md / .tex) into raw/ first, then ask Claude to bootstrap. Claude will:
- Read the CV fully.
- Propose a default
languages:based on the CV's language and confirm it with you. This is written intoCLAUDE.md's## Configuration > languages:line and drives the CV-bullets format and the lint checks. See Languages below. - Pre-fill draft answers to the 4 calibration questions (target industries, academic vs industry framing, current seniority, geographic constraint) from what's in the CV, ask you to correct them, save to
wiki/career-intel/positioning.md. - Ingest the CV — creating initial
projects/,experience/,skills/, andeducation/pages, co-authoring## CV bulletsblocks with you per project. By the end of bootstrap you have a meaningfully populated wiki.
Path B — Cold start. If you have no CV yet, ask Claude to bootstrap without a source in raw/. It will set the language config, ask the 4 calibration questions cold, scaffold the folders, then prompt you to drop your first source.
In both paths, replace template/cv.tex with your own CV template (LaTeX, Markdown, Typst — whatever you write CVs in). The wiki workflow treats it as the single source of truth for style; only the content gets rewritten per application.
From there, the workflow is just three operations against the wiki — ingest (drop a source in raw/), target (drop a JD in jd/), query (ask a question). Full schema and conventions live in CLAUDE.md.
This wiki repo serves two purposes that don't conflict:
- A clone-to-use template. Clone the repo, point Claude Code at it, and you have a working wiki schema (
CLAUDE.md) plus the empty folder skeleton (raw/,wiki/,jd/,applications/,template/). Claude readsCLAUDE.mdon every session and follows the conventions defined there. - An installable Claude Code plugin that ships two skills used by the workflow:
codebase-wiki— run inside one of your project codebases; produces a single dense, factual markdown file describing the project, ready to drop into your wiki'sraw/for ingestion.lint— walk the wiki for structural drift (missing CV-bullets blocks, single-language variants, missing skill pages, orphan pages,index.mddrift, cross-page contradictions).
You can use either half independently — the template works without the plugin, and the plugin works against any wiki built to this schema.
The wiki supports any number of CV languages. You declare which ones in CLAUDE.md's ## Configuration > languages: line as ISO 639-1 codes:
languages: [en] # English-only (default)
languages: [en, de] # English + German (DACH region)
languages: [en, fr] # English + French (France / Belgium)
languages: [en, es] # English + Spanish (Spain / LatAm)
languages: [en, nl] # English + Dutch (Netherlands)
languages: [en, de, fr] # TrilingualEvery project's ## CV bullets block then carries one bullet per declared language per variant, tagged in uppercase (**EN:**, **DE:**, **FR:**, ...). The lint skill reads this list and flags any variant missing a declared language.
Adding a language later is supported but is a deliberate retrofit (Claude will walk every existing project page and ask you to author the new language for each variant — it never auto-translates). See CLAUDE.md § "Adding a language to an existing wiki".
codebase-wiki—cdinto a project directory you want to add to your wiki, start Claude Code, invoke the skill (e.g. "/codebase-wiki. This is a uni team project, around March 2024, check git log for dates, I did all the work on branch "my-branch"). Front-load whatever role context and dates you remember; Claude will only ask for what's missing. Output is one markdown file at the top of the project. Copy it into your wiki'sraw/folder, then ask your wiki Claude to ingest.lint—cdinto your wiki root (the directory containingCLAUDE.md), start Claude Code, invoke the skill (e.g. "/lint", "lint full" or "lint cv-bullets"). It returns a prioritized list of structural issues; it never fixes anything without your per-issue approval.
.
├── CLAUDE.md # the wiki schema — read by Claude on every session
├── KarpathyLLMWiki.md # vendored reference for the underlying pattern
├── README.md # this file
├── template/cv.tex # CV style template (replace with your own)
├── raw/ # your immutable career sources (you drop files here)
├── jd/ # job descriptions you target (you drop files here)
├── applications/ # generated CVs, one folder per application
├── wiki/ # the LLM-authored knowledge base
│ ├── projects/
│ ├── experience/
│ ├── skills/
│ ├── education/
│ └── career-intel/
├── log.md # chronological log of ingests/targets/queries/lints
├── .claude-plugin/
│ └── marketplace.json # marketplace catalog (for plugin installation)
└── plugins/
└── claude-code-cv-wiki/
├── .claude-plugin/plugin.json
└── skills/
├── codebase-wiki/SKILL.md
└── lint/SKILL.md
- The underlying pattern is Andrej Karpathy's LLM Wiki — vendored verbatim with attribution.
