Resume Auto-Rewriter Pipeline: Personalized Resumes, Instantly

The Resume Auto-Rewriter is a fully automated, stateless system that tailors resumes to match specific job descriptions—all triggered by a simple email.

How it works:

  1. Email Trigger
    Registered members of the AABA send a job description in the content of an email, to the address resume_rreck@aab-ai.org. The system captures the sender’s email and the job posting from the email’s content.
  2. Processing Begins
    A Procmail rule launches the pipeline. A unique working directory is created based on the current UNIX timestamp, isolating the session.
  3. Input Handling
    • The job description is stored as job_req.txt
    • The sender’s email is saved as sender.txt
  4. Reference Materials
    • A master resume (resume.txt, markdown) is used as the base
    • A transformation prompt (resume_prompt.txt) guides the rewriting process
  5. LLM-Powered Rewrite
    A Large Language Model processes the resume and job description to generate a tailored markdown version, saved as response.txt.
  6. PDF Generation
    The response is converted to a professionally styled PDF using Pandoc and custom Latex.
  7. Delivery
    The new resume is emailed back to the sender, with the PDF attached. Each invocation is logged for traceability.

Key Features:

  • Stateless and reproducible
  • Human-readable audit trail per run
  • Easy to extend and debug
  • Outputs clean, professional resumes in PDF format

This pipeline brings precision, personalization, and automation to resume tailoring—powered by AI, with zero friction.

  1. Email Received: An email is sent to resume_rreck@aab-ai.org. The body contains a job description. The sender’s address is extracted.
  2. Procmail Triggered: A procmail rule is triggered, invoking a shell script (e.g., resume_handler.sh).
  3. Working Directory Created: The script creates a directory using the current UNIX timestamp (e.g., ~/1711902342/). This becomes the isolated workspace for that invocation.
  4. Input Captured:
    • The job description is saved as ~/<EPOCH>/job_req.txt
    • The sender’s address is saved as ~/<EPOCH>/sender.txt
  5. Static Files Referenced:
    • The resume to be adapted is loaded from ~/resume.txt (already in markdown format)
    • The transformation prompt is read from ~/resume_prompt.txt
  6. Chat Completions API Called:
    • The script constructs a JSON payload using:
      • system message: contents of resume_prompt.txt
      • user message: contents of job_req.txt
    • The request is sent via curl to the OpenAI API
    • The resume (resume.txt) is included inline in the prompt if needed
  7. Output Stored:
    • The LLM’s response (in markdown format) is saved to ~/<EPOCH>/response.txt
  8. PDF Generation:
    • The markdown response is processed with pandoc using a stylesheet
    • Command: pandoc ~/<EPOCH>/response.txt -o ~/<EPOCH>/resume.pdf --css ~/simple.css
    • The resulting PDF is saved in the working directory
  9. Email Sent:
    • The generated PDF is attached to an email sent back to the sender using the address stored in sender.txt
    • The directory serves as an audit trail for every run

This pipeline is entirely stateless, reproducible, debuggable, and extensible. Each user’s resume lives at a fixed path, each job request is captured in isolation, and the tailored resume is returned in professional PDF format.