job-resume-agent
job-resume-agent
Ein evidenzbasiertes System zur Lebenslauf-Anpassung. Angesichts einer im Browser erkannten Stellenbeschreibung und einer strukturierten Erfahrungsdatenbank, die der Benutzer kuratiert hat, erzeugt es einen ATS-lesbaren LaTeX/PDF-Lebenslauf, in dem jeder Aufzählungspunkt auf einen vom Benutzer bereitgestellten Beleg zurückführbar ist. Jede Formulierung, die das Modell abgeleitet, verallgemeinert oder umformuliert hat, wird sichtbar gekennzeichnet und muss vor dem Export vom Benutzer genehmigt werden.
Das Produkt weigert sich, etwas zu erfinden. Wenn eine geforderte Fähigkeit oder Leistung nicht durch Belege gestützt ist, sagt es das, anstatt eine zu erfinden.
Status: Proof of Concept. Das Repository enthält einen deterministischen MCP-Server, einen Beleg-Verknüpfer, einen sicheren LaTeX-Renderer, eine CLI und Tests. Es enthält noch nicht die Chrome-Erweiterung oder externe LLM-Provider-Adapter.
Quickstart
Erfordert Python 3.11+.
python -m pip install -e ".[dev]"
resume-agent tailor --bank docs/example-experience-bank.yaml --jd path/to/job-description.txt --json
resume-agent tailor --bank docs/example-experience-bank.yaml --jd path/to/job-description.txt --export --out ./outUm den MCP-Server über stdio auszuführen:
resume-agent serveFür den privaten Gebrauch setzen Sie RESUME_AGENT_BANK_PATH auf eine lokale Bank, die Ihre eigenen Informationen enthält. Bewahren Sie den ausgefüllten Lebenslauf und die private Bank unter .private/ auf; dieses Verzeichnis wird von Git ignoriert. Die eingecheckte Beispiel-Bank verwendet Platzhalter-Kontaktinformationen und ist sicher zu veröffentlichen.
Warum dieses Projekt existiert
Die meisten Tools zur „KI-Lebenslauf-Anpassung" optimieren auf Keyword-Übereinstimmung und Textfluss auf Kosten der faktischen Integrität. Sie fügen bereitwillig „führte ein Team von 10" oder „verbesserte die Latenz um 40%" hinzu, obwohl der Benutzer beides nie behauptet hat. Das ist ein Karriererisiko für den Benutzer und ein Vertrauensproblem für den Empfänger.
Dieses Projekt vertritt die gegenteilige Haltung: Das Modell ist ein Abrufer und Umschreiber über die eigenen Belege des Benutzers, kein Generator von Leistungen. Anpassung bedeutet Auswählen, Neuordnen und Umformulieren — niemals Erfinden. Siehe docs/product-requirements.md für die Akzeptanzkriterien, die dies operationalisieren.
Produktaufbau
Drei Komponenten, lose gekoppelt:
Chrome-Erweiterung. Erkennt, wenn der aktive Tab eine Stellenbeschreibung auf einer unterstützten Website ist (LinkedIn, Greenhouse, Lever, Ashby, Workday, Klartext). Bietet eine Aktion Generate Tailored Resume an. Sendet die JD an das lokale Backend; öffnet eine Überprüfungs-UI, wenn der Entwurf fertig ist.
Lokales Backend + Web-App. Besitzt die Erfahrungsdatenbank, die Anpassungspipeline, die Evidenzmatrix und den LaTeX/PDF-Renderer. Läuft standardmäßig auf
localhost. Enthält eine Überprüfungs-UI: Side-by-Side-Diff gegenüber dem Basis-Lebenslauf, Evidenzlinks pro Aufzählungspunkt, Keyword-Abdeckungs-Heatmap, Warnungen zu nicht unterstützten Behauptungen, Genehmigen/Ablehnen/Bearbeiten pro Aufzählungspunkt.Provider-Adapter (BYO-Konto). Der Benutzer verbindet sein eigenes OpenAI-, Anthropic- oder lokales (Ollama-)Konto. Wir leiten nicht über unsere Server weiter und speichern im Local-First-Modus keine Provider-Schlüssel in einer gehosteten DB — siehe
docs/security-and-privacy.md.
Die öffentliche Referenz-LaTeX-Vorlage befindet sich unter templates/resume.template.tex und dient als visuelles/strukturelles Ziel für den Renderer. Persönliche Identifikatoren (Name, E-Mail, Links, Telefon, Staatsbürgerschaft) werden als Makros in der Vorlage deklariert, sodass sie durch ein privates Overlay überschrieben werden können. Die eigene Lebenslaufquelle des Maintainers, die echte personenbezogene Daten enthält, befindet sich unter .private/alan-resume-source.tex und ist git-ignoriert — behandeln Sie sie als kanonisches Arbeitsbeispiel dafür, wie eine ausgefüllte Vorlage aussieht, nicht als Datei, die mit dem Repository ausgeliefert wird. Eine minimale Erfahrungsdatenbank, die aus dieser privaten Quelle abgeleitet ist, befindet sich unter docs/example-experience-bank.yaml.
Nicht-Ziele (v1)
Keine Unterstützung beim Erfinden. Kein „Schlagen Sie einen Aufzählungspunkt vor, den Sie vielleicht getan haben." Kein „Füllen Sie eine plausible Metrik aus."
Kein gehostetes Multi-Tenant-SaaS. MVP ist Local-First. Cloud-Synchronisierung ist aufgeschoben (siehe Roadmap).
Kein automatisches Bewerben. Wir reichen keine Bewerbungen ein, schreiben keine Recruiter an und verfassen keine Anschreiben. Außerhalb des Umfangs.
Kein Scraping von geschützten Jobbörsen. Die Erweiterung liest die aktuell geöffnete Seite in der eigenen Browsersitzung des Benutzers; sie crawlt nicht.
Keine Speicherung von Provider-API-Schlüsseln serverseitig in v1. Schlüssel liegen im OS-Keychain oder im lokalen Speicher der Erweiterung.
Kein Lebenslauf-„Score". Numerische ATS-Scores sind Pseudowissenschaft ohne das ATS im Prozess. Wir zeigen Keyword-Abdeckung und Evidenzabdeckung, keine Note.
Kein LinkedIn-Scraping zur Befüllung der Erfahrungsdatenbank. Import ist manuell oder nur aus vom Benutzer hochgeladenen PDF/LaTeX.
Dokumentationsübersicht
Datei | Zweck |
User Stories, Akzeptanzkriterien, Nicht-Ziele, UX-Prinzipien | |
Systemdiagramm, Komponenten, Provider-Adapter-Schnittstelle, LaTeX-Validierung | |
Schema der Erfahrungsdatenbank, Evidenzlinks, Schema des angepassten Lebenslauf-Artefakts | |
Bedrohungsmodell, Begründung der Erweiterungsberechtigungen, Schlüsselspeicherung, Datenflüsse | |
Phasenweiser Bauplan von M0 (Skelett) bis M5 (Multi-User-Cloud) | |
Grundlegendes Architektur-Entscheidungsprotokoll | |
Beispiel-Bank, die nur aus der privaten | |
Entwicklungsprinzipien, Codierungsstandards, Review-Haltung |
Repository-Struktur (Ziel)
job-resume-agent/
├── templates/
│ └── resume.template.tex # public, PII-free reference LaTeX template
├── .private/ # git-ignored; maintainer's real resume source lives here
├── README.md
├── CONTRIBUTING.md
├── docs/ # (this repo, today)
├── apps/
│ ├── extension/ # Chrome MV3 extension (TS)
│ ├── backend/ # FastAPI (Python) + SQLite
│ └── web/ # React review UI
├── packages/
│ ├── providers/ # provider adapter interface + impls
│ ├── tailoring/ # retrieval, rewrite, evidence-matrix builder
│ ├── latex/ # renderer, validator, PDF pipeline
│ └── schema/ # shared Zod/Pydantic schemas
└── tests/
└── fixtures/ # JD samples, expected evidence matricesNur templates/resume.template.tex, README.md, CONTRIBUTING.md und docs/ existieren heute im getrackten Baum. .private/ ist im lokalen Checkout des Maintainers vorhanden, ist aber git-ignoriert und wird nicht ausgeliefert. Der Rest ist das Ziel von Phase M1 (siehe Roadmap).
Festgehaltene Annahmen
Dies sind die vernünftigen Annahmen, die dieses Design ohne Rückfrage beim Benutzer trifft. Ändern Sie sie, indem Sie ein ADR eröffnen.
Local-First, Single-User-MVP. Cloud/Multi-User ist ein v2-Thema. Siehe
docs/adr/001-local-first-provider-agnostic.md.BYO-Provider-Konto. Wir stellen kein LLM als Dienst bereit. Der Benutzer wählt OpenAI, Anthropic oder Ollama; wir rufen es mit seinen Anmeldedaten auf.
LaTeX ist die Quelle der Wahrheit für das angepasste Artefakt. PDF ist ein Build-Produkt. Die Basisvorlage des Benutzers (
templates/resume.template.tex, optional überlagert durch eine private Datei wie.private/alan-resume-source.tex) definiert den Layout-Rahmen.Python-Backend, TypeScript-Erweiterung + Web-UI. Entspricht dem ML/LaTeX-Ökosystem im Backend und der Browser-Plattform im Frontend.
Zuerst Chrome. Firefox/Safari können über MV3-Kompatibilität folgen, sobald die Oberfläche stabil ist.
Die Bank gehört dem Benutzer. Der Benutzer kann die gesamte Bank jederzeit als YAML exportieren und die lokale DB mit einem Befehl löschen.
Jeder generierte Aufzählungspunkt trägt eine Herkunft. Kein Aufzählungspunkt erreicht das PDF ohne mindestens eine
evidence_id-Referenz im angepassten Lebenslauf-Artefakt.
Offene Fragen
Verfolgt in docs/roadmap.md#open-questions.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Tailor resumes, generate cover letters, render CVs as PDF, and browse 22+ templates.
Turn a description into a shareable, editable PDF — invoices, certificates, reports, resumes.
A personal RAG database you build from chat, so AI creates work that sounds like you.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/Bao-and-Banh-Mi/job-resume-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server