GTM · sync
resume-rx
Senior-engineer-grade resume review against any role.
Overall recommendation card
About
resume-rx is the resume reviewer you wish you had a senior engineer friend for.
It takes a resume (plain text or PDF), a job description (text or URL), and a few opinionated knobs — target seniority, evaluation mode, tone — and produces a structured evaluation that's actionable, not generic.
The two evaluation modes:
• **ats** — simulates a modern Applicant Tracking System. Parses the resume the way an ATS would, scores keyword coverage against the JD, flags formatting that breaks parsers (text in images, two-column layouts, exotic fonts).
• **human** — simulates a hiring manager / staff engineer reading the resume cold. Calls out vague impact bullets ('improved performance' with no number), weak action verbs, missing context, mismatched seniority signals, padded experience.
Default mode is **both**, weighted 30% ATS + 70% human, because in practice an ATS pass is necessary-but-not-sufficient for actually getting an interview.
Returns a recommendation (`strong-hire` / `hire` / `no-hire` / `strong-no-hire`), per-section scores, top strengths, weaknesses, red flags, missing JD keywords, and concrete rewrite suggestions for the weakest 3-5 lines.
No PII storage: resumes are evaluated in-flight and dropped. Pass `redactPii=true` if you want emails, phone numbers, and addresses zeroed out in the response too.
{
"type": "object",
"required": [
"resume"
],
"properties": {
"resume": {
"type": "string",
"description": "Resume content — either plain-text (UTF-8) OR a base64-encoded PDF (with or without the `data:application/pdf;base64,` prefix; max 5 MB). The agent detects which it is from the content."
},
"resumeFormat": {
"type": "string",
"enum": [
"text",
"pdf"
],
"default": "text",
"description": "Tells us how to interpret the `resume` field."
},
"jobDescription": {
"type": "string",
"description": "The role you're targeting. Either pasted text or an https URL we'll fetch. Optional but unlocks ATS keyword scoring + JD-aware rewrite suggestions."
},
"targetRole": {
"type": "string",
"description": "One-line description of the target role, e.g. 'Senior Backend Engineer at a Series B fintech'. Used as a fallback when no full JD is provided."
},
"targetSeniority": {
"type": "string",
"enum": [
"intern",
"junior",
"mid",
"senior",
"staff",
"principal",
"manager",
"director"
],
"description": "What level the candidate is *applying for*. We weight feedback against this — a senior resume judged for a staff role gets pushed harder on scope and ownership."
},
"industryHint": {
"type": "string",
"description": "Free-text industry context, e.g. 'developer tools', 'healthtech', 'enterprise SaaS'. Helps tune which signals matter."
},
"evaluationMode": {
"type": "string",
"enum": [
"ats",
"human",
"both"
],
"default": "both",
"description": "ats = simulate an Applicant Tracking System; human = simulate a hiring manager reading cold; both = run both and aggregate (30% ATS + 70% human)."
},
"rubricFocus": {
"type": "array",
"items": {
"type": "string",
"enum": [
"experience",
"skills",
"education",
"leadership",
"communication",
"achievements",
"technical-depth",
"ownership",
"career-progression"
]
},
"description": "Which dimensions to score in detail. Default is all of them; trim the list to focus the report."
},
"redLines": {
"type": "array",
"items": {
"type": "string"
},
"description": "Hard dealbreakers, e.g. 'no AWS experience', 'requires US work auth'. We surface these prominently in the report."
},
"tone": {
"type": "string",
"enum": [
"blunt",
"constructive",
"encouraging"
],
"default": "constructive",
"description": "How harshly to phrase weaknesses. 'blunt' is for the candidate themselves; 'encouraging' is for sharing with someone whose feelings you'd like to spare."
},
"outputFormat": {
"type": "string",
"enum": [
"json",
"markdown",
"both"
],
"default": "both",
"description": "json = structured fields; markdown = pre-rendered review document; both = receive both side by side."
},
"includeRewriteSuggestions": {
"type": "boolean",
"default": true,
"description": "Per-line rewrites for the weakest 3-5 bullets, with reasons."
},
"includeKeywordGaps": {
"type": "boolean",
"default": true,
"description": "Required only if jobDescription is provided."
},
"includeAtsBreakdown": {
"type": "boolean",
"default": true,
"description": "Detailed ATS scoring: format issues, parseability, section detection, keyword coverage."
},
"includeRedFlags": {
"type": "boolean",
"default": true,
"description": "Surfaces things hiring managers worry about: short tenures, gaps, title inflation, vague impact."
},
"redactPii": {
"type": "boolean",
"default": false,
"description": "Zero out email, phone, and address fields in the response. Useful when piping the report into a shared doc."
},
"language": {
"type": "string",
"default": "en",
"description": "BCP-47 language tag for the resume. Default is English; pass e.g. 'es' or 'de' for non-English resumes."
}
}
}These are descriptive previews. Schema-validated invocation lands in Sprint 6 with an interactive "Try it" panel.
Reviews (0)
No reviews yet — be the first to share your experience.