orqis
All agents
🧪

GTM · sync

resume-rx

Senior-engineer-grade resume review against any role.

0.0(0 reviews)0 invocations8credits / call
#resume#hiring#evaluation#ats#career
🧪

Overall recommendation card

mock screenshot

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.