ApplyVista is an intelligent, offline-first job application assistant that generates ATS-ready skills summaries, cover letters, recruiter emails, and follow-up emails β all grounded in your own resume and project documents using a Retrieval-Augmented Generation (RAG) pipeline.
It also discovers engineers at companies you're applying to via GitHub, and runs an automated job scout every 6 hours that searches LinkedIn and Seek for new opportunities and sends email alerts.
βββββββββββββββββββββββββββββββββββββββββββββββ
β Next.js Frontend (localhost:3000) β
β shadcn/ui + Tailwind β
β Pages: / (apply) + /scout (job scout) β
βββββββββββββββ¬ββββββββββββββββββββββββββββββββ
β HTTP
βββββββββββββββΌββββββββββββββββββββββββββββββββ
β FastAPI Backend (localhost:8000) β
β βββ POST /jd β LangGraph pipeline β
β βββ POST /export/docx|pdf β
β βββ GET /download/{filename} β
β βββ GET /scout/jobs β
β βββ GET /scout/status β
β βββ POST /scout/run β
ββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
ββββββββΌβββββββββββββββββββββββββββββββββββββββ
β LangGraph Pipeline β
β extract_metadata β [generate_docs || β
β github_search] β save_excel β
ββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β βββββββββββββββββββ
β β APScheduler β
β β Every 6 hours β
β β β β
β β Job Scout β
β β (DuckDuckGo) β
β β β β
β β Email Alert β
βββββββββββββββββββββββ΄ββββββββββββββββββ
- Indexes your CV and project docs into ChromaDB
- Retrieves the most relevant context per query
- Generates 6 tailored outputs per job description:
- Skills & Keywords
- Cover Letter
- Application Emails (3 variants)
- ATS Resume Summary
- "Why this role?" short response
- Cold recruiter outreach email
- Stateful graph replaces the old sequential pipeline
extract_metadataβ parallel fan-out βsave_excelgenerate_docsandgithub_searchrun concurrently
- Searches GitHub for engineers at the company in the JD
- Returns name, email, bio, location, top languages, repo count
- Exports results to a 2-sheet Excel file
- Runs automatically every 6 hours via APScheduler
- Searches LinkedIn and Seek using DuckDuckGo
- Scores each result by keyword overlap with your skills
- Deduplicates against previously seen jobs
- Appends new jobs to a persistent Excel file
- Sends a Gmail email alert listing new findings
- Paste a JD β click Generate β 7 tabs appear instantly
- Each tab has an editable text area + Download DOCX / PDF
- Engineers tab shows a GitHub profile table + Excel download
/scoutpage shows job scout status, jobs table, and a manual trigger button
- Powered by Ollama (Llama 3.2 3B by default)
- No API keys, no cloud calls, no cost, 100% private
| Component | Purpose |
|---|---|
| Next.js 16 | Frontend (React, App Router) |
| shadcn/ui + Tailwind | UI components |
| FastAPI | Backend REST API |
| LangGraph | Pipeline orchestration |
| LangChain | RAG chains and prompt building |
| Ollama | Local LLM runtime |
| ChromaDB | Vector store |
| SentenceTransformers | Embeddings (all-MiniLM-L6-v2) |
| APScheduler | Job scout scheduling |
| duckduckgo-search | Job search queries |
| openpyxl | Excel export |
| python-docx / fpdf | DOCX and PDF export |
ApplyVista/
βββ app/
β βββ api.py β FastAPI app (all endpoints)
βββ src/
β βββ rag_pipeline.py β Core RAG logic
β βββ langgraph_pipeline.py β LangGraph graph
β βββ github_agent.py β GitHub engineer discovery
β βββ job_scout_agent.py β Job search + email alerts
β βββ scheduler.py β APScheduler setup
β βββ config.py β Paths and model settings
β βββ text_utils.py β NLP utilities
β βββ profile_config.py β Your private profile (gitignored)
βββ frontend/
β βββ app/
β β βββ page.tsx β Main JD input + output tabs
β β βββ scout/page.tsx β Job scout dashboard
β βββ components/
β β βββ JDInput.tsx
β β βββ OutputTabs.tsx
β β βββ DocTab.tsx
β β βββ EngineersTable.tsx
β β βββ ScoutDashboard.tsx
β βββ lib/api.ts β Typed fetch helpers
βββ data/
β βββ job_rag/
β β βββ profile_docs/ β Drop your CV and project docs here
β β βββ chroma_db/ β Vector store (auto-generated)
β β βββ seen_jobs.json β Scout dedup store
β βββ outputs/ β Generated Excel, DOCX, PDF files
βββ .env.example
βββ requirements.txt
git clone https://github.com/sheikhmunim/ApplyVista.git
cd ApplyVistapython -m venv .venv
# Windows
.\.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate
pip install -r requirements.txtollama pull llama3.2:3b
ollama serveCopy the template and fill in your details:
cp src/profile_config\(template\).txt src/profile_config.pyDrop your CV (PDF) and any project docs into data/job_rag/profile_docs/.
cp .env.example .envEdit .env:
# Required
OLLAMA_HOST=http://localhost:11434
LLM_MODEL=llama3.2:3b
# Optional β GitHub engineer discovery
GITHUB_TOKEN=ghp_your_token_here
# Optional β Job scout email alerts (Gmail)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your_gmail@gmail.com
SMTP_PASSWORD=your_app_password # Gmail App Password, not account password
ALERT_EMAIL=your_gmail@gmail.com
# Job scout search config
SCOUT_ROLE=ML Engineer
SCOUT_LOCATION=MelbourneGmail App Password: myaccount.google.com β Security β App passwords (requires 2FA)
cd frontend
npm installTerminal 1 β Backend:
uvicorn app.api:app --reload --port 8000Terminal 2 β Frontend:
cd frontend
npm run dev| URL | Description |
|---|---|
| http://localhost:3000 | Main app |
| http://localhost:3000/scout | Job scout dashboard |
| http://localhost:8000/docs | Swagger API explorer |
| Method | Endpoint | Description |
|---|---|---|
POST |
/jd |
Run full LangGraph pipeline |
POST |
/export/docx |
Convert text to DOCX |
POST |
/export/pdf |
Convert text to PDF |
GET |
/download/{filename} |
Download a file from outputs/ |
GET |
/scout/jobs |
Get all scouted jobs as JSON |
GET |
/scout/status |
Scheduler status + job count |
POST |
/scout/run |
Manually trigger the scout |
POST |
/chat |
RAG chat over your profile docs |
GET |
/health |
Health check |
- Paste a job description into the input box
- Click Generate Documents and wait (~30β60s depending on hardware)
- Six document tabs appear β each is editable
- Download any tab as DOCX or PDF
- The Engineers tab shows GitHub profiles at the company + Excel download
- Open
/scoutto see jobs found automatically or click Search Now
MIT License
Sheikh Abdul Munim Master of Artificial Intelligence β RMIT University