Skip to content

lizuju/axis-resume-builder

Repository files navigation

AXIS - Agentic Resume Workspace

Switch Language: 简体中文 Architecture

AXIS home

AXIS is an AI agent workspace for resume generation and refinement. It turns raw career materials, uploaded resumes, and target job descriptions into structured JSON Resume content, then routes the work through generation, JD matching, field-level rewriting, compression, LaTeX rendering, PDF export, cloud snapshots, and public sharing.

Why AXIS

  • Agentic workflow instead of one fixed prompt.
  • Schema-first resume data instead of fragile free text.
  • RAG memory over projects, skills, previous versions, and target roles.
  • Field-level editing and version rollback before PDF export.
  • Production-oriented Flask APIs with auth, usage limits, sharing, subscriptions, and payments.

Agent Architecture

AXIS separates intent, memory, task execution, and rendering.

flowchart LR
  U[User input / files / JD] --> API[Flask API]
  API --> RAG[RAG memory retrieval]
  API --> WF[LangGraph Resume Workflow]
  RAG --> WF
  WF --> IR[Intent Routing]
  IR --> G[Full generation]
  IR --> M[JD matching]
  IR --> L[Local rewrite]
  IR --> C[Compression]
  G --> JSON[JSON Resume]
  M --> JSON
  L --> JSON
  C --> JSON
  JSON --> PDF[LaTeX / PDF Renderer]
  JSON --> DB[(Snapshots + Vector Memory)]
  PDF --> FE[React editor preview]
Loading

Core backend pieces:

Area File Role
Agent workflow backend/services/resume_agent_workflow.py LangGraph task orchestration for import, generation, continuation, local edits, retargeting, compression, and polishing
Chat agent backend/services/resume_chat_agent.py Chat-panel intent handling, trace-friendly state, and response writing
RAG memory backend/services/resume_memory_service.py Embedding, vector storage, retrieval, and context formatting
Resume pipeline backend/services/resume_generation_pipeline.py Stable service boundary used by routes and graph nodes
Renderer backend/services/latex_service.py Structured JSON Resume to LaTeX/PDF

RAG Memory

Saved and generated resumes are indexed into resume_memory_vectors:

  • project and work experience chunks
  • skill keywords
  • awards and optimization summaries
  • target JD and role instructions

The default embedding is deterministic and database-backed, so local tests and low-cost deployments work without another vector service. The storage boundary can later be swapped for pgvector or an external vector database without changing the agent workflow contract.

Product Surface

AXIS editor

Module Capability
Editor Agent chat, file input, field editing, template/layout controls, PDF preview
Resume tools parsing, structured generation, JD matching, local rewrite, compression, LaTeX compile, PDF export
Persistence cloud save, snapshots, rollback, public share links
Account email verification, login, OAuth hooks, password reset, profile management
Billing Free/Pro/Max entitlements, Stripe, Alipay, Bitcoin unique-amount flow

Tech Stack

Layer Stack
Frontend React 18, Vite, React Router, i18next, TipTap, react-pdf
Backend Flask 3, LangGraph, SQLAlchemy 2, Alembic, Pydantic, PyJWT
AI OpenAI-compatible chat API, Google AI Studio fallback
Data Postgres in Docker, SQLite fallback, DB-backed vector memory
Render LaTeX template renderer and PDF compilation
Deploy Docker Compose, Gunicorn backend, Nginx frontend

Architecture Docs

View Architecture

Getting Started

cp .env.example .env
docker compose up --build

Open:

Run locally without Docker:

python -m venv .venv
source .venv/bin/activate
pip install -r backend/requirements.txt
alembic upgrade head
python -m flask --app backend.app run --host 0.0.0.0 --port 5001 --debug
cd frontend
npm install
npm run dev

Production-style compose:

docker compose -f docker-compose.prod.yml up --build

Checks

python -m pytest backend/tests
cd frontend && npm run build

About

AI-powered resume refiner for creating polished, editable, ATS-friendly resumes.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors