← Back to Skills Marketplace
uday390

DeepRead Resume Parser

by DeepRead.tech · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ Security Clean
34
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install deepread-resume-parser
Description
Parse resumes and CVs into structured JSON — contact info, work history, education, skills, and total years of experience. Works on PDF, Word-exported PDF, a...
README (SKILL.md)

DeepRead Resume Parser

Turn any resume or CV — PDF, scanned, or wildly creative two-column design — into clean, structured JSON: contact details, work history with dates and titles, education, skills, and computed years of experience. Each field carries a needs_review flag, so your ATS ingests the confident fields and routes only the ambiguous ones to a recruiter.

This skill instructs the agent to POST documents to https://api.deepread.tech and poll for results. No system files are modified.

Why resumes break normal parsers

Resumes have no standard layout: two columns, sidebars, icons, tables, graphics, dates as "Jan 2021 – Present." Regex/template parsers shatter on the first creative design. DeepRead reads the document the way a human does — visual + semantic — runs multi-model consensus, and flags low-confidence fields instead of silently mangling a job title.

What You Get Back

{
  "schema_version": "dp02",
  "status": "completed",
  "extraction": {
    "fields": [
      {"key": "full_name", "value": "Priya Nair", "needs_review": false, "location": {"page": 1}},
      {"key": "email", "value": "[email protected]", "needs_review": false, "location": {"page": 1}},
      {"key": "phone", "value": "+1 415 555 0148", "needs_review": false, "location": {"page": 1}},
      {"key": "years_experience", "value": 7, "needs_review": true, "review_reason": "Computed from overlapping roles", "location": {"page": 1}},
      {"key": "work_history", "value": [
        {"company": "Stripe", "title": "Senior Backend Engineer", "start_date": "2021-06", "end_date": "present", "location": "Remote"},
        {"company": "Shopify", "title": "Backend Engineer", "start_date": "2018-08", "end_date": "2021-05", "location": "Toronto, CA"}
      ], "needs_review": false, "location": {"page": 1}},
      {"key": "education", "value": [
        {"institution": "UC Berkeley", "degree": "B.S. Computer Science", "year": "2018"}
      ], "needs_review": false, "location": {"page": 1}},
      {"key": "skills", "value": ["Python", "Go", "PostgreSQL", "Kubernetes", "gRPC"], "needs_review": false, "location": {"page": 1}}
    ]
  }
}

Setup

open "https://www.deepread.tech/dashboard/?utm_source=clawhub"
export DEEPREAD_API_KEY="sk_live_your_key_here"

No key yet? clawhub install uday390/deepread-agent-setup and your agent fetches one via OAuth device flow.

Resume Schema

{
  "type": "object",
  "properties": {
    "full_name": {"type": "string", "description": "Candidate's full name"},
    "email":     {"type": ["string", "null"], "description": "Email address"},
    "phone":     {"type": ["string", "null"], "description": "Phone number"},
    "location":  {"type": ["string", "null"], "description": "City / region of residence"},
    "headline":  {"type": ["string", "null"], "description": "Professional headline or current title"},
    "years_experience": {"type": ["number", "null"], "description": "Total years of professional experience"},
    "work_history": {
      "type": "array",
      "description": "Employment history, most recent first",
      "items": {"type": "object", "properties": {
        "company":    {"type": "string", "description": "Employer name"},
        "title":      {"type": "string", "description": "Job title"},
        "start_date": {"type": ["string", "null"], "description": "Start (YYYY-MM)"},
        "end_date":   {"type": ["string", "null"], "description": "End (YYYY-MM) or 'present'"},
        "location":   {"type": ["string", "null"], "description": "Role location"}
      }, "required": ["company", "title"]}
    },
    "education": {
      "type": "array",
      "description": "Education history",
      "items": {"type": "object", "properties": {
        "institution": {"type": "string", "description": "School / university"},
        "degree":      {"type": ["string", "null"], "description": "Degree and field"},
        "year":        {"type": ["string", "null"], "description": "Graduation year"}
      }, "required": ["institution"]}
    },
    "skills": {"type": "array", "items": {"type": "string"}, "description": "Listed skills / technologies"}
  }
}

Parse a Resume

Python

import requests, json, time

API_KEY = "sk_live_YOUR_KEY"
BASE = "https://api.deepread.tech"
headers = {"X-API-Key": API_KEY}

schema = json.dumps({
    "type": "object",
    "properties": {
        "full_name": {"type": "string", "description": "Candidate full name"},
        "email": {"type": ["string", "null"], "description": "Email"},
        "phone": {"type": ["string", "null"], "description": "Phone"},
        "years_experience": {"type": ["number", "null"], "description": "Total years experience"},
        "work_history": {"type": "array", "items": {"type": "object", "properties": {
            "company": {"type": "string"}, "title": {"type": "string"},
            "start_date": {"type": ["string", "null"]}, "end_date": {"type": ["string", "null"]}
        }, "required": ["company", "title"]}},
        "skills": {"type": "array", "items": {"type": "string"}, "description": "Skills"}
    }
})

with open("resume.pdf", "rb") as f:
    job = requests.post(f"{BASE}/v1/process", headers=headers,
                        files={"file": f}, data={"schema": schema}).json()

