add_experience
Add work experience entries to LaTeX resumes by specifying company, title, dates, and responsibilities to build professional career histories.
Instructions
Add a new work experience entry to a resume (works with modern template).
Args:
filename: Name of the resume file
company: Company name
title: Job title
dates: Employment dates (e.g., 'Jan 2020 -- Present')
bullets: List of bullet points describing responsibilities/achievements
location: Location (city, state/country) - optional
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| company | Yes | ||
| title | Yes | ||
| dates | Yes | ||
| bullets | Yes | ||
| location | No |
Implementation Reference
- src/latex_resume_mcp/server.py:459-508 (handler)The handler function for the 'add_experience' tool. Decorated with @mcp.tool(), it modifies a LaTeX resume file by inserting a new experience entry into the Experience section using regex pattern matching.@mcp.tool() def add_experience( filename: str, company: str, title: str, dates: str, bullets: list[str], location: str = "" ) -> str: """ Add a new work experience entry to a resume (works with modern template). Args: filename: Name of the resume file company: Company name title: Job title dates: Employment dates (e.g., 'Jan 2020 -- Present') bullets: List of bullet points describing responsibilities/achievements location: Location (city, state/country) - optional """ ensure_dirs() filepath = get_resumes_dir() / ensure_tex_extension(filename) if not filepath.exists(): return json.dumps({"error": f"Resume '{filename}' not found"}) try: content = filepath.read_text(encoding="utf-8") bullet_items = "\n".join([f" \\resumeItem{{{b}}}" for b in bullets]) experience_entry = f"""\\resumeSubheading {{{company}}}{{{location}}} {{{title}}}{{{dates}}} \\begin{{itemize}}[leftmargin=0.2in] {bullet_items} \\end{{itemize}}""" import re pattern = r"(\\section\{Experience\}[\s\S]*?\\begin\{itemize\}\[leftmargin=0\.15in, label=\{\}\])" match = re.search(pattern, content, re.IGNORECASE) if match: insert_pos = match.end() new_content = content[:insert_pos] + "\n" + experience_entry + content[insert_pos:] filepath.write_text(new_content, encoding="utf-8") return json.dumps({"success": True, "message": f"Added experience entry for {company}"}) else: return json.dumps({"error": "Could not find Experience section. Make sure the resume uses the modern template format."}) except Exception as e: return json.dumps({"error": f"Error adding experience: {str(e)}"})