An AI-powered job discovery and application platform.
Upload your resume once. Get AI-ranked LinkedIn jobs. Apply in one click.
π Architecture Β· π€ Contributing Β· π Report Bug Β· β¨ Request Feature
Important
Local-First, Single-User Design β JobFlow runs entirely on your local machine. A single default user (user_id=1) is seeded at startup, and all API endpoints use this fixed user ID. There is no authentication, login system, or multi-user support. This is by design β the app is a personal productivity tool, not a hosted multi-tenant service.
| Landing Page | Guide | Dashboard |
|---|---|---|
![]() |
![]() |
![]() |
| Hero, features overview | Step-by step guide | Resume upload + AI-ranked jobs |
- β¨ Features
- ποΈ Architecture
- π How It Works
- π Tech Stack
- π οΈ Project Setup
- π Project Structure
- π€ Contributing
- π§βπ» Development Notes
- π License
- Resume Upload β Upload your PDF resume to power personalized job matching
- LinkedIn Job Scraping β Discover live job listings by role and location via Apify
- AI Fit Scoring β Every job scored 1β10 against your resume with plain-English reasoning
- Application Auto-Filler β Chrome Extension auto-fills job application forms using your profile
- Smart Form Detection β Works on Google Forms, Lever, Greenhouse, and most ATS platforms
- User-Friendly Dashboard β Clean, dark-themed interface with animated score cards
- Step-by-Step Guide β Built-in guidebook so users can hit the ground running
JobFlow has three independently runnable components that work together:
| Component | Technology | Role |
|---|---|---|
frontend/ |
Next.js + React + Tailwind | Dashboard, landing page, guide |
backend/ |
FastAPI + Celery + PostgreSQL | REST API, async AI/scraping tasks |
extension/ |
Chrome Extension (MV3) | Autofills job application forms |
π Read the full architecture guide β
- Upload your PDF resume β parsed once by AI (Docling)
- Search by role and location β Apify scrapes live LinkedIn listings
- AI scores each job against your resume (Groq Llama 3.1) β takes 2β3 min
- Review ranked results with fit scores and reasoning
- Apply β Chrome Extension autofills the form for you (Groq Llama 3.3)
| Layer | Technology |
|---|---|
| Frontend | Next.js 16, React 19, Tailwind CSS v4, TypeScript |
| Backend | FastAPI, Python 3.12+, Celery, SQLModel |
| Database | PostgreSQL (via Docker) |
| Queue | Redis + Celery (async tasks) |
| AI Models | Groq API β Llama 3.1 (scoring), Llama 3.3 (answer gen) |
| Scraping | Apify (LinkedIn jobs) |
| PDF Parsing | Docling |
| Extension | Chrome Manifest V3 |
- Python 3.12+ and
uv - Node.js 18+ and
npm - Docker + Docker Compose
- Google Chrome
cd backend
cp .env.example .envOpen .env and set your API keys:
GROQ_API_KEY=your_groq_api_key_here
APIFY_API_TOKEN=your_apify_token_hereπ No Apify account yet? See
backend/docs/get-apify-token.md
π No Groq account yet? Get a free key at console.groq.com
Start Docker services and apply migrations:
./setup.shStart the API server and Celery worker (two terminals required):
# Terminal 1 β API server
cd backend
uv run uvicorn app.main:app --reload
# Terminal 2 β Celery worker
cd backend
uv run celery -A app.worker.celery_app worker --loglevel=info
# macOS: add --pool=solo if you see forking errorsπ Full backend details:
backend/README.md
cd frontend
npm install
npm run devVisit http://localhost:3000
- Open
chrome://extensions/in Chrome - Enable Developer mode (top right toggle)
- Click Load unpacked β select the
extension/folder
π Extension contributor guide:
extension/README.md
JobFlow/
βββ docs/ # Architecture diagrams, data flow, images
β βββ ARCHITECTURE.md # Full system architecture reference
β βββ images/ # Diagrams and screenshots
βββ frontend/ # Next.js web app (dashboard, guide, landing)
β βββ app/
β βββ components/ # Navbar, JobCard, ResumeSection, JobSearch
β βββ dashboard/ # Main user workflow page
β βββ guide/ # Usage tutorial page
βββ backend/ # FastAPI API + Celery workers + AI logic
β βββ app/
β β βββ api/ # HTTP route handlers
β β βββ services/ # Business logic (parsing, scoring, discovery)
β β βββ worker/ # Async Celery tasks
β βββ docs/ # API reference, engineering journal, guides
βββ extension/ # Chrome Extension for application autofilling
βββ content.js # Form field scraper and filler
βββ background.js # API relay service worker
βββ popup.html/js # Extension UI
Contributions are welcome β from first-timers to experienced engineers!
1. Browse open issues β pick one labeled "good first issue" or "gssoc"
2. Comment to claim it
3. Fork β branch β code β PR
π Full Contributing Guide β
π Browse Open Issues β
π Architecture Reference β
- Find an issue labeled
gssocorgood first issue - Comment on the issue before starting β don't open a PR on an unclaimed issue
- One issue at a time per contributor
- PRs should link to their issue:
Closes #42
- API Explorer: When the backend is running, visit
http://localhost:8000/docsfor interactive Swagger UI - Engineering Journal:
backend/docs/log.mddocuments every major decision β highly recommended reading for contributors - Bruno Collection:
backend/bruno/contains a ready-to-use API collection for testing endpoints
This project is MIT licensed.