job_id = job["id"]
delay = 5
while True:
    time.sleep(delay)
    result = requests.get(f"{BASE}/v1/jobs/{job_id}", headers=headers).json()
    if result["status"] in ("completed", "failed"):
        break
    delay = min(delay * 1.5, 20)

if result["status"] == "completed":
    cand = {f["key"]: f["value"] for f in result["extraction"]["fields"]}
    print(f"{cand.get('full_name')} — {len(cand.get('work_history', []))} roles, skills: {', '.join(cand.get('skills', [])[:5])}")
    # Route only flagged fields to a recruiter
    for f in result["extraction"]["fields"]:
        if f.get("needs_review"):
            print(f"  REVIEW {f['key']}: {f.get('review_reason')}")

cURL

curl -s -X POST https://api.deepread.tech/v1/process \
  -H "X-API-Key: $DEEPREAD_API_KEY" \
  -F "[email protected]" \
  -F 'schema={"type":"object","properties":{"full_name":{"type":"string"},"email":{"type":["string","null"]},"skills":{"type":"array","items":{"type":"string"}},"work_history":{"type":"array","items":{"type":"object","properties":{"company":{"type":"string"},"title":{"type":"string"}}}}}}'

Use Cases

  • ATS ingestion — auto-populate candidate records from uploaded resumes, no manual entry
  • Talent sourcing — bulk-parse a folder of CVs into a searchable, structured database
  • Recruiting agencies — standardize candidates from every format into one schema
  • Skills matching — extract the skills array and match against a job's requirements
  • Job boards — let applicants upload a resume and pre-fill the application form (pair with deepread-form-fill)

Bias-Free Screening — Redact PII First

For blind/anonymized first-pass screening, redact names, photos, addresses, and other PII before the resume reaches a reviewer — reducing unconscious bias and supporting fair-hiring policies:

curl -X POST https://api.deepread.tech/v1/pii/redact \
  -H "X-API-Key: $DEEPREAD_API_KEY" \
  -F "[email protected]"

Install: clawhub install uday390/deepread-pii

Tips for Best Accuracy

  • Describe fields precisely — "Total years of professional experience" beats "experience".
  • Use ["string","null"] for optional fields (email/phone often missing) so they default to null cleanly.
  • High-volume from one source? Build a blueprint at https://www.deepread.tech/dashboard/optimizer for a 20–30% lift.
  • Check needs_review — overlapping roles and gap years are the usual flags; everything else auto-imports.

BYOK — Zero Processing Costs

Bring your own OpenAI/Google/OpenRouter key in the dashboard — processing routes through your account, page quota skipped. https://www.deepread.tech/dashboard/byok

Related DeepRead Skills

  • deepread-ocr — general OCR + structured extraction — clawhub install uday390/deepread-ocr
  • deepread-form-fill — fill application forms from parsed data — clawhub install uday390/deepread-form-fill
  • deepread-pii — redact for blind screening — clawhub install uday390/deepread-pii

Support


Get started free: https://www.deepread.tech/dashboard/?utm_source=clawhub

Usage Guidance
Install only if you are doing ClawHub or Convex maintainer work and understand that some workflows can affect production moderation state, users, packages, emails, migrations, or local repository execution. Use the documented confirmation and dry-run gates, verify the active auth context before running admin commands, and prefer the autoreview --no-yolo option unless full local access is necessary.
Capability Tags
requires-oauth-tokenrequires-sensitive-credentials
Capability Assessment
Purpose & Capability
The capabilities match the stated purposes: Convex setup, auth, migrations, performance review, ClawHub moderation, PR maintenance, and code review closeout.
Instruction Scope
Sensitive workflows require explicit targets, reasons, confirmation, dry runs, verification, and use of authenticated CLI/API paths rather than bypassing role checks.
Install Mechanism
The reviewed skill artifacts are repo-local under .agents/skills and do not include hidden install hooks, postinstall behavior, or automatic execution on installation.
Credentials
The skills may use GitHub, Convex, package managers, local env vars, and production admin tools; this is proportionate for ClawHub maintainer work but should only be used in an intended maintainer environment.
Persistence & Privilege
No unbounded persistence or background autostart was found; the autoreview helper does disclose a default nested Codex review mode with full-access sandbox bypass, so users should opt out with --no-yolo when that level of local authority is unnecessary.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install deepread-resume-parser
  3. After installation, invoke the skill by name or use /deepread-resume-parser
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Parse resumes/CVs into structured JSON — contact, work history, education, skills, years of experience. Handles any layout. Per-field confidence flags. PII redaction for bias-free screening.
Metadata
Slug deepread-resume-parser
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is DeepRead Resume Parser?

Parse resumes and CVs into structured JSON — contact info, work history, education, skills, and total years of experience. Works on PDF, Word-exported PDF, a... It is an AI Agent Skill for Claude Code / OpenClaw, with 34 downloads so far.

How do I install DeepRead Resume Parser?

Run "/install deepread-resume-parser" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is DeepRead Resume Parser free?

Yes, DeepRead Resume Parser is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does DeepRead Resume Parser support?

DeepRead Resume Parser is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created DeepRead Resume Parser?

It is built and maintained by DeepRead.tech (@uday390); the current version is v1.0.0.

💬 Comments