--- id: post-application-workflow title: Post-Application Workflow description: Track post-application progress manually, or configure automatic Gmail syncing and inbox review. sidebar_position: 2 --- ## Goal After a job is marked `applied`, use this workflow to track what happens next. You have two valid paths: - **Manual tracking**: update stages/events yourself. - **Automatic Gmail sync**: let email ingestion route events into inbox/review flow. ## Option A: Manual event tracking Use this when you want explicit, hands-on control for each job. ### Manual flow 1. Open an `applied` or `in_progress` job. 2. Record stage progress as events (screening, interview, offer, closed, etc.). 3. Keep notes/outcomes current as conversations progress. 4. Use In Progress Board for high-attention jobs in later stages. ### API example (manual stage transition) ```bash curl -X POST "http://localhost:3001/api/jobs//stages" \ -H "content-type: application/json" \ -d '{ "toStage": "technical_interview", "metadata": { "actor": "user", "eventType": "status_update", "eventLabel": "Moved to Technical Interview" } }' ``` ## Option B: Automatic Gmail syncing Use this when you want JobOps to ingest recruitment emails and suggest/apply updates. ### High-level flow 1. Connect Gmail provider. 2. Run sync (or scheduled sync, depending on setup). 3. Smart router scores message-to-job match. 4. High confidence updates are auto-linked. 5. Mid/low confidence items go to inbox for review. ### Configure Gmail sync Set OAuth variables: ```bash GMAIL_OAUTH_CLIENT_ID=... GMAIL_OAUTH_CLIENT_SECRET=... GMAIL_OAUTH_REDIRECT_URI=https://your-domain.com/oauth/gmail/callback ``` Then in app: 1. Open Tracking Inbox / provider controls. 2. Start Gmail OAuth. 3. Complete consent. 4. Trigger sync and review inbox items. ### API examples (Gmail path) ```bash # Start OAuth curl "http://localhost:3001/api/post-application/providers/gmail/oauth/start?accountKey=default" ``` ```bash # Exchange authorization code curl -X POST "http://localhost:3001/api/post-application/providers/gmail/oauth/exchange" \ -H "content-type: application/json" \ -d '{"accountKey":"default","state":"","code":""}' ``` ```bash # Trigger provider sync action curl -X POST "http://localhost:3001/api/post-application/providers/gmail/actions/sync" \ -H "content-type: application/json" \ -d '{"accountKey":"default","maxMessages":100,"searchDays":30}' ``` ```bash # Review inbox curl "http://localhost:3001/api/post-application/inbox?provider=gmail&accountKey=default" ``` ```bash # Approve inbox item curl -X POST "http://localhost:3001/api/post-application/inbox//approve" \ -H "content-type: application/json" \ -d '{"provider":"gmail","accountKey":"default"}' ``` ```bash # Deny inbox item curl -X POST "http://localhost:3001/api/post-application/inbox//deny" \ -H "content-type: application/json" \ -d '{"provider":"gmail","accountKey":"default"}' ``` ## Which option should you use? - Choose **manual** if your volume is low and you want direct control. - Choose **automatic Gmail sync** if your volume is higher and you want less repetitive triage. - Many users combine both: auto-sync first, manual adjustments for edge cases. ## Common problems ### Gmail connected but no messages appear - Verify OAuth credentials and redirect URI. - Confirm you are syncing the intended account key. - Check search window (`searchDays`) and message cap (`maxMessages`). ### Wrong job matched - Expected in lower-confidence buckets. - Deny incorrect inbox items and apply manual stage updates where needed. ### I prefer not to grant Gmail access - Use the manual tracking path only. - The post-application workflow still works without Gmail integration. ## Related pages - [Find Jobs and Apply Workflow](./find-jobs-and-apply-workflow) - [Post-Application Tracking](../features/post-application-tracking) - [In Progress Board](../features/in-progress-board) - [Overview](../features/overview)