Use Case

Building a Lightweight ATS with ParseApi: Resume Parsing Without the Lock-in

YY Yonas Yeneneh April 28, 2026 7 min read

Most Applicant Tracking Systems cost thousands of dollars a month and lock you into their ecosystem. But for a team that needs structured data extracted from resumes — to route candidates, filter by skill, or feed a downstream system — the full ATS is overkill.

Here's how to build a lightweight resume parsing layer using ParseApi in under 30 minutes, with a REST API you own.

What you'll build

  • A ParseApi folder that accepts resume PDFs
  • An auto-detected schema covering the key candidate fields
  • A queryable REST API you can filter by skill, experience, or location
  • An optional webhook that fires whenever a new resume is processed

Step 1: Create the folder

Sign in to ParseApi and create a new folder:

  • Slug: candidates
  • Auth mode: API key (generate a live key for your system)

Step 2: Upload sample resumes

Upload 3–5 diverse resume PDFs. ParseApi will auto-detect a schema after the third upload. After the synthesis, you'll see a proposed schema along these lines:

{
  "full_name": "string",
  "email": "string",
  "phone": "string",
  "location": "string",
  "current_title": "string",
  "total_experience_years": "number",
  "skills": ["string"],
  "education": [
    {
      "institution": "string",
      "degree": "string",
      "graduation_year": "number"
    }
  ],
  "work_experience": [
    {
      "company": "string",
      "title": "string",
      "start_date": "string",
      "end_date": "string",
      "description": "string"
    }
  ]
}

Review the proposed schema, add any custom fields you need (e.g. cover_letter_summary, github_url, portfolio_url), and confirm.

Step 3: Query the candidate list

With a few resumes uploaded, query the folder:

curl https://api.parseapi.dev/v1/yourname/candidates \
  -H "Authorization: Bearer pk_live_..."

Each result includes the full extracted profile, the source document reference, and the extraction timestamp.

Step 4: Filter by skill

Use the field-search endpoint to find candidates with a specific skill:

curl "https://api.parseapi.dev/v1/yourname/candidates/search?field=skills&value=Python" \
  -H "Authorization: Bearer pk_live_..."

Find senior candidates by experience:

curl "https://api.parseapi.dev/v1/yourname/candidates/search?field=total_experience_years&value=gte:5" \
  -H "Authorization: Bearer pk_live_..."

Or filter by location:

curl "https://api.parseapi.dev/v1/yourname/candidates/search?field=location&value=New+York" \
  -H "Authorization: Bearer pk_live_..."

Step 5: Set up a webhook for new applications

When a candidate applies and a new resume lands in your folder, you want your system to react immediately. Set up a webhook in folder settings pointing to your endpoint:

https://yoursystem.example.com/api/new-candidate

ParseApi sends a POST request with the extraction result as soon as processing completes:

{
  "event": "extraction.completed",
  "folder": "candidates",
  "document_id": "01HZB2VQ9S4KFWMEC3GRX7YNJ4",
  "extracted_at": "2026-04-28T14:33:07Z",
  "result": {
    "full_name": "Sarah Chen",
    "email": "sarah@example.com",
    "location": "San Francisco, CA",
    "current_title": "Senior Backend Engineer",
    "total_experience_years": 6,
    "skills": ["Python", "PostgreSQL", "FastAPI", "Docker", "Kubernetes"]
  }
}

Your endpoint can then route the candidate to the right reviewer, trigger a Slack notification, send an auto-acknowledgment email, or update your internal pipeline tracker.

Handling multi-page and complex layouts

ParseApi processes every page of a multi-page PDF. A 3-page resume with a cover letter and reference section is extracted as a single result. Two-column layouts and table-formatted experience sections are handled well by the vision-capable AI models ParseApi routes to by default.

The page count is tracked in usage metering — a 3-page resume costs 3 pages from your monthly allocation.

When extraction gets something wrong

Resumes are notoriously variable. Unusual fonts, creative layouts, and overlapping columns all challenge AI extraction. When a field is wrong:

  1. Open the extraction in the ParseApi dashboard
  2. Click the incorrect field — the source PDF highlights where the value was found
  3. Edit the value inline
  4. The correction is saved immediately and reflected in the API

Corrections are tracked per-field, so over time you can see which resume formats are causing the most errors — useful for understanding which source (job boards, direct applications, agency submissions) has the cleanest documents.

Cost estimate

On the Hobby plan ($19/month) you get 1,000 pages. A typical resume is 1–2 pages, so that covers 500–1,000 candidate documents per month — plenty for a growing startup or a small recruiting agency.

The free tier (100 pages) is enough to evaluate the approach before committing. No credit card required.

Try ParseApi free

100 pages per month at no cost. No credit card required.

Get started