Resume Fine-Tuning (LaTeX / Docker)

Tailor your Overleaf resume to a specific job description, compile it safely in a sandbox, and deliver the PDF to your chat.

Setup

  • Export your Overleaf resume as a zip. Extract it into ~/resume-templates/<name>/.
  • The root .tex file is auto-detected; override with main.tex if needed.
  • Make sure Docker is running — Scuba uses texlive/texlive:latest to compile.
bash
~/resume-templates/
├── jake/
│ ├── main.tex
│ ├── sections/
│ │ ├── experience.tex
│ │ └── projects.tex
│ └── resume.pdf # last compile
└── deedy/
└── main.tex

Use it

bash
you → /resume tailor jake "SRE intern at Cloudflare, Golang + Kubernetes + observability"
bot → editing main.tex · compiling · 12s
bot → resume_jake_cloudflare.pdf [preview] [send]

How the edit works

  • The LLM receives your .tex sources + the JD.
  • It emits a diff — not a full rewrite — so formatting is preserved.
  • The diff is applied, the project is mounted read-only into a Docker container, and latexmk compiles it.
  • The output PDF is returned; the edited sources are kept under ~/resume-templates/<name>/.runs/<timestamp>/.

The sandbox

The container runs with:

bash
docker run --rm \
--network=none \
--memory=1g --cpus=1 \
--read-only \
--tmpfs /tmp \
-v $PROJECT:/work:ro \
-v $OUT:/out:rw \
texlive/texlive:latest \
latexmk -pdf -interaction=nonstopmode -outdir=/out /work/main.tex

Why bother with Docker?

LaTeX can run arbitrary shell via \write18. Running it in a no-network, read-only container means a bad template can't exfil data or poke your host.

Transparency

Every edit pass writes to llm_trace.log, including the exact diff applied. If the bot rewrote a bullet you liked, revert from the trace directly.

bash
studentsync resume history jake