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
.texfile is auto-detected; override withmain.texif needed. - Make sure Docker is running — Scuba uses
texlive/texlive:latestto compile.
bash
~/resume-templates/├── jake/│ ├── main.tex│ ├── sections/│ │ ├── experience.tex│ │ └── projects.tex│ └── resume.pdf # last compile└── deedy/ └── main.texUse it
bash
you → /resume tailor jake "SRE intern at Cloudflare, Golang + Kubernetes + observability"bot → editing main.tex · compiling · 12sbot → resume_jake_cloudflare.pdf [preview] [send]How the edit works
- The LLM receives your
.texsources + 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
latexmkcompiles 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.texWhy 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