Satvik Akkarajuall systems operational
← All projects

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.