TeXume
AI-powered resume builder that generates LaTeX/DOCX resumes
The problem
While applying for jobs I wanted to stop hand-editing my resume every time. I use Jake’s resume template, which looks great but is tedious to keep updating and re-tailoring in LaTeX.
How it started
The first version was a script. It read my details from a local JSON file and rendered a LaTeX resume to PDF. That solved my own problem, so I turned it into an application anyone could use.
What it became
- A form-driven builder. Users fill in their details in the UI and generate the same PDF.
- AI tailoring. Paste a job description, and a Gemini model on Vertex AI rewrites the resume to match it.
- A project bank for paid users. They store their projects once, and the tailoring step picks the ones most relevant to a given job description.
Architecture
The frontend is on Firebase Hosting and talks to a NestJS API on Cloud Run, backed by PostgreSQL. PDF generation is a separate Python service that fills Jinja LaTeX templates and compiles them.
That PDF service isn’t publicly reachable. The API calls it service-to-service, with two layers of protection: a Google-issued identity token checked by Cloud Run IAM, and a shared secret checked by the service itself. Configuration and secrets live in Secret Manager.
Decision and tradeoff: don’t keep the files
I don’t store finished resumes. They’re deleted automatically instead of sitting in storage buckets. What I keep is the structured data used to generate them, so any resume can be regenerated on demand.
That costs a little compute each time someone downloads again, but it keeps storage cost near zero and means personal documents don’t linger. It also makes template changes free: regenerating from data picks them up automatically.
Outcome
It’s live as a service, and it has three users. Not a growth story, but a working product I built and run end to end. I started in late March 2026 and last updated it in August 2026.