TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Tailor your resume for every job with honest AI edits, hiring-manager reviews, and a one-page lock.
ProductivityTypeScript · PythonGitHub @DanielLamboOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Edit a resume cleanly, then tailor a version for every job — without starting over.
Resumate is a LaTeX-based resume editor. Write once in a clean, ATS-friendly
template, then use AI to tailor a copy for each job posting — rewrite bullets,
shorten sections, and auto-fit to one page — while keeping the underlying
LaTeX source fully editable by hand.Read the full README ↗Edit a resume cleanly, then tailor a version for every job — without starting over.
Quick start · Features · Architecture · Deploying · Contributing
Resumate is a LaTeX-based resume editor. Write once in a clean, ATS-friendly template, then use AI to tailor a copy for each job posting — rewrite bullets, shorten sections, and auto-fit to one page — while keeping the underlying LaTeX source fully editable by hand.
Fully open source, bring-your-own-everything. Point it at your own Supabase project, your own AI provider (Groq, OpenAI, OpenRouter, or a local model), and your own TeX host. Nothing in this repo depends on the original author's cloud accounts, and no resume data is ever sent anywhere you didn't configure yourself.
This repo ships two independent runtimes that solve the same problem with different privacy trade-offs. Pick one — most contributors only need the Next.js app.
Next.js (web/) — primary | FastAPI (repo root) — legacy/local | |
|---|---|---|
| Storage | Your Supabase project (RLS-scoped rows) | Browser IndexedDB — no server storage, no accounts |
| Auth | Supabase Auth (email) | None needed |
| Best for | Deploying a real, multi-device product | Running fully local, or a minimal self-hosted demo |
| Run it | cd web && npm run dev | python run.py |
Resume templates are defined independently in each runtime — the Next.js app's live in
web/lib/resume-template.ts, FastAPI's inapp/catalog.py+app/seed/*.tex. Editing one does not update the other.
resume-builder/
├── web/ # Next.js app (primary) — editor, auth, AI actions
│ ├── app/ # Routes, server actions, API handlers
│ ├── components/ # UI
│ ├── lib/ # Supabase clients, resume templates, utilities
│ └── packages/ # @resumate/one-page-lock (PDF auto-fit engine)
├── app/ # FastAPI app (legacy/local runtime)
│ ├── routers/ # /api/ai, /api/compile, /api/ats, ...
│ ├── services/ # LaTeX parsing/compile, AI prompting, ATS heuristics
│ └── seed/ # Seed .tex templates
├── supabase/ # SQL migrations for the Next.js app's schema
├── tests/ # pytest suite for the FastAPI runtime
└── templates/ # Server-rendered HTML (FastAPI's own UI)
cd web
cp .env.example .env.local # fill in your Supabase + AI keys
npm install
npm run dev
Apply the SQL in supabase/migrations/ to your Supabase project, then add
your local/deployed URL under Supabase Auth → Redirect URLs. No AI key yet?
Run with NEXT_PUBLIC_USE_MOCK_AI=true for offline UI work.
| Variable | Required | Notes |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | yes | Your Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | yes | Publishable anon key (RLS-backed) |
NEXT_PUBLIC_SITE_URL | yes (auth) | Stable public origin for redirects |
SUPABASE_SERVICE_ROLE_KEY | recommended | Server-only; never NEXT_PUBLIC_ |
GROQ_API_KEY (or OPENAI_API_KEY / AI_API_KEY) | yes (live AI) | Server-only |
UPSTASH_REDIS_REST_URL / _TOKEN | recommended | Daily AI quota |
LATEX_COMPILE_URL | yes for PDF | Your TeX compile host |
NEXT_PUBLIC_USE_MOCK_AI | set false for prod | true = offline synthetic AI |
| Data | Where it goes |
|---|---|
| Resume LaTeX / title | Your Supabase resumes table (owner-only RLS) |
| Auth email | Your Supabase Auth |
| Vibe-edit prompt + resume text | Your configured AI provider |
| PDF compile | Your LATEX_COMPILE_URL TeX host (required in prod) |
| AI token counters | Your Upstash Redis (userId + daily count only) |
Production refuses latexonline.cc by default so resume PII is never sent to
a public third-party compiler — set LATEX_COMPILE_URL to a host you control.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # add your AI API key
python run.py
Open http://127.0.0.1:8000. Requires pdflatex for
PDF preview. Resume title, LaTeX, and version history live entirely in your
browser's IndexedDB; the server is stateless and ephemeral, used only for
AI calls and PDF compilation.
export RESUMATE_PUBLIC=1
export RESUMATE_HOST=0.0.0.0
export RESUMATE_PORT=8000
export RESUMATE_RELOAD=0
export GROQ_API_KEY=... # or OPENAI_API_KEY / AI_API_KEY
python run.py
Both runtimes call any OpenAI-compatible POST /v1/chat/completions endpoint
in JSON mode — Groq, OpenAI, OpenRouter, or a local Ollama/LM Studio shim all
work.
| Variable | Role |
|---|---|
GROQ_API_KEY or OPENAI_API_KEY or AI_API_KEY | Server-only API key |
GROQ_BASE_URL / OPENAI_BASE_URL / AI_BASE_URL | Optional base URL (default: Groq) |
RESUMATE_MODEL | Model id for that provider |
The Next.js app lives in web/, not the repo root.
web, framework Next.js.ALLOW_LATEX_ONLINE=1 in production unless you accept
sending resume PII to latexonline.cc.ruff check .
pytest -q
cd web && npm run typecheck && npm run lint && npm run test:e2e
Issues and PRs welcome — see CONTRIBUTING.md for local setup and the pre-PR checklist. Please read SECURITY.md before reporting a vulnerability.
MIT © Resumate contributors