Building a Lightweight ATS with ParseApi: Resume Parsing Without the Lock-in
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:
- Open the extraction in the ParseApi dashboard
- Click the incorrect field — the source PDF highlights where the value was found
- Edit the value inline
- 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.