Autonomous System for Talent & Resume Automation
Local-first AI system for ATS resume optimization, cover letter generation, job-aware chat, and LaTeX-safe document workflows.
ASTRA is a local-first, modular AI ecosystem built to help candidates generate stronger, more targeted application materials with a desktop-style experience.
It combines:
- JD-aware resume optimization
- Role-specific cover letter generation
- Humanized writing support
- Persistent job-aware chat
- Safe LaTeX compilation with PDF output
- Local history, logs, and reusable session context
ASTRA runs through a FastAPI backend + PyWebView desktop application, giving a native app-like workflow with preview, saved sessions, and structured output generation.
| Subsystem | Description |
|---|---|
| π§ HIREX | Core resume optimization engine. Parses job descriptions, rewrites LaTeX resumes, improves ATS alignment, and compiles final PDFs. |
| π£οΈ SuperHuman | Humanization layer that rewrites content to sound natural, professional, and recruiter-friendly while staying LaTeX-safe. |
| π¬ MasterMind | Job-aware conversational assistant with persistent memory, context retention, and multi-turn support. |
ASTRA is designed to generate better job application outputs, not just generic text.
- Optimize ATS-friendly LaTeX resumes
- Generate job-specific cover letters
- Provide context-aware Q&A using saved JD and resume context
- Maintain persistent local chat sessions
- Track history, analytics, and output metadata
- Compile documents through a safe LaTeX pipeline
| Module | Purpose |
|---|---|
| π§Ύ Resume Optimizer | Rewrites LaTeX resumes using JD-aware bullet planning, skill alignment, and one-page fit control. |
| βοΈ Cover Letter Engine | Produces tailored cover letters using company, role, and resume context. |
| π¬ Talk to ASTRA | Lets users ask questions about a saved JD, resume, or generated output. |
| π£οΈ SuperHuman | Humanizes bullets, responses, and cover letters into more natural language. |
| π§ MasterMind | Stores and manages conversation context across multiple sessions. |
| π Dashboard | Tracks usage patterns, history, fit trends, and output activity. |
| βοΈ Utilities / Routers | Handles config, model routing, validation, telemetry, and helper functions. |
The current optimizer is not a simple keyword replacer. It performs a multi-stage optimization pipeline designed for stronger final resume quality.
- Extracts must-have, should-have, and nice-to-have skills from the JD
- Classifies the role into a role archetype
- Decomposes the JD into day-to-day tasks
- Extracts JD key phrases that should appear naturally in the resume
- Profiles the ideal candidate
- Builds a 12-bullet master plan across experience sections
- Generates JD-mirrored project entries
- Runs post-generation validation and repair
- Rebuilds the Skills section using JD-priority ranking
- Applies safe one-page trimming
- Injects PDF metadata
- Compiles the final LaTeX safely into PDF
- Task-aware bullet generation
- JD phrase mirroring
- Metric diversity enforcement
- Placeholder cleanup for bad generations like
XYZ,ABC,Foo,Lorem, etc. - Cross-block bullet deduplication
- Bullet quality scoring and improvement
- Coverage remediation for missing must-have JD terms
- Skills prioritization based on JD relevance
- One-page preservation rules so experience bullets are not over-trimmed
- Projects section generation in
\textbf{Title} -- one-linerformat
ASTRA/
β
βββ backend/
β βββ api/
β β βββ optimize.py
β β βββ coverletter.py
β β βββ talk.py
β β βββ superhuman.py
β β βββ humanize.py
β β βββ mastermind.py
β β βββ dashboard.py
β β βββ context_store.py
β β βββ models_router.py
β β βββ utils_router.py
β β βββ debug.py
β β
β βββ core/
β β βββ config.py
β β βββ compiler.py
β β βββ security.py
β β βββ utils.py
β β
β βββ data/
β βββ contexts/
β βββ history/
β βββ logs/
β βββ mastermind_sessions/
β βββ cache/
β
βββ frontend/
β βββ master.html
β βββ master.js
β βββ static/css/
β βββ static/assets/
β
βββ main.py
βββ requirements.txt
pip install -r requirements.txtIf requirements.txt is still incomplete, install the core packages manually:
pip install fastapi uvicorn httpx openai python-dotenv pywebview pydanticCreate a .env file:
OPENAI_API_KEY=sk-xxxxxx
HUMANIZE_API_KEY=Bearer xxxxx
DEBUG=true
DEFAULT_MODEL=gpt-4o-mini
API_BASE_URL=http://127.0.0.1:8000You may also configure default file paths and local storage directories inside backend/core/config.py.
python main.py- FastAPI backend starts on
127.0.0.1:8000 - PyWebView opens the desktop UI
- Sessions, logs, and generated artifacts persist locally
Useful endpoints:
http://127.0.0.1:8000http://127.0.0.1:8000/api/docs
Main resume optimization engine.
Responsibilities include:
- extracting JD requirements
- identifying role type and tone
- planning and rewriting experience bullets
- generating project entries
- rebuilding the skills section
- safe LaTeX compilation
- one-page fitting logic
- resume coverage and alignment reporting
Generates role-specific cover letters using:
- JD context
- target company and role
- existing resume profile
- safe output formatting
Supports contextual Q&A tied to:
- the current JD
- saved resume context
- previous ASTRA sessions
- generated outputs
Applies humanization and tone control for:
- resume bullets
- cover letters
- answers
- recruiter-facing writing
Designed to keep outputs natural without breaking LaTeX structure.
Provides:
- persistent local session storage
- multi-turn reasoning
- contextual conversational support
- reusable job-aware memory
Stores reusable context bundles such as:
- JD text
- selected resume state
- generated outputs
- prior chat state
Aggregates usage and application-related signals such as:
- generation frequency
- session activity
- optimization history
- fit-score or coverage trends
| Directory | Purpose |
|---|---|
backend/data/logs/events.jsonl |
Event logs |
backend/data/history/history.jsonl |
Output and usage history |
backend/data/contexts/ |
Saved JD + resume bundles |
backend/data/mastermind_sessions/ |
Persistent chat sessions |
backend/data/cache/latex_builds/ |
Temporary LaTeX builds |
ASTRA uses a defensive document pipeline:
- strict
.texvalidation - secure input filtering
- temporary sandboxed LaTeX build directory
- no shell escape during compile
- controlled local file handling
- LaTeX-safe escaping before rendering
This helps reduce broken builds and unsafe LaTeX execution patterns.
ASTRA uses structured event logging for local observability.
Example:
log_event("event_name", {"meta": {...}})Common event types:
optimize_resumecoverletter_drafttalk_answersuperhuman_rewritefrontend_debug
Logs are stored in:
backend/data/logs/events.jsonl
| Mode | Command |
|---|---|
| Full desktop app | python main.py |
| API-only dev mode | uvicorn backend.api:app --reload |
| API docs | /api/docs |
Planned upgrades include:
- richer fit scoring and recruiter-style evaluation
- better session retrieval and memory search
- PDF-to-LaTeX conversion
- streaming generation
- dashboard improvements
- stronger artifact versioning
- more advanced analytics for resume evolution
Copyright Β© 2025β2026 Sri Akash Kadali
Educational and research use permitted.
ASTRAβ’, HIREXβ’, SuperHumanβ’, MasterMindβ’ are associated with the authorβs project ecosystem.
Sri Akash Kadali
Applied Machine Learning Graduate Student University of Maryland
Intelligence that understands your profile, aligns your story to the role, and improves resume output quality end to end.
