Refactr
Personal Project
Full-Stack AI Engineer · Jan 2026 – Present · Remote
Overview
Refactr helps job seekers send a resume that fits each role. You upload your resume once, then tailor it to any job description or turn it into a clean PDF that applicant tracking systems can read. It works in the web app and as a Chrome extension on LinkedIn, Indeed, Glassdoor, and Handshake, so you can tailor a resume without leaving the posting.
Challenge
Job seekers spend hours editing a resume for every application, and they still miss keywords that recruiters' screening software looks for. AI tools make this faster but add a risk: they can invent skills or experience you don't have, which can cost you an interview. I wanted a tool that was fast, worked where people already apply, and could be trusted to stick to the truth.
Solution
Refactr reads your resume and the job description, rewrites your bullets to match what the employer asks for, and then checks every rewritten bullet against your original resume. Any bullet that adds a skill you don't have gets corrected or reverted. Your companies, titles, dates, and locations are locked and never change. One sign-in works in both the web app and the extension.
Key Features
Tailor a resume to any job in seconds
Works right on job postings through a Chrome extension
Checks every rewritten bullet so no skill is invented
Keeps companies, titles, dates, and locations unchanged
Reformat mode: a clean, ATS-friendly PDF with your wording untouched
Two resume templates, including one built for technical skills
Dashboard with your current resume, history, and application stats
Work Done
- 1
Three loosely coupled pieces
A Next.js 16 and React 19 web app, a Manifest V3 Chrome extension built with esbuild, and a stateless FastAPI backend. The web app and extension talk to Supabase directly for auth and storage, with row-level security tied to auth.uid(). The backend never sees a service-role key and only parses, tailors, reformats, and renders PDFs.
- 2
Parse and Classify
The resume and job description are parsed at the same time with OpenAI GPT-4o-mini structured-output calls bound to Pydantic schemas. The same call classifies the job's industry, so later steps can use guidance written for that field.
- 3
Generate
Bullets are rewritten with prompt guidance specific to the job's industry, so the emphasis matches what that field looks for.
- 4
Verify and Lock
Every rewritten bullet is checked against the job's required skills, and any bullet that adds a skill missing from the original resume is rewritten or reverted. Company, title, dates, and locations are locked in code, so the model can't change them.
- 5
PDF output and observability
Resumes are rendered to PDF with LaTeX in two ATS-friendly templates. Each pipeline stage is timed and returned in an X-Pipeline-Timings header.
- 6
Deployment
The backend runs in Docker on Render and the frontend on Vercel with CI/CD automation, on the custom domain refactrapp.com.
Impact
Improved keyword recall by 40%, so resumes pick up more of what employers look for
Improved ATS match alignment by 30 to 35% on test job descriptions
Tailors a resume in seconds, directly on LinkedIn, Indeed, Glassdoor, and Handshake postings
Never claims a skill that isn't on your resume, because every rewritten bullet is checked
Keeps your company, title, dates, and locations exactly as written
Live at refactrapp.com with a web app and a Chrome extension