OfferTracker is a job application tracking app that scans a connected mailbox, classifies job-related email, summarizes the pipeline, and helps users decide what to do next for each application.
- Connects Gmail or Outlook with read-only OAuth
- Scans a date range and classifies email into job application events
- Builds per-company application rows with statuses like
Applied,Interviewing,Rejected, andOffer - Generates a branded Sankey image for the pipeline summary
- Shows message-level classifications and application-level details in the web UI
- Sorts application details by pipeline priority:
OfferInterviewingAppliedRejected
- Includes a demo mode in the frontend so the dashboard can be reviewed without rescanning
- Gives each application row its own expandable action card with:
- next-step actions
- sender / contact route
- follow-up draft when direct reply is realistic
- recruiter / hiring manager / LinkedIn / careers-page search shortcuts
- Mobile-first dashboard updates for laptop and phone layouts
- Warmer branded UI based on the OfferTracker logo
- Demo Sankey image shown with fake data
- Expandable details per application row instead of separate global action sections
- Sender-aware follow-up guidance:
- direct follow-up for replyable senders
Find Contactfornoreply/ system mailboxesCheck ATS/ recruiter search for ATS platforms
api/: FastAPI backend endpoints, including auth and scan APIsapp/: app/server support codefrontend/: React + Vite frontendskills/job_tracker/: parsing, classification, Sankey rendering, and reporting pipelinetests/: Python test suiteoutput/: generated scan artifacts and debug outputs
Install Python and frontend dependencies from the repo root:
python3 -m pip install -r requirements.txt
cd frontend && npm ci && cd ..Run the backend:
uvicorn api.server:app --reloadRun the frontend:
cd frontend
npm run devBuild the frontend:
cd frontend
npm run build- The dashboard starts with demo data by default so the UI can be tested without scanning
- Running a real scan replaces the demo data with live results from the backend
- The Sankey preview is shown directly in the dashboard
- Each row in
Private: Application Detailscan be expanded to show row-specific actions and follow-up guidance
Run the Python tests from the repo root:
PYTHONPATH=. pytest -qRun the frontend production build check:
cd frontend
npm run build- Mail access is read-only
- OfferTracker does not need to store raw mailbox content in the frontend flow
- Some follow-up actions are intentionally stateless right now: the UI helps users act immediately without requiring a database