Resume tailoring · self-hosted

Tailor every resume.
Apply on your terms.

Paste a job URL. Rendure scrapes the posting, tailors your resume, runs an automated QA pass, and stores every run in Postgres. It never submits anything — you review the version and the QA notes, then apply yourself.

DOCKER COMPOSE UP YOUR KEYS, YOUR DB ZERO TELEMETRY
What is Rendure

A tailoring pipeline you actually own.

Rendure turns a job posting into a tailored resume — and a paper trail you can audit.

Point it at a job URL and a chain of small, single-purpose agents takes over: one scrapes the posting, one rewrites your resume against it, one grades the result, and a final one hands you a version to review. Each agent does exactly one job, writes what it learned to the database, and steps aside for the next.

There's no shared cloud and no account to create. It runs on your machine, talks to language models through your own OpenRouter key, and records every job, resume version, QA score, and pipeline event in a Postgres database you control — nothing tucked away in a vendor's backend.

Crucially, it stops at the resume. Rendure never clicks "apply." It does the tedious tailoring and quality checks, then leaves the judgment — and the submit button — to you.

SPEC
Runtime
Python 3.12
Storage
PostgreSQL
Models
via OpenRouter
Interface
Web + SSE
Export
RenderCV PDF
Deploy
Docker Compose
License
MIT
The pipeline

How it works

A four-agent loop runs the whole thing — streamed to your screen over server-sent events. No black box: every step is logged, scored, and stored.

01Paste URLDrop a job-posting link into the composer. Job Scout scrapes the title, requirements, and keywords.
02TailorResume Tailor rewrites bullets, surfaces matching skills, and aligns seniority language to the role.
03QA passQuality Analyst scores the draft against the JD across 4 weighted dimensions, gated at 0.92.
04Review & exportYou read the version + gap notes, then export a clean RenderCV PDF. You decide where it goes.
The QA pass, in detail

Every draft is scored, not guessed.

The Quality Analyst grades each tailored resume against the job description across four dimensions. A draft only passes when the weighted composite clears the threshold and the structure check holds — otherwise it loops back for another tailoring pass.

Keyword match 0.40

Fraction of the JD's keywords and required skills that actually appear in the resume.

Weight · 0.40
Experience match 0.35

How many of the role's responsibilities are backed by real bullet points.

Weight · 0.35
Seniority match 0.15

Whether the tone and scope of the resume align with the role's level.

Weight · 0.15
Structure GATE

All required sections present, no placeholders. A break here forces the whole score to zero.

Gate · +0.10
# structure_valid = false forces composite to 0.000 composite = keyword·0.40 + experience·0.35 + seniority·0.15 + 0.10 pass = composite ≥ 0.92 AND structure_valid
By the numbers

Built to be boring & honest.

GATED
QA THRESHOLD
0.92
composite gate
LOCAL
SELF-HOSTED
100%
your machine
BY DESIGN
AUTO-SUBMITS
0
you always decide
PYTHON
AGENT PIPELINE
4
scout · tailor · qa · confirm
0auto-submits

Rendure never applies for you.

This is the boundary, and it's deliberate. Rendure prepares tailored resume versions and QA notes — nothing leaves your machine, and nothing gets submitted to an employer. You read the diff, you check the gaps, you decide where and when to apply. The robot does the busywork; the judgment stays yours.

NO AUTO-APPLY NO HIDDEN UPLOADS YOU REVIEW EVERY VERSION
What's inside

Everything runs on your box.

Encrypted key storage

Your OpenRouter API key is encrypted at rest. It powers the agents and never leaves your host.

OPENROUTERAES

Postgres audit trail

Every run, version, score, and gap is written to Postgres. Full history, queryable, yours forever.

POSTGRESAUDIT

Live SSE progress

Watch each agent work in real time over server-sent events — the same feed that streams to the dashboard.

SSEREALTIME

RenderCV PDF export

Approved versions render to clean, ATS-safe PDFs via RenderCV. Typeset like a document, not a webpage.

RENDERCVPDF

Telegram notifications

Optional pings when a run finishes or a QA pass fails. Send /start to your bot and paste the chat ID.

TELEGRAMOPT-IN

Multi-agent pipeline

Scout, Tailor, Quality Analyst, and Confirmation — a Python pipeline you can read, fork, and extend.

PYTHON4 AGENTS
Questions

The short version.

Does Rendure submit applications for me?
No — and it never will. It prepares tailored resume versions and QA notes; you review the diff and apply yourself. That boundary is deliberate, not a missing feature.
Where does my data live?
On your machine. Jobs, resume versions, QA reviews, and pipeline events are written to your own Postgres instance, and your OpenRouter API key is encrypted at rest. There is no hosted backend and no telemetry.
Which language models does it use?
Whatever you point it at through OpenRouter. Each agent — Scout, Tailor, Quality Analyst, Confirmation — ships with a sensible default model, and you can override any of them from Settings or environment variables.
Will it fabricate experience to match the job?
No. The Resume Tailor rewrites and re-emphasizes what's already in your base resume — it won't invent skills, employers, or dates. Gaps it can't close honestly are surfaced as QA gaps rather than faked away.
How do I run it?
Paste the bootstrap command into your terminal, then open the local web app and complete onboarding. No waitlist, no signup, no hosted tier to wait for.

Clone it. Run it. Own it.

No accounts, no SaaS dashboard, no waitlist. Pull the repo, set your key, and bring the whole pipeline up with one command.

$ curl -fsSL https://raw.githubusercontent.com/KaustubhTrivedi/rendure-v2/main/scripts/bootstrap.sh | bash