How It Works Live Demo Blog Docs Pricing Try the API Free →
Resume scoring API for engineering teams

Manual resume screening
wastes 40+ hours per hire

Stackwright is a REST API that scores developer resumes against your job description in under 2 seconds — structured JSON with fit score, strengths, gaps, and per-skill evidence. Drop into your ATS in an afternoon.

REST API  ·  ~200ms cached / ~2s live  ·  3 endpoints  ·  Free tier, no credit card

Free tier — 10 API calls/day, no credit card. Ships in 24hrs.
POST /api/v1/score-resume
// Request
fetch('https://stackwright.polsia.app/api/v1/score-resume', {
  method: 'POST',
  headers: { 'X-API-Key': 'sk-sw-...', 'Content-Type': 'application/json' },
  body: JSON.stringify({ resume_text: '...', job_description: '...' })
});

// Response
{
  "fit_score": 78,
  "strengths": ["5+ yrs React, shipped 3 production apps", "..."],
  "gaps": ["No Kubernetes experience", "..."],
  "skill_matches": [{ "skill": "React", "level": "strong" }, "..."],
  "overall_assessment": "Strong frontend fit, interview recommended.",
  "processing_time_ms": 1240
}
Resumes Scored
Avg Fit Score
~1.5s
Avg Response Time
Scores resumes in under 3 seconds
🔌 REST API — zero ML infrastructure required
🏗️ Built for engineering teams
🔒 Deterministic — same inputs, same scores

Built for teams using

Ashby Greenhouse Lever Workday Any REST Webhook

How it works

1
Send Resume + JD
POST to the API
2
AI Scores in ~2s
No ML infra needed
3
Structured JSON
Score · strengths · gaps
Read the Docs →

From resume to hire decision in four API calls

Drop into your existing ATS workflow. No models to train, no infrastructure to manage. Paste a key and call the API.

1
Send a resume + job description

POST the raw resume text and job description to /api/v1/score-resume. Pass your API key in the X-API-Key header. That's the entire setup.

terminal
# Score a developer candidate curl -X POST https://stackwright.polsia.app/api/v1/score-resume \ -H "X-API-Key: sk-sw-your-key" \ -H "Content-Type: application/json" \ -d '{ "resume_text": "Senior Backend Engineer, 5 yrs Node.js...", "job_description": "We need a backend engineer with Node.js..." }'
2
Get AI-powered scoring in ~1–2 seconds

The API returns a structured JSON assessment: a 0–100 fit score, candidate strengths and gaps relative to the JD, per-skill evidence, and a plain-English recommendation. Results are deterministically cached — identical inputs always return the same score instantly.

response · 200 OK
{ "fit_score": 78, "overall_assessment": "Strong backend fit. Interview recommended.", "strengths": [ "5+ yrs Node.js — Stripe payments infra, 2M events/day", "Payments domain expertise aligns directly with role" ], "gaps": [ "No explicit Kubernetes experience mentioned" ], "skill_matches": [ { "skill": "Node.js", "level": "strong", "evidence": "4 yrs at Stripe" }, { "skill": "PostgreSQL", "level": "strong", "evidence": "Production use" }, { "skill": "Kubernetes", "level": "missing", "evidence": "Not mentioned" } ], "processing_time_ms": 1240, "cached": false }
3
Generate tailored interview questions

Pass the job description (and optionally the resume) to /api/v1/generate-questions. Get role-specific technical, behavioral, and system design questions — each with evaluation criteria and follow-ups.

response · 200 OK
# Request: POST /api/v1/generate-questions # { "job_description": "...", "num_questions": 3, "question_types": ["technical","system_design"] } { "questions": [ { "question": "Design a payment retry system handling 2M events/day. How do you ensure exactly-once processing?", "type": "system_design", "difficulty": "senior", "evaluation_criteria": "Idempotency keys, dead-letter queues, backoff strategy", "follow_ups": [ "How would you handle partial failures mid-transaction?", "What observability would you add?" ] } ], "processing_time_ms": 980 }
4
◈ Coming Soon
Integrate with your ATS automatically

Ashby webhook support is in development. When a candidate applies, Stackwright scores them automatically and writes the result back to their Ashby profile — no manual API calls, no copy-paste. The hiring team sees fit scores inside the ATS they already use.

planned · ashby webhook
// Ashby fires webhook on new application // → Stackwright scores candidate automatically // → Writes fit_score + assessment back to Ashby profile // POST https://stackwright.polsia.app/webhooks/ashby { "event": "application.created", "candidate_id": "cand_abc123", "job_id": "job_xyz789", "resume_url": "https://..." } // Result tagged in Ashby within seconds ↓ // Custom field: "SW Fit Score: 78 · Interview recommended"
Read Full API Docs → Try It Live →

Try it right now

Paste a resume and job description. See the analysis in seconds. Using the free demo key — no signup required.

POST /api/v1/score-resume

LIVE
Resume Text
Job Description
X-API-Key: sk-sw-demo-stackwright2025

Simple. Consistent. Predictable.

All endpoints return JSON. All errors include a machine-readable error code. Base URL: https://stackwright.polsia.app

Authentication: Pass your API key in the X-API-Key header on all requests. Free tier: 10 requests/day. Pro tier: unlimited. Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
POST /api/v1/score-resume Score resume against job description
Request Body
Parameter Type Required Description
resume_text string required Full text of the candidate's resume. Min 50 chars. Truncated at 8000.
job_description string required Full text of the job description. Min 30 chars. Truncated at 4000.
Response Fields
FieldTypeDescription
fit_scoreinteger0–100. 85+ = strong hire. 70–84 = interview. Below 55 = significant gaps.
strengthsstring[]Specific strengths evidenced in the resume relative to the JD.
gapsstring[]Missing skills or experience relative to the JD requirements.
skill_matchesobject[]Per-skill breakdown: {skill, level: strong|partial|missing, evidence}
experience_alignmentstringNarrative assessment of career trajectory fit.
overall_assessmentstringExecutive summary and hiring recommendation.
processing_time_msintegerTime to generate assessment in milliseconds.
cachedbooleanTrue if result was returned from cache (identical inputs seen before).
GET /api/v1/stats Platform usage statistics
Returns {total_assessments, avg_fit_score, avg_processing_time_ms}. No authentication required.
GET /api/v1/demo-key Retrieve the public demo API key
Returns the demo API key for testing. 100 requests/day limit. No authentication required.

Start free, scale when you need to

Free tier for evaluation. Pro for production ATS integrations. Simple, transparent pricing.

Free
$0
forever, no credit card
  • 10 API calls/day
  • Full JSON response
  • Deterministic caching
  • Skill match breakdown
  • Rate limit headers
Get Free Key

Learn how teams are using Stackwright

All Articles →

Get your API key

Join the waitlist. We'll send your production key within 24 hours.
Free tier ships immediately.

Score your first resume free Try the API Free →