English | Español | Português (Brasil) | 한국어 | 日本語 | Русский | 简体中文 | 繁體中文
I watched great engineers get ghosted. Their resumes looked perfect.
The ATS system saw something completely different.
So I built the tool that shows exactly what breaks — and fixes it.
Now it's open source.
Live Demo • Documentation • Discord
6 ATS parsers simulated · PDF repair in seconds · Zero fake "ATS scores"
Most resumes look correct to humans but fail silently inside ATS systems. Hiring managers never see them. Candidates never know why.
ATSInfra is an open-source infrastructure layer that exposes what actually breaks:
- Simulates how real ATS parsers (Workday, Greenhouse, Lever, Taleo, BambooHR, Ashby) interpret your resume
- Visualizes parsing failures with a DevTools-style debugger — heatmaps, confidence overlays, broken section detection
- Repairs ATS-hostile PDFs automatically — multi-column layouts, corrupted unicode, image-only layers, Canva/Figma exports
- Exports clean, ATS-safe PDFs instantly
This is NOT an "ATS score" tool. ATSInfra shows what actually breaks — not a meaningless percentage. Real parsers, real extraction, real failures.
Upload a resume → see how each ATS reads it → repair what breaks → export a clean PDF.
| Feature | Description |
|---|---|
| ATS Parser Simulation | Side-by-side comparison across Workday, Greenhouse, Lever, BambooHR, Taleo, Ashby |
| Visual Debugger | DevTools-style inspection: parsing heatmaps, confidence overlays, section hierarchy, extracted text viewer |
| PDF Repair Engine | Auto-fixes multi-column layouts, corrupted unicode, hidden text layers, broken font embedding, Canva/Figma exports |
| Resume Extraction Pipeline | Full text extraction with section mapping, skill detection, and parser risk diagnostics |
| REST API | Production-ready endpoints for parse, simulate, and repair — integrate into any workflow |
| CLI Tooling | atsinfra parse, atsinfra simulate, atsinfra repair — runs locally, no upload required |
| JavaScript + Python SDKs | Drop-in libraries for both ecosystems |
| Self-Hosted | Docker Compose or Kubernetes — your data never leaves your machine |
git clone https://github.com/Nitish-1303/ATS-Infra.git
cd ATS-Infra
docker compose upOpen: http://localhost:3000
# Install
npm install -g @atsinfra/cli
# Parse a resume
atsinfra parse resume.pdf
# Simulate how Workday reads it
atsinfra simulate resume.pdf --ats workday
# Repair and export a clean PDF
atsinfra repair resume.pdf -o fixed.pdfYou upload a resume (PDF)
│
▼
┌──────────────────────┐
│ PDF Parser │ Extracts text, fonts, layout, text layer
│ + OCR Fallback │ Tesseract for image-only resumes
└──────────┬───────────┘
│
┌──────────▼───────────┐
│ ATS Simulation │ Runs parser logic for each ATS system
│ Layer │ Workday / Greenhouse / Lever / Taleo / Ashby
└──────────┬───────────┘
│
┌──────┴──────┐
▼ ▼
Debugger Repair Engine
(heatmap) (fixes layout,
unicode, layers)
│ │
└──────┬──────┘
▼
ATS-Safe PDF Export
Broken (before repair):
J���hn D�e
S�ft��re E�g�n��r
[PARSING ERROR]
- Multi-column layout detected
- Corrupted unicode characters
- Hidden/inaccessible text layer
- Image-only section (no extractable text)
Clean (after repair):
John Doe
Software Engineer
✓ Clean text extraction
✓ ATS-safe single-column structure
✓ Semantic section recovery
✓ Font embedding fixed
curl -X POST http://localhost:4000/api/v1/parse \
-F "file=@resume.pdf"curl -X POST http://localhost:4000/api/v1/simulate \
-F "file=@resume.pdf" \
-F "ats=workday"curl -X POST http://localhost:4000/api/v1/repair \
-F "file=@resume.pdf"Frontend (Next.js 15)
↓
API Gateway (Node.js)
↓
Parser Engine (FastAPI)
↓
ATS Simulation Layer
↓
PDF Repair Engine
↓
PostgreSQL + Redis
| Layer | Tech |
|---|---|
| Frontend | Next.js 15, TypeScript, Tailwind CSS, shadcn/ui, Framer Motion |
| Backend | FastAPI, Node.js, Python microservices |
| PDF + OCR | PyMuPDF, pdfplumber, Apache Tika, OCRmyPDF, Tesseract |
| AI + NLP | SentenceTransformers, spaCy, pgvector |
| Infrastructure | PostgreSQL, Redis, Kafka, Docker, Kubernetes |
atsinfra/
├── apps/
│ ├── dashboard # Next.js visual debugger
│ ├── docs # Documentation site
│ └── api-gateway # Node.js gateway
│
├── services/
│ ├── parser-engine # PDF parsing + text extraction
│ ├── ats-simulator # Per-ATS parsing logic
│ ├── pdf-repair # Repair heuristics engine
│ └── semantic-engine # NLP + skill detection
│
├── packages/
│ ├── sdk-js # JavaScript SDK
│ ├── sdk-python # Python SDK
│ ├── ui # Shared UI components
│ └── shared-types # TypeScript types
│
└── infrastructure/ # Docker + Kubernetes configs
- ATS parser simulation (6 parsers)
- Visual parsing debugger
- PDF repair engine
- Resume extraction pipeline
- CLI tooling
- Additional ATS parsers (Workable, iCIMS, SmartRecruiters)
- Browser extension for inline resume checking
- Resume diffing (before vs after repair)
- Parsing regression testing suite
- Resume observability dashboard
docker compose up -dkubectl apply -f k8s/We welcome contributions. Areas where you can help:
- ATS parser improvements and new parser integrations
- PDF repair heuristics
- UI/UX improvements to the visual debugger
- OCR optimization
- Documentation
- SDKs and client libraries
- Testing
See CONTRIBUTING.md and docs/ARCHITECTURE.md.
ATSInfra exists to make hiring infrastructure transparent.
We believe:
- Candidates deserve to understand why their resume fails parsing
- ATS systems should be observable, not black boxes
- Resume infrastructure should be open source
- Parsing failures are an engineering problem, not a candidate problem
ATSInfra is a local, open-source tool — NOT a hosted service. By using this software, you acknowledge:
- You control your data. Your resume and personal information stay on your machine. We do not collect, store, or have access to any of your data.
- No guarantees. Parser simulations are approximations of real ATS behavior. Real ATS systems are proprietary and may behave differently. The authors are not liable for hiring outcomes.
- AI outputs require review. Repair suggestions are automated — always review the output before submitting to employers.
See LICENSE for full details. Software provided under AGPL v3 "as is", without warranty.
Fixed a parsing bug? Improved a repair heuristic? Open a PR — contributions are what make this useful.
Code is licensed under AGPL v3. The "ATSInfra" name is reserved — see CONTRIBUTING.md for usage terms.
Built for developers, recruiters, and job seekers who believe the hiring process should be transparent.
If ATSInfra helps you: ⭐ Star the repo · 🐛 Report issues · 🔧 Contribute improvements


