ApplAI helps you run a repeatable JD-to-application flow: import a master CV once, review AI suggestions for each job description, and then export tailored files only when you approve the edits.
- Suggestions-first tailoring: review original vs suggested bullet edits before generating outputs.
- Import Master CV: upload DOCX/PDF, auto-detect sections, manually review/edit, and persist your canonical master.
- Template-aware rendering: stores section anchors in per-master config files so output is not tied to hardcoded headers.
- HTML-first rendering: final CV PDFs are generated from controlled HTML/CSS resume components, with DOCX kept as an editable compatibility output.
- ATS render validation: generated PDFs are checked for page count and extractable text before approval.
- Quick and deep modes: quick mode minimizes LLM-heavy steps; deep mode runs full rewriting and QA flow.
- Configurable rewriting: optional safe rewrites for experience and education with factual checks.
- Optional modules: independently toggle cover letter generation and ATS/QA analysis.
- Google Drive integration: optional upload and conversion of tailored DOCX outputs.
- Python + Streamlit for UI and orchestration.
- FastAPI for backend API routes and orchestration adapters.
- React + TypeScript (Vite) for the new web editing/tailoring workspace.
- Google Gemini API for structured extraction and rewrite suggestions.
- Pydantic for strict pipeline contracts.
- python-docx, pdfplumber, ReportLab for CV import and compatibility document output.
- Playwright/browser PDF rendering for HTML-first final CV exports.
-
Clone the repository:
git clone <your-repo-url> cd ApplAI
-
Set up your environment:
- Create a
.envfile with yourGEMINI_API_KEY. - Place your
google_credentials.jsonin the root (if using Google Drive sync).
- Create a
-
Install dependencies:
pip install -r requirements.txt
-
Run Streamlit fallback:
streamlit run app.py
From the repository root:
PYTHONPATH=. ./.venv/bin/python -m uvicorn api.app.main:app --reload- Health check:
http://127.0.0.1:8000/health - OpenAPI docs:
http://127.0.0.1:8000/docs
From the repository root:
cd web
npm install
npm run dev- Dev server URL:
http://127.0.0.1:5173. Port 5173 is pinned inweb/vite.config.ts(some Vite setups default to 3000; this repo does not use 3000 fornpm run devunless you change the config). - API base URL for the browser: copy
web/.env.exampletoweb/.envand setVITE_API_URL(for exampleVITE_API_URL=http://127.0.0.1:8000). Without a local.env, the app falls back to the same default as in.env.example. - After you finalize a master, use Edit on the Masters page (or open
/masters/<master_id>). The structured sections are stored indocs/json_exports/<master_id>.json, so a browser refresh reloads the same content from the API.
ApplAI now supports a first production scaffold for the dual-stack migration:
- FastAPI routes for master import/finalize, tailoring runs, exports, and run history.
- React + TypeScript workspace for master editing, tailoring execution, and run inspection.
- Existing Streamlit app (
app.py) remains fully available as a fallback path. - For parallel Cursor subagent runs (split API / web / integration, with specific prompt templates), see
docs/subagent-runbook.md.
- Import your master CV in the CV Library tab (DOCX recommended).
- Review and edit the detected section structure, then save.
- In Application Generator, paste a JD and choose your saved master JSON.
- Pick run mode/options, review suggestions, and export files when ready.
- Place source CV files under
docs/. - Structured master exports are stored in
docs/json_exports/. - Master template configs are stored in
docs/master_configs/. - If you heavily rearrange your master DOCX layout, run Import Master CV again to refresh anchors.
To enable automatic uploading and conversion of your CVs to Google Docs:
-
Create a Google Cloud Project:
- Go to Google Cloud Console.
- Create a new project (e.g.,
ApplAI-Integration).
-
Enable APIs:
- Navigate to APIs & Services > Library.
- Search for and Enable both Google Drive API and Google Docs API.
-
Create Service Account Credentials:
- Go to APIs & Services > Credentials.
- Click + CREATE CREDENTIALS > Service account.
- Name it
appl-ai-agentand click Create and Continue, then Done. - Click on the newly created service account email -> Keys tab > Add Key > Create new key (JSON).
- Rename the downloaded file to
google_credentials.jsonand place it in the project root.
-
Share a Folder:
- Create a folder in your personal Google Drive (e.g.,
ApplAI Final Outputs). - Share the folder with your Service Account email (found in Step 3) as an Editor.
- Copy the folder ID from the URL (the alphanumeric string at the end) and add it to your
.envfile:GOOGLE_DRIVE_FOLDER_ID=your_folder_id_here
- Create a folder in your personal Google Drive (e.g.,
The project includes a .gitignore to ensure your API keys and Google OAuth tokens are never committed to public repositories.
Created for smarter job hunting workflows.