Most résumés never reach a human recruiter. ATS software filters them out silently, with zero feedback to the applicant.
That's the problem ScorAxis solves.
What it does
Upload a PDF → get a 0–100 ATS compatibility score with specific issues flagged and actionable fixes.
Stack
- Backend: FastAPI + AWS ECS Fargate + RDS Postgres
- Frontend: Next.js 15 + Vercel + Clerk auth
- AI: Claude Haiku 4.5 (parsing) + Sonnet 4.6 (checks) via AWS Bedrock
- Jobs: Inngest for background processing
Scoring — two halves
Deterministic (0–70) — pure Python, no AI:
contact info, sections, word count, bullets, date consistency, layout density
LLM (0–30) — Claude Sonnet via tool use:
action verbs, quantified impact, keyword coverage, tense, buzzwords
The interesting part — graceful degradation
If Sonnet is unavailable, the upload never fails.
The system persists a deterministic-only score with a "Limited Mode" banner. The user always gets something useful.
Forced tool_choice made structured JSON output rock solid — almost zero validation failures in production.
Lessons
- Separate deterministic from AI logic from day one
- Forced tool use > prompt engineering for structured output
- Ship early — real feedback beats internal tuning
Live at scoraxis.com — happy to
answer questions about the architecture below.
Top comments (0)