Gmail opportunity progress
Skill ArthurZakirov/OpportunityOS/skills/gmail-opportunity-progress
Opportunity workflows for applications, registrations, browser handoffs, and supporting documents.
npx -y skills add ArthurZakirov/OpportunityOS --skill gmail-opportunity-progressAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Monitor Gmail for job or opportunity application updates, classify messages such as confirmations, rejections, interview invites, assessments, and follow-ups, then update a tracker or Notion opportunity database without coupling to the application execution skill.
SKILL.md
4.9 KB, 953 tokens by cl100k_base, as published. Nobody here has run it
Gmail Opportunity Progress
Purpose
Use this skill when application progress should be inferred from email and written back to an opportunity tracker.
This skill replaces brittle keyword-only Gmail filtering with a two-stage workflow:
- Use deterministic Gmail queries to reduce the inbox to likely opportunity messages.
- Use message content, sender, subject, thread context, and tracker rows to classify the real application event.
Do not invoke or modify job-application-operator from this skill. This skill tracks outcomes after applications have been submitted or when companies send next-step instructions.
Tool Boundary
Use Gmail MCP/API tools for:
- searching recent messages and threads
- reading subject, sender, recipients, date, labels, snippets, and body
- finding related thread messages
Use Notion MCP/API or another tracker API for:
- matching messages to existing opportunity rows
- updating
Status - appending concise progress notes
- storing next action and relevant deadlines if the schema supports them
Do not use browser automation to read Gmail or edit Notion when MCP/API access exists.
Candidate Email Search
Start with bounded Gmail searches. Prefer recent windows unless the user asks for a historical import.
Useful first-pass query terms:
(application OR applied OR Bewerbung OR candidate OR interview OR assessment OR challenge OR rejection OR leider OR unfortunately OR congratulations OR next step OR schedule OR calendly OR confirmation)
Useful exclusions:
-github -newsletter -promotion -unsubscribe
If the mailbox has labels such as JOBS or JOBS/<status>, use them as hints, not ground truth. Older label names may reflect previous workflows and should not override message content.
Classification
Classify each relevant message into one of these event types:
submission_confirmation: confirms the application was receivedrejection: rejects the candidate or says the company will not proceedinterview_invite: asks the candidate to book or choose interview time slotsinterview_scheduled: confirms a booked interview timeinterview_followup: discusses next interview steps, rescheduling, or post-interview feedbackassessment_received: sends an online assessment, take-home, coding challenge, work sample, or timed testassessment_reminder: reminds about an unsubmitted assessment or deadlineassessment_submitted: confirms assessment submission or receiptcompany_question: asks for missing information, documents, availability, work authorization, salary expectations, or clarificationnon_actionable: marketing, job alerts, newsletters, generic career-site emails, unrelated recruiter outreach, or duplicate noise
When uncertain, prefer company_question or leave status unchanged and report the ambiguity.
Status Mapping
Map email events to tracker status:
submission_confirmation->Waiting for responserejection->Rejectedinterview_invite->Interview inviteinterview_scheduled->Interview scheduledinterview_followupafter a completed meeting ->Interview completedorWaiting for response, depending on the contentassessment_received->Assessment receivedassessment_reminder-> keepAssessment receivedorAssessment in progressassessment_submitted->Assessment submittedcompany_question->Human blockednon_actionable-> no status change
Do not collapse all positive responses into Interviewing; use the finer-grained statuses so the next action is visible.
Matching Messages To Rows
Match in this order:
- Exact company name in sender domain, subject, or body.
- Exact role title in subject or body.
- Application portal domain from the row URL.
- Thread history containing earlier application confirmation.
- Recruiter/company email domain plus a single plausible active row.
If multiple rows match, do not update automatically. Return the candidate matches and the reason for ambiguity.
Writeback Rules
For each updated row, write:
Status: mapped status from the email eventRationaleor progress notes field: short note with message date, sender/company, event type, and next action- Deadline field, if present: assessment due date or scheduling deadline
Do not paste full email bodies into the tracker. Summarize only the operational fact needed for the pipeline.
Review Output
Return a concise report:
- messages scanned
- relevant messages found
- rows updated
- skipped ambiguous matches
- next human actions
- deadlines found
For destructive or irreversible actions, ask before acting. Status updates based on clear email evidence are safe to perform directly.