quantjobs
Allows scraping and ingesting job postings from Greenhouse job boards for tracking quant roles.
Enables generation of LaTeX-based PDF CVs, tailoring them to specific job descriptions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@quantjobstailor my CV for the best matching job"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
QuantJobs
A terminal app for hunting quant roles and managing a tailored LaTeX CV — with a Claude MCP server so you can drive the whole thing in conversation.
It does four things:
Finds jobs — scrapes stable public job boards (Greenhouse/Lever) for London quant roles, or lets Claude web-search and ingest jobs for you via MCP.
Scores & curates — a fit score (0–100) per job, bucketed into Strong match / Stretch / Long shot, plus star ★ and archive. The scorer is deliberately optimistic about skills you're learning, so genuine stretch roles surface instead of being filtered.
Builds your CV — generates a LaTeX → PDF CV from a single source of truth (
profile.yaml), either as your base CV or tailored to a specific job. Tailoring only reorders and selects your real experience — it never invents anything. If a job wants a skill you don't have, it adds a pending project (with an honest time estimate) and flags the skill to learn instead of fabricating a bullet.Spots trends — aggregates skill demand across the jobs you're tracking and flags the in-demand skills you're missing (e.g. "C++ in 20% of roles — learn it").

Setup
Prereqs: uv and a LaTeX engine (latexmk/xelatex, e.g. MacTeX
or BasicTeX — already on this machine).
uv sync
uv run quantjobs init # create the DB + seed your CV profile
uv run quantjobs scrape # pull London quant jobs from the configured firms
uv run quantjobs # launch the TUIData (DB, your editable profile.yaml, generated CVs) lives in ./data/ by default.
Override with QUANTJOBS_HOME=/some/path.
Related MCP server: JobSpy MCP Server
The TUI
uv run quantjobs opens the dashboard. Left = job list, right = detail (fit %, the skills you
have vs miss, and the job description).
Key | Action | Key | Action |
| search (Enter apply, Esc clear) |
| skill trends screen |
| star / unstar |
| pending projects screen |
| archive |
| skills gap screen |
| generate tailored CV for this job |
| your skills profile |
| open the last generated CV (PDF) |
| cycle filter (active/★/strong/stretch/all) |
| run the scrapers |
| reload · |
CV management
Your CV is defined entirely by data/profile.yaml (seeded from your current CV). Edit it to
change anything. The LaTeX template is quantjobs/cv/template.tex — drop your own .tex into
data/template.tex to override it.
uv run quantjobs cv --base # your standard CV
uv run quantjobs cv --job 42 --stretch aggressive --open--stretch (conservative | balanced | aggressive) controls how hard the tailoring leans
into reach roles: it reorders bullets/skills to surface what the job asks for, and in
aggressive mode selects the strongest few bullets per role. It never adds experience you
don't have — missing skills become pending projects + flags. Generated CVs land in
data/output/. The template is a dense one-page modern-sans design (Helvetica Neue via xelatex).
Building a CV is best done as a conversation through the MCP (below): Claude drafts a tailored
CV for a job, you refine the bullets/order/summary together, then render — see cv_draft_* tools.
Adding job sources
Edit quantjobs/scrapers/firms.yaml (or data/firms.yaml to override). A firm's Greenhouse/Lever
token is the slug in its careers URL:
location_filter: London # applied to every firm; set "" for all locations
firms:
- {name: Jane Street, type: greenhouse, token: janestreet}
- {name: DRW, type: greenhouse, token: drweng}
- {name: Some Fund, type: lever, token: somefund}uv run quantjobs scrape --list # show configured sources
uv run quantjobs scrape --source "Jane Street" # one firm
uv run quantjobs trends # skill demand + flags to learn
uv run quantjobs gap # missing skills + suggested projectseFinancialCareers HTML scraping is included as a best-effort fallback (--source efc) but the
robust paths are the JSON boards above and Claude-driven ingestion below.
Talk to it: the Claude MCP server
Register the server so Claude can search, analyse and act on your job DB in conversation:
claude mcp add quantjobs -- uv run --directory "$(pwd)" quantjobs-mcp{
"mcpServers": {
"quantjobs": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/quantjobs", "quantjobs-mcp"]
}
}
}Note: Claude Desktop may not inherit your shell PATH; if CV compilation fails, ensure
/Library/TeX/texbin is on PATH for the server process.
Then just ask Claude things like:
"Find London quant-developer roles and add them" → web search →
add_jobs"What in-demand skills am I missing?" →
analyze_trends+skills_gap_report"Which firms are hiring for C++?" →
run_query(read-only SQL over the DB)"Star 42 and add a pending project to learn kdb+" →
star_job+add_pending_project"I finished the order-book project — mark C++ as a skill I have" →
add_or_update_skill
Build a CV conversationally (the recommended way):
"Build my CV for job 107" →
cv_draft_create(Claude shows the proposed summary, the selected/reordered bullets, and the skills) → "tighten the second UBS bullet and lead with the ML one; drop the Excel bullet" →cv_draft_update(re-shows) → "render it" →cv_draft_render→ PDF. Drafts persist between messages, so you can iterate. Claude only rephrases your real experience (same facts/metrics) — it never invents anything.
29 tools are exposed. run_query is restricted to a single read-only SELECT/WITH on a
read-only connection, so Claude can freely explore patterns without being able to mutate data
except through the explicit, audited tools.
Useful tables for run_query: jobs, job_skills(job_id, skill), skills_profile,
pending_projects, skill_flags, cv_versions, saved_searches.
Development
uv run pytest # test suite
uv run ruff check . # lintLayout: core data layer (db, repo, models, ingest, fit), cv/ (template +
generator + compile), scrapers/, analysis/ (trends, skills gap), tui/, mcp_server/.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Kav-png/quantjobs'
If you have feedback or need assistance with the MCP directory API, please join our Discord server