{"id":"4acc2ec5-e9c3-46e6-8f22-b31cc0379c64","entityType":"agent","slug":"clawhub-chris-job-search-tracker","name":"Job Search Tracker","canonicalUrl":"https://www.xpersona.co/agent/clawhub-chris-job-search-tracker","canonicalPath":"/agent/clawhub-chris-job-search-tracker","generatedAt":"2026-10-11T14:15:07.472Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T09:44:43.129Z","emptyReason":null},"description":"Use this skill when someone is actively managing a job search and references applications, interviews, offers, or recruiter communication. Specific triggers:...","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17f63svb641q2stekk1cmcdn183k4rq:job-search-tracker","sourceUrl":"https://clawhub.ai/chris/job-search-tracker","homepage":"https://clawhub.ai/chris/skills/job-search-tracker","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/chris/job-search-tracker","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/chris/skills/job-search-tracker","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":40,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Job Search Tracker technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T09:44:43.129Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T09:44:43.129Z","emptyReason":null},"stars":null,"forks":null,"downloads":1096,"packageName":null,"latestVersion":"1.1.2","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T09:44:43.129Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T09:44:43.129Z","lastCrawledAt":"2026-10-11T09:44:43.129Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T09:44:43.129Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.2","createdAt":"2026-06-08T21:14:20.319Z","changelog":"Rewrote Data Handling section to accurately describe tool usage; added Permissions and Privacy section to README; narrowed triggers","fileCount":7,"zipByteSize":18240},{"version":"1.1.1","createdAt":"2026-06-08T18:10:49.286Z","changelog":"Added Data Handling and Privacy section clarifying instruction-only behavior, local storage, and no telemetry","fileCount":7,"zipByteSize":16810},{"version":"1.1.0","createdAt":"2026-05-12T19:39:57.897Z","changelog":"v1.1.0 - Salary negotiation flow with counter-offer analysis, resume recommender from resumes/ directory, tone check pass on user drafts.","fileCount":7,"zipByteSize":15984},{"version":"1.0.0","createdAt":"2026-04-12T19:23:43.140Z","changelog":"Job Search Tracker 1.0.0 — Initial Release - Launches a comprehensive job search tracker: track applications from initial submission to offer, all in a single markdown file (`applications.md`). - Integrates with Gmail and LinkedIn (when available) to auto-detect applications, retrieve updates, and pull context. - Flags stale applications, upcoming interviews, and overdue follow-ups with proactive reminders and dashboard summaries. - Assists with drafting cover letters, follow-up emails, thank-you notes, and interview prep materials based on application data. - Provides analytics and an at-a-glance dashboard to monitor job search progress.","fileCount":2,"zipByteSize":5714}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17f63svb641q2stekk1cmcdn183k4rq:job-search-tracker","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17f63svb641q2stekk1cmcdn183k4rq:job-search-tracker` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/chris/job-search-tracker before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chris-job-search-tracker/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chris-job-search-tracker/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chris-job-search-tracker/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chris-job-search-tracker/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chris-job-search-tracker/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chris-job-search-tracker/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T14:15:07.465Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chris-job-search-tracker/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chris-job-search-tracker/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chris-job-search-tracker/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chris-job-search-tracker/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T09:44:43.129Z","emptyReason":null},"readme":"Skill: Job Search Tracker\n\nOwner: chris\n\nSummary: Use this skill when someone is actively managing a job search and references applications, interviews, offers, or recruiter communication. Specific triggers:...\n\nTags: applications:1.0.0, career:1.0.0, cover-letter:1.0.0, email:1.0.0, follow-up:1.0.0, interview-prep:1.0.0, job-search:1.0.0, latest:1.1.2, pipeline:1.0.0, productivity:1.0.0, resume:1.0.0\n\nVersion history:\n\nv1.1.2 | 2026-06-08T21:14:20.319Z | user\n\nRewrote Data Handling section to accurately describe tool usage; added Permissions and Privacy section to README; narrowed triggers\n\nv1.1.1 | 2026-06-08T18:10:49.286Z | user\n\nAdded Data Handling and Privacy section clarifying instruction-only behavior, local storage, and no telemetry\n\nv1.1.0 | 2026-05-12T19:39:57.897Z | user\n\nv1.1.0 - Salary negotiation flow with counter-offer analysis, resume recommender from resumes/ directory, tone check pass on user drafts.\n\nv1.0.0 | 2026-04-12T19:23:43.140Z | user\n\nJob Search Tracker 1.0.0 — Initial Release\n\n- Launches a comprehensive job search tracker: track applications from initial submission to offer, all in a single markdown file (`applications.md`).\n- Integrates with Gmail and LinkedIn (when available) to auto-detect applications, retrieve updates, and pull context.\n- Flags stale applications, upcoming interviews, and overdue follow-ups with proactive reminders and dashboard summaries.\n- Assists with drafting cover letters, follow-up emails, thank-you notes, and interview prep materials based on application data.\n- Provides analytics and an at-a-glance dashboard to monitor job search progress.\n\nArchive index:\n\nArchive v1.1.2: 7 files, 18240 bytes\n\nFiles: CHANGELOG.md (3155b), evals/evals.json (4374b), evals/files/sample-applications.md (4227b), README.md (4362b), skill-card.md (2435b), SKILL.md (22538b), _meta.json (137b)\n\nFile v1.1.2:SKILL.md\n\n---\nname: job-search-tracker\nversion: 1.1.2\ndescription: \"Use this skill when someone is actively managing a job search and references applications, interviews, offers, or recruiter communication. Specific triggers: 'I applied to [company],' 'just submitted an application,' 'track this job,' 'job search dashboard,' 'what jobs have I applied to,' 'any responses from [company] yet,' 'haven't heard back from [company],' 'prep me for the [company] interview,' 'draft a cover letter for [company/role],' 'write a follow-up email to [company/recruiter],' 'thank-you note for the [company] interview,' 'got rejected from [company],' 'got an offer from [company],' 'help me negotiate the [company] offer,' 'salary negotiation,' 'which resume should I send for [posting],' 'does this [draft] sound desperate or templated,' or any message that explicitly names a company in a hiring context. Do NOT trigger on general productivity questions, calendar requests, or unrelated email tasks. Covers: application tracking in a local markdown file, stale-application detection, follow-up and cover-letter drafting with tracker context, interview prep, salary negotiation analysis and counter-offer drafting, tone checks on user drafts, resume-variant recommendations, and optional Gmail/LinkedIn lookups (user-mediated, see Data Handling).\"\nmetadata:\n  openclaw:\n    emoji: 🎯\n---\n\n# Job Search Tracker\n\nA complete job search command center. Tracks every application from discovery to offer, integrates with Gmail and LinkedIn for context, flags stale applications that need follow-up, and helps draft cover letters, follow-up emails, and interview prep materials.\n\n## Why this exists\n\nJob searching while juggling other responsibilities is chaotic. You apply to 30 places, lose track of which ones you followed up on, forget the recruiter's name, and can't remember which version of your resume you sent. This skill keeps it all in one place and does the busywork for you.\n\n---\n\n## The Applications File\n\nAll application data lives in a single markdown file: `applications.md` in the current working directory (or wherever the user specifies). This file is the source of truth for the entire job search.\n\n### File structure\n\n```markdown\n# Job Search Tracker\n\n_Last updated: YYYY-MM-DD_\n_Active applications: X | Interviews: X | Offers: X | Closed: X_\n\n---\n\n## [Company Name] - [Role Title]\n- **Status**: [Applied | Screening | Interviewing | Final Round | Offer | Accepted | Rejected | Withdrawn | Ghosted]\n- **Date Applied**: YYYY-MM-DD\n- **Posting URL**: [link]\n- **Salary Range**: [what's listed or discussed]\n- **Resume Version**: [which resume was sent]\n- **Cover Letter**: [yes/no, and which version or key angle used]\n- **Source**: [LinkedIn Easy Apply | Company Site | Referral | Recruiter Outreach | Job Board]\n\n### Contacts\n- [Name] - [Title] (e.g., \"Sarah Chen - Senior Recruiter\") - [email if known]\n- [Name] - [Title] - [email if known]\n\n### Timeline\n- YYYY-MM-DD: Applied via [source]\n- YYYY-MM-DD: [Event - e.g., \"Phone screen with Sarah Chen\", \"Received coding assessment\", \"Sent follow-up email\"]\n\n### Notes\n[Freeform notes - anything relevant about the role, company, conversations, gut feelings, red flags, compensation details discussed]\n\n### Follow-up\n- **Next action**: [what needs to happen next]\n- **Due by**: [date]\n- **Last contact**: [date of most recent communication]\n\n---\n```\n\nEach company gets its own section with the `## Company - Role` header. Sections are ordered by status priority: active applications first (Interviewing > Screening > Applied), then closed ones (Offers > Accepted > Rejected > Withdrawn > Ghosted) at the bottom.\n\n### Creating the file\n\nIf `applications.md` doesn't exist when the user asks to track something, create it with the header and their first application. Don't make a big deal of setup; just start tracking.\n\n### Updating entries\n\nWhen the user reports a status change (\"I heard back from Stripe\" or \"got rejected from Google\"), update the relevant section: change the status, add a timeline entry with today's date, and update the follow-up section. If they mention a new contact name, add it to Contacts.\n\n---\n\n## Gmail Integration\n\nThis skill works best when Gmail access is available (via MCP tools, the Gmail skill, or IMAP). When email tools are available, use them. When they're not, work with whatever the user tells you manually.\n\n### Auto-detecting applications\n\nWhen the user asks you to scan their email for applications (or when doing a periodic check-in):\n\n1. Search Gmail for recent application-related emails using queries like:\n   - `subject:\"application received\" OR subject:\"application confirmed\" OR subject:\"thank you for applying\" OR subject:\"we received your application\"`\n   - `from:notifications@linkedin.com subject:\"application\"`\n   - `subject:\"next steps\" from:recruiting OR from:talent OR from:careers`\n2. For each result, extract: company name, role title, date, and any recruiter names mentioned\n3. Cross-reference against `applications.md` to avoid duplicates\n4. Present new finds to the user: \"I found 3 applications in your email that aren't in your tracker yet. Want me to add them?\"\n5. Only add entries the user confirms\n\n### Pulling context on demand\n\nWhen the user asks about a specific company or the skill needs more context:\n\n1. Search Gmail for threads involving that company name\n2. Surface relevant emails: recruiter messages, interview scheduling, assessment links, offer details\n3. Summarize what the email trail shows (last contact date, who reached out, what stage it suggests)\n\n---\n\n## LinkedIn Integration\n\nLinkedIn integration works through browser automation or the LinkedIn skill/MCP if available. Since LinkedIn access can be unreliable, design all features to work without it and treat LinkedIn data as a bonus layer.\n\n### Tracking applications\n\nWhen the user mentions applying through LinkedIn or asks to check their recent applications:\n\n1. If browser tools are available, navigate to LinkedIn's \"My Jobs\" > \"Applied\" tab\n2. Extract recent applications: company, role, date applied\n3. Cross-reference against `applications.md`\n4. Present new ones for confirmation before adding\n\n### Research on demand\n\nWhen adding a new application or prepping for an interview:\n\n1. Look up the company on LinkedIn for: company size, industry, recent news/posts, key people in the department\n2. Check if the user has any connections at the company\n3. Look up the hiring manager or recruiter if named\n4. Summarize findings in a research brief\n\nIf LinkedIn isn't accessible, fall back to web search for company research. The research should happen regardless; LinkedIn is just one source.\n\n---\n\n## Resume Recommender\n\nMany users keep multiple resume variants tailored to different job types (e.g., \"engineering-focused,\" \"leadership-focused,\" \"generalist\"). This skill can suggest the best variant for a given posting.\n\n### Storing resume variants\n\nResumes live in a `resumes/` directory alongside `applications.md`. Each variant is a markdown or text file named for its slant:\n\n```\nresumes/\n  engineering-focused.md\n  leadership-focused.md\n  generalist.md\n```\n\nEach file should start with a one-paragraph self-description that summarizes the angle it takes. The skill reads these descriptions to make recommendations. It does not need the full resume content for matching, just the description block at the top.\n\n### Recommending a variant\n\nWhen the user adds a new application, asks \"which resume should I send?\", or pastes a job posting:\n\n1. Read the job posting (from URL, pasted text, or the tracker entry)\n2. Read each resume's self-description from `resumes/`\n3. Extract key signals from the posting: required skills, seniority level, team size, company size, work style cues (remote/hybrid/onsite, IC vs management)\n4. Recommend the variant whose self-description best matches those signals\n5. Present the recommendation with a one-line rationale: \"Suggested: leadership-focused.md (the posting emphasizes managing a cross-functional team and reporting to a VP)\"\n6. Offer to log the choice to the tracker entry's `Resume Version` field\n\nIf no `resumes/` directory exists, prompt the user once: \"I don't see saved resume variants. Want to set up the `resumes/` folder, or just track which version you sent each time?\" Don't badger after the initial prompt; respect \"no\" the first time.\n\n---\n\n## Proactive Reminders and Follow-ups\n\nThis is one of the most valuable features. Job seekers lose opportunities by not following up.\n\n### Stale application detection\n\nWhen the user opens their tracker or asks \"what needs attention\", scan all active applications and flag:\n\n- **No response in 7+ days after applying**: Suggest sending a follow-up email\n- **No response in 3+ days after an interview**: Suggest a thank-you note or check-in\n- **Scheduled interview coming up in 48 hours**: Prompt for interview prep\n- **No activity in 14+ days on any active application**: Suggest checking in or marking as Ghosted\n- **Follow-up due date passed**: Highlight overdue items\n\n### Dashboard view\n\nWhen the user asks for their job search status, dashboard, or overview, generate a summary:\n\n```markdown\n# Job Search Dashboard\n_As of YYYY-MM-DD_\n\n## Needs Attention (X items)\n- **[Company] - [Role]**: No response in 10 days. Consider following up.\n- **[Company] - [Role]**: Interview tomorrow. Run interview prep?\n- **[Company] - [Role]**: Follow-up was due 2 days ago.\n\n## Pipeline Summary\n- Actively interviewing: X\n- Waiting to hear back: X\n- Applied recently (< 7 days): X\n- Total active: X\n- Closed this month: X (Y rejected, Z withdrawn)\n\n## Recent Activity\n- [Date]: [Event summary]\n- [Date]: [Event summary]\n- [Date]: [Event summary]\n\n## Stats\n- Applications this week: X\n- Response rate: X%\n- Average time to first response: X days\n```\n\n---\n\n## Drafting Help\n\nThe skill helps draft outreach materials tailored to each specific application. The key value here is that the skill has all the context from the tracker -- it knows what role the user applied for, who they've been talking to, and what's happened so far.\n\n### Cover letters\n\nWhen the user asks for a cover letter:\n\n1. Ask for the job posting URL or description (or pull it from the tracker if already saved)\n2. Ask which resume version they're using (or check the tracker)\n3. Draft a cover letter that:\n   - Opens with something specific about the company, not generic praise\n   - Connects the user's actual experience to the role's requirements\n   - Keeps it to one page, three to four paragraphs\n   - Avoids cliches (\"passionate about,\" \"excited to bring my skills\")\n   - Sounds like a real person wrote it, not a template\n4. Save a note in the tracker about which angle the cover letter took\n\n### Follow-up emails\n\nWhen following up on an application or after an interview:\n\n1. Check the tracker for context: when they applied, who they've talked to, what stage they're in\n2. Draft an email that:\n   - References the specific role and conversation\n   - Adds something of value (a thought from the interview, a relevant article, a brief example of their work)\n   - Is short and direct (under 150 words for follow-ups)\n   - Has a clear ask or next step\n3. After presenting the draft, always offer to log this follow-up in the tracker: \"Want me to add this to your timeline and update the follow-up date?\"\n4. If the user confirms (or doesn't object), add a timeline entry and update the follow-up section with the new date\n\n### Thank-you notes\n\nAfter an interview:\n\n1. Ask who they met with and what was discussed (or pull from tracker notes)\n2. Draft a note that:\n   - References something specific from the conversation\n   - Reinforces fit for the role\n   - Is genuine, not formulaic\n3. One thank-you per interviewer if they met multiple people, with slight variations so they don't look identical if compared\n\n### Tone check on user drafts\n\nWhen the user pastes their own draft and asks for a check (or says \"does this sound desperate,\" \"is this templated,\" \"does this sound okay\"), run a quick tone pass before they send.\n\n**Flag categories**\n\n- **Desperate signals**: \"I'll do anything,\" \"any role,\" \"please consider me,\" stacked over-thanking (\"thank you so much for your time\" appearing twice), excessive flexibility statements (\"I'm open to anything,\" \"happy to start whenever\")\n- **Templated signals**: openings like \"I hope this email finds you well,\" \"I am writing to,\" generic praise of the company (\"a leader in the industry,\" \"world-class team\"), zero specifics pulled from the actual job posting or prior conversation\n- **Negative framing**: apologizing for gaps, leading with weakness, \"I know I'm a long shot,\" \"I may not have all the qualifications but\"\n- **Length issues**: follow-ups over 200 words, cover letter paragraphs over 5 sentences, opening paragraph that doesn't get to the point in 2 sentences\n\n**Output format**\n\n```\nTone read: [Tight | Mostly fine, some flags | Needs work]\n\nFlags found:\n1. [Category] — \"[exact phrase from draft]\" — why it lands flat\n2. ...\n\nSuggested revisions:\n- \"[phrase]\" → \"[better phrase]\"\n- ...\n```\n\nIf the draft is already tight, say so directly: \"Reads well. Nothing to fix. Ready to send.\"\n\nDo not rewrite the entire draft unless the user asks. The goal is a targeted edit, not a full rewrite that erases their voice.\n\n---\n\n## Interview Prep\n\nWhen the user has an upcoming interview or asks to prep for one:\n\n### Company research brief\n\nGenerate a one-page brief covering:\n- What the company does (in plain language, not marketing copy)\n- Recent news, product launches, or challenges\n- Company size, funding stage, growth trajectory\n- Culture signals (from job posting language, Glassdoor, LinkedIn posts)\n- Key people they might meet (from LinkedIn or the tracker's contacts)\n\n### Role-specific prep\n\nBased on the job posting:\n- Key skills/requirements they should be ready to demonstrate\n- Likely question themes (behavioral, technical, case-based)\n- Their strongest talking points mapped to the role's requirements\n- Potential concerns a hiring manager might have (gaps, career pivots, missing skills) and how to address them\n- Questions the user should ask the interviewer\n\n### Mock questions\n\nGenerate 8-10 likely interview questions:\n- 3-4 behavioral (\"Tell me about a time when...\")\n- 2-3 role-specific or technical\n- 2-3 situational (\"How would you handle...\")\n\nFor each question, provide a brief outline of a strong answer structure, not a full script. The user should sound like themselves, not like they memorized something.\n\n---\n\n## Salary Negotiation\n\nWhen the user reports an offer (triggers like \"got an offer,\" \"they made me an offer,\" \"offer letter came in,\" \"they came in at X\"), shift into negotiation support mode.\n\n### First-pass triage\n\n1. Update the tracker: status → Offer, add timeline entry with the offer details\n2. Pull context from the entry: what range was discussed at application or screen, what was on the posting, how the conversation progressed\n3. Ask three quick questions if not already known:\n   - What's the base offer, and any equity, sign-on, or bonus structure?\n   - What was the original range they signaled?\n   - How does this compare to your target and your floor?\n\n### Counter-offer analysis\n\nBased on tracker context:\n\n- Calculate deltas: offer vs. low/mid/high of the posted range, vs. the user's target, vs. their floor\n- Identify which components have negotiation room. Base usually has the most. Sign-on is often easier to move than base because it doesn't affect headcount budget. Equity is frequently flexible at senior levels. Vacation, start date, and remote/onsite are sometimes negotiable.\n- Suggest a specific counter, not a vague \"ask for more.\" Example: \"Counter at $X base + $Y sign-on. That's the high end of their stated range plus a sign-on that closes the gap to your target.\"\n\n### Counter-offer draft\n\nIf the user wants help responding:\n\n1. Draft a short, professional message that:\n   - Opens with one sentence of genuine enthusiasm about the role (not gushing)\n   - States the counter clearly and specifically\n   - Anchors the counter in something concrete: market data, the original posted range, the scope of the role, or a competing interest\n   - Leaves room to land somewhere in between\n   - Does not apologize for negotiating\n2. Avoid ultimatum framing unless the user explicitly wants to walk\n3. Save the draft to the tracker timeline\n\n### Things to flag\n\n- **Exploding offers** (deadline under 48 hours): a pressure tactic. Suggest the user ask for more time. \"I want to give this the consideration it deserves; could we extend the deadline by a few days?\"\n- **Verbal-only offers**: prompt the user to get it in writing before negotiating\n- **Below-range offers**: if the offer is below the posting's stated range, surface that directly. It's a meaningful signal about how the relationship will go.\n- **Total comp framing**: if the company emphasizes total comp heavily (equity-weighted, OTE-weighted), break it down to what's actually guaranteed cash\n\n---\n\n## Common Workflows\n\n**\"I just applied to a job\"**\n1. Ask for company, role, posting URL, how they applied, salary range if listed\n2. Create or update the entry in `applications.md`\n3. Set a follow-up reminder for 7 days out\n4. Offer to draft a connection request or follow-up plan\n\n**\"Check my email for new applications\"**\n1. Search Gmail for application confirmations since last check\n2. Present findings, add confirmed ones to tracker\n3. Run a quick stale-application scan while you're at it\n\n**\"I have an interview with [Company] on [Date]\"**\n1. Update the tracker status to Interviewing, add timeline entry\n2. Ask who they're meeting with\n3. Offer to generate a company research brief and mock questions\n4. Set a reminder for the day before\n\n**\"What's my job search looking like?\"**\n1. Read `applications.md`\n2. Generate the dashboard view\n3. Flag anything needing attention\n4. Offer to help with the highest-priority items\n\n**\"I got rejected from [Company]\"**\n1. Update status to Rejected, add timeline entry\n2. Brief empathy (one line, not a pep talk)\n3. Suggest: \"Want to draft a gracious response? Sometimes it keeps the door open for future roles.\"\n4. Move on to what's still active\n\n**\"I got an offer\"**\n1. Update status to Offer, add timeline entry with offer details (base, equity, sign-on, deadline)\n2. Pull tracker context: original range, conversations, what was promised\n3. Run counter-offer analysis: gap to target, which components have room\n4. Offer to draft a counter and log it to the timeline\n5. Flag any pressure tactics (exploding offer, verbal-only, below-range)\n\n**\"Which resume should I send?\"**\n1. Read the posting (URL, pasted text, or tracker entry)\n2. Read each resume's self-description from `resumes/`\n3. Recommend the best-fit variant with a one-line rationale\n4. Offer to log the choice in the tracker\n\n**\"Does this sound desperate / templated?\"**\n1. Run the tone check pass on the pasted draft\n2. Flag specific phrases, not the whole draft\n3. Suggest targeted revisions (don't rewrite top to bottom unless asked)\n\n---\n\n## Data Handling and Privacy\n\nBe honest with the user about what this skill does. It directs the assistant to use tools the user has connected (Gmail, LinkedIn, browser automation, web search) when those tools are available. This skill does not bundle or ship those tools — it instructs the assistant to invoke whichever ones the user has authorized. The data those tools touch is real and sensitive: emails, recruiter contacts, salary figures, offer details, and personal employment history.\n\nThe skill itself does not transmit data, run background processes, or persist anything outside the user's working directory. What it directs the assistant to do, the user can see and stop at any time.\n\n**Data scope and consent rules**\n\n- **Local storage by the skill**: `applications.md`, `resumes/`, drafts, dashboards, and any generated documents are written to the user's current working directory. The skill does not write data anywhere else.\n- **Tool-mediated reads**: When the skill instructs the assistant to search Gmail, browse LinkedIn, or run a web search, those requests go through tools the user has explicitly connected, under the user's own credentials and permissions. Revoking access to a tool stops the related behavior.\n- **Confirmation before writes from external sources**: When the assistant finds candidate applications via Gmail or LinkedIn, it must present the findings to the user and wait for explicit confirmation before adding entries to the tracker. Silent ingestion is not allowed.\n- **Sensitive fields stay scoped**: Salary figures, offer details, and recruiter contact information belong in the tracker file. The assistant should not paste these into drafts, summaries, or third-party-bound messages unless the user has asked for that specific output.\n- **No destructive operations without consent**: The assistant must not delete entries, overwrite notes, or modify resumes without explicit user confirmation.\n- **No telemetry by the skill**: The skill does not collect or transmit usage data, file contents, or any other information back to its author, ClawHub, or any third party. (Connected tools may have their own logging — the user should consult those tools' policies.)\n\n**What a cautious user should know before installing**\n\nThis skill is most useful when Gmail and LinkedIn tools are connected, but those connections are not required. Users uncomfortable with broad Gmail or LinkedIn access can use the skill in tracker-only mode by simply not connecting those tools — the assistant will then work from what the user tells it directly, and every workflow above still functions.\n\n---\n\n## Important Notes\n\n- The tracker is the user's data. Don't delete entries or overwrite notes without asking.\n- When in doubt about a status change, ask: \"Should I mark this as [status]?\"\n- Keep the emotional temperature right. Job searching is stressful. Be practical and supportive without being syrupy. A rejection is a data point, not a crisis; an offer is exciting, not a reason for five paragraphs of congratulations.\n- Gmail and LinkedIn access depend on what tools are available. The skill should work well even with zero integrations, just from what the user tells you directly. The integrations are a bonus, not a requirement.\n- Respect privacy. Application data, salary information, and recruiter names are sensitive. Don't include them in any outputs beyond the tracker file itself.\n\nFile v1.1.2:README.md\n\n# Job Search Tracker\n\nAn OpenClaw skill that tracks job applications from discovery to offer, flags stale applications, and helps with follow-up emails, cover letters, salary negotiation, and interview prep.\n\n**Current version: 1.1.2**\n\n## What's new in 1.1.2\n\n- Rewrote the **Data Handling and Privacy** section to accurately describe tool usage (rather than understating it)\n- Added a **Permissions and Privacy** section to this README so users see the scope of access before installing\n- Narrowed the activation triggers in `description` to reduce over-activation on generic email or calendar phrases\n\nSee [CHANGELOG.md](CHANGELOG.md) for the full release history.\n\n## What it does\n\n- **Tracks applications** in a single markdown file with status, contacts, timeline, salary, resume version, and follow-up dates\n- **Detects stale applications** and flags anything needing attention (no response in 7+ days, overdue follow-ups, upcoming interviews)\n- **Generates a dashboard** with pipeline counts, recent activity, and actionable next steps\n- **Drafts follow-up emails, cover letters, and thank-you notes** using context from your tracker\n- **Recommends the best resume variant** for each posting (1.1.0)\n- **Tone-checks your drafts** for desperate or templated language (1.1.0)\n- **Supports salary negotiation** with counter-offer analysis and drafting (1.1.0)\n- **Preps you for interviews** with company research briefs, mock questions, and talking points\n- **Integrates with Gmail** to scan for application confirmations and pull recruiter email context\n- **Integrates with LinkedIn** to track Easy Apply submissions and research companies/contacts\n\nAll integrations are optional. The skill works well with just what you tell it directly.\n\n## Install\n\n```bash\nopenclaw skill install chris-openclaw/job-search-tracker\n```\n\n## Example prompts\n\n- \"I just applied to a Product Manager role at Stripe. Track it.\"\n- \"What needs attention in my job search?\"\n- \"Which resume should I send for this posting?\"\n- \"Does this follow-up email sound desperate?\"\n- \"I have an interview with Notion on Thursday. Prep me.\"\n- \"Draft a follow-up email for the Datadog recruiter.\"\n- \"I got an offer from Linear — help me think through the counter.\"\n- \"Check my email for any new application confirmations.\"\n- \"I got rejected from Shopify.\"\n\n## How it stores data\n\nEverything lives in `applications.md` in your working directory. Each company gets its own section with status, contacts, timeline, notes, and follow-up info. The file is plain markdown, so you can read and edit it yourself anytime.\n\nResume variants live in a sibling `resumes/` directory if you want the recommender feature.\n\n## Permissions and Privacy (read before installing)\n\nThis skill instructs the assistant to use whichever of the following tools you have connected — it does not bundle them, but it will reach for them when relevant:\n\n- **Gmail / email tools**: search for application confirmations, recruiter messages, interview scheduling, and offer details. Touches inbox content. Connect only if you're comfortable with assistant-mediated reads of your job-search email threads.\n- **LinkedIn / browser automation**: track LinkedIn Easy Apply submissions, look up companies and recruiters, view \"My Jobs > Applied.\" Touches your LinkedIn session. Connect only if you're comfortable with that scope.\n- **Web search**: look up companies for interview prep when LinkedIn is not available. No personal data is sent.\n- **Local file write**: creates and updates `applications.md`, `resumes/` (if used), and any drafts in your current working directory. No writes outside that directory.\n\n**What the skill itself does NOT do**: it doesn't transmit data to its author, ClawHub, or any third party; it has no telemetry or background processes; it does not store credentials. Any data leaving your machine does so through the tools listed above, under your own permissions.\n\n**Confirmation rule**: before adding any application detected from Gmail or LinkedIn into your tracker, the assistant will surface the find and wait for your explicit confirmation. Silent ingestion is not allowed.\n\n**Tracker-only mode**: if you'd rather not connect Gmail or LinkedIn, just don't. Every workflow still functions from what you tell the assistant directly. The integrations are a convenience layer, not a requirement.\n\nFile v1.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn77r9qjvh6fy4aja2km8bzgvd83khv9\",\n  \"slug\": \"job-search-tracker\",\n  \"version\": \"1.1.2\",\n  \"publishedAt\": 1780953260319\n}\n\nFile v1.1.2:CHANGELOG.md\n\n# Changelog\n\nAll notable changes to this skill will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this skill adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [1.1.2] — 2026-06-08\n\n### Changed\n- Rewrote **Data Handling and Privacy** section in SKILL.md to accurately describe assistant-mediated use of Gmail, LinkedIn, browser, and web-search tools, rather than understating tool usage. The skill instructs the assistant to invoke those tools when connected; this version is explicit about scope, consent rules, and what stays local\n- Narrowed the activation triggers in the `description` frontmatter to require explicit job-search context (e.g., a named company in a hiring context) and reduce over-activation on generic email, calendar, or follow-up phrases\n\n### Added\n- **Permissions and Privacy** section in README.md so users see the scope of access (Gmail, LinkedIn, browser, web search, local files) before installing, along with a \"tracker-only mode\" path for users who'd rather not connect Gmail or LinkedIn\n\n## [1.1.1] — 2026-06-08\n\n### Added\n- **Data Handling and Privacy** section (later rewritten in 1.1.2 to remove an intent-code divergence that misrepresented tool usage)\n\n## [1.1.0] — 2026-05-12\n\n### Added\n- **Resume Recommender**: reads resume variants from a `resumes/` directory and matches each variant's self-description against new job postings to suggest the best fit\n- **Tone Check** pass on user-drafted emails and cover letters with flag categories for desperate signals, templated signals, negative framing, and length issues; produces targeted phrase-level revision suggestions rather than full rewrites\n- **Salary Negotiation** flow triggered on \"got an offer\" with offer triage, counter-offer analysis (gap to target, which components have room), counter-offer drafting, and pressure-tactic flagging (exploding offers, verbal-only, below-range, total-comp framing)\n- Three new Common Workflows: \"I got an offer,\" \"Which resume should I send?,\" and \"Does this sound desperate?\"\n\n### Changed\n- Frontmatter now includes `version` and `metadata.openclaw.emoji` fields\n- Trigger description expanded to cover offer, negotiation, resume, and tone-check phrases\n\n### Removed\n- License section removed from README (license now managed at the ClawHub platform level)\n\n## [1.0.0] — 2026-04-12\n\n### Added\n- Initial release\n- Application tracking in a single `applications.md` markdown file\n- Stale-application detection with configurable thresholds (no response in 7+ days, overdue follow-ups, interviews in 48 hours)\n- Dashboard view with pipeline summary, recent activity, and items needing attention\n- Drafting help for cover letters, follow-up emails, and thank-you notes using tracker context\n- Interview prep: company research briefs, role-specific prep, and mock questions\n- Optional Gmail integration for auto-detecting application confirmations and pulling email context\n- Optional LinkedIn integration for tracking Easy Apply submissions and company research\n- Common Workflows for the most frequent job-search interactions\n\nFile v1.1.2:evals/files/sample-applications.md\n\n# Job Search Tracker\n\n_Last updated: 2026-03-28_\n_Active applications: 4 | Interviews: 1 | Offers: 0 | Closed: 1_\n\n---\n\n## Notion - Solutions Engineer\n- **Status**: Interviewing\n- **Date Applied**: 2026-03-15\n- **Posting URL**: https://notion.so/careers/solutions-engineer-12345\n- **Salary Range**: $130-160k\n- **Resume Version**: tech-ops\n- **Cover Letter**: Yes - focused on cross-functional collaboration and technical problem solving\n- **Source**: Company Site\n\n### Contacts\n- Jamie Park - Head of Solutions Engineering\n- Taylor Reeves - Recruiting Coordinator - taylor@notion.so\n\n### Timeline\n- 2026-03-15: Applied via company careers page\n- 2026-03-19: Email from Taylor Reeves to schedule phone screen\n- 2026-03-22: Phone screen with Taylor Reeves (30 min, went well)\n- 2026-03-26: Scheduled onsite for April 3rd with Jamie Park\n\n### Notes\nReally excited about this one. The role sits between product and customers, which fits my background well. Taylor mentioned the team is growing and they're looking for someone who can also help build out internal tooling for the solutions team.\n\n### Follow-up\n- **Next action**: Prep for onsite interview on April 3rd\n- **Due by**: 2026-04-02\n- **Last contact**: 2026-03-26\n\n---\n\n## Acme Corp - Operations Manager\n- **Status**: Applied\n- **Date Applied**: 2026-03-16\n- **Posting URL**: https://acmecorp.com/jobs/ops-manager-789\n- **Salary Range**: $95-115k\n- **Resume Version**: ops-focused\n- **Cover Letter**: No\n- **Source**: LinkedIn Easy Apply\n\n### Contacts\n- None yet\n\n### Timeline\n- 2026-03-16: Applied via LinkedIn Easy Apply\n\n### Notes\nSmaller company, ~200 employees. The role description mentioned process improvement and vendor management which I have experience with. Not my top choice but solid.\n\n### Follow-up\n- **Next action**: Follow up if no response by March 23\n- **Due by**: 2026-03-23\n- **Last contact**: 2026-03-16\n\n---\n\n## Datadog - Technical Program Manager\n- **Status**: Screening\n- **Date Applied**: 2026-03-10\n- **Posting URL**: https://careers.datadoghq.com/detail/tpm-456\n- **Salary Range**: $140-170k\n- **Resume Version**: tech-ops\n- **Cover Letter**: Yes - emphasized program management experience and technical aptitude\n- **Source**: Recruiter Outreach\n\n### Contacts\n- Marcus Williams - Senior Recruiter - marcus.williams@datadoghq.com\n\n### Timeline\n- 2026-03-10: Marcus reached out via LinkedIn\n- 2026-03-12: Applied through link Marcus sent\n- 2026-03-18: Phone screen with Marcus (25 min)\n\n### Notes\nMarcus was friendly, said the team is looking for someone who can bridge engineering and business. Mentioned next step would be a technical assessment. Haven't heard back since the phone screen.\n\n### Follow-up\n- **Next action**: Follow up with Marcus on next steps\n- **Due by**: 2026-03-25\n- **Last contact**: 2026-03-18\n\n---\n\n## Webflow - Customer Success Manager\n- **Status**: Applied\n- **Date Applied**: 2026-03-25\n- **Posting URL**: https://webflow.com/careers/csm-321\n- **Salary Range**: $100-125k\n- **Resume Version**: ops-focused\n- **Cover Letter**: No\n- **Source**: Job Board (Built In)\n\n### Contacts\n- None yet\n\n### Timeline\n- 2026-03-25: Applied via Built In job board\n\n### Notes\nInteresting company, love their product. The CSM role might be a good fit given my client-facing experience. Remote-friendly.\n\n### Follow-up\n- **Next action**: Wait for response, follow up if nothing by April 1\n- **Due by**: 2026-04-01\n- **Last contact**: 2026-03-25\n\n---\n\n## Shopify - Revenue Operations Analyst\n- **Status**: Rejected\n- **Date Applied**: 2026-03-05\n- **Posting URL**: https://shopify.com/careers/revops-analyst-654\n- **Salary Range**: $110-130k\n- **Resume Version**: ops-focused\n- **Cover Letter**: Yes - focused on data analysis and process optimization\n- **Source**: Company Site\n\n### Contacts\n- Priya Sharma - Talent Acquisition - priya.sharma@shopify.com\n\n### Timeline\n- 2026-03-05: Applied via company careers page\n- 2026-03-08: Confirmation email from Priya\n- 2026-03-20: Rejection email - \"moved forward with other candidates\"\n\n### Notes\nWas a long shot. The posting wanted 3+ years of RevOps-specific experience. Worth trying though.\n\n### Follow-up\n- **Next action**: None - closed\n- **Due by**: N/A\n- **Last contact**: 2026-03-20\n\nFile v1.1.2:skill-card.md\n\n## Description:\n\nTracks job applications in a local markdown file, flags follow-ups, and helps draft outreach, prepare for interviews, recommend resume variants, and analyze offers.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chris](https://clawhub.ai/user/chris)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal job seekers use this skill to maintain a local job-search tracker, monitor stalled applications, prepare for interviews, and draft job-search communications with optional Gmail, LinkedIn, browser, and web-search context.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The tracker may contain sensitive job-search history, recruiter contacts, salary ranges, and offer details.\n\nMitigation: Install only if comfortable keeping that data in a local tracker, and store the tracker in a user-controlled working directory.\n\nRisk: Optional Gmail, LinkedIn, browser, and web-search workflows may access private account data or external pages through connected tools.\n\nMitigation: Use tracker-only mode by leaving Gmail or LinkedIn tools disconnected unless needed, and review connected-tool permissions before enabling them.\n\nRisk: Externally discovered applications or follow-ups could be logged incorrectly without user review.\n\nMitigation: Require explicit confirmation before writing externally discovered items or follow-up logs to the tracker.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/chris/skills/job-search-tracker)\n- [Publisher profile](https://clawhub.ai/user/chris)\n- [README](artifact/README.md)\n- [CHANGELOG](artifact/CHANGELOG.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, files, guidance]\n\n**Output Format:** [Markdown tracker updates, dashboard summaries, email and cover-letter drafts, interview prep briefs, and negotiation guidance.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May create or update local tracker, resume, draft, and dashboard files in the current working directory when appropriate.]\n\n## Skill Version(s):\n\n1.1.2 (source: frontmatter, changelog released 2026-06-08, ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.1.2:evals/evals.json\n\n{\n  \"skill_name\": \"job-search-tracker\",\n  \"evals\": [\n    {\n      \"id\": 1,\n      \"prompt\": \"Hey, I just applied to a Product Operations Manager role at Stripe. Applied through their careers page about 20 minutes ago. The posting is at https://stripe.com/jobs/12345. Salary listed as $120-150k. I used my 'ops-focused' resume version. No cover letter for this one. Can you start tracking it?\",\n      \"expected_output\": \"An applications.md file created with the Stripe entry fully populated: company, role, status (Applied), date, URL, salary range, resume version, cover letter (no), source (Company Site). Timeline with today's date. Follow-up reminder set for 7 days. Dashboard header with counts.\",\n      \"files\": [],\n      \"expectations\": [\n        \"An applications.md file is created\",\n        \"The file contains a '## Stripe - Product Operations Manager' section\",\n        \"Status is set to 'Applied'\",\n        \"Salary range '$120-150k' is recorded\",\n        \"Resume version 'ops-focused' is noted\",\n        \"Cover letter is marked as no\",\n        \"Source is identified as Company Site\",\n        \"A follow-up section exists with a date ~7 days from now\",\n        \"The file header includes application counts\"\n      ]\n    },\n    {\n      \"id\": 2,\n      \"prompt\": \"I've got a few applications going. Here's my current tracker file. Can you tell me what needs attention and give me the dashboard view?\\n\\n[Use the file at evals/files/sample-applications.md]\",\n      \"expected_output\": \"A dashboard view showing: applications needing follow-up (stale ones), pipeline summary with counts by status, recent activity, and flagged items. Should identify the Acme Corp application as stale (applied 12 days ago, no response).\",\n      \"files\": [\"evals/files/sample-applications.md\"],\n      \"expectations\": [\n        \"A dashboard summary is generated\",\n        \"Acme Corp is flagged as needing follow-up (applied 12+ days ago with no response)\",\n        \"Pipeline counts are accurate (matches the data in the sample file)\",\n        \"A 'Needs Attention' section highlights overdue items\",\n        \"Recent activity is summarized\",\n        \"Specific actionable suggestions are given for flagged items\"\n      ]\n    },\n    {\n      \"id\": 3,\n      \"prompt\": \"I have an interview with Notion on Thursday for the Solutions Engineer role. I'm meeting with their Head of Solutions Engineering, Jamie Park. Can you prep me? I want a company brief and some practice questions.\",\n      \"expected_output\": \"A company research brief on Notion (what they do, recent news, culture signals) and 8-10 interview questions tailored to a Solutions Engineer role, mixing behavioral, technical, and situational. Should include answer outlines and questions to ask the interviewer.\",\n      \"files\": [],\n      \"expectations\": [\n        \"A company research brief is generated covering what Notion does\",\n        \"The brief includes recent news or product information\",\n        \"At least 8 interview questions are provided\",\n        \"Questions include a mix of behavioral, role-specific, and situational\",\n        \"Answer outlines or talking point structures are provided for each question\",\n        \"Questions the user should ask the interviewer are included\",\n        \"The prep references the Solutions Engineer role specifically, not generic interview advice\",\n        \"Jamie Park's role (Head of Solutions Engineering) is acknowledged in the prep\"\n      ]\n    },\n    {\n      \"id\": 4,\n      \"prompt\": \"I need to follow up with the recruiter at Datadog - it's been 10 days since my phone screen and I haven't heard anything. The recruiter's name is Marcus Williams. Can you draft a follow-up email? Keep it short.\",\n      \"expected_output\": \"A short follow-up email (under 150 words) that references the specific role, the phone screen, and Marcus by name. Should be direct and professional without being pushy. Should also offer to log this follow-up in the tracker.\",\n      \"files\": [],\n      \"expectations\": [\n        \"A follow-up email draft is provided\",\n        \"The email is under 150 words\",\n        \"It addresses Marcus Williams by name\",\n        \"It references the phone screen specifically\",\n        \"It has a clear ask or next step\",\n        \"The tone is professional and direct, not desperate or overly formal\",\n        \"The skill offers to log this follow-up in the tracker\"\n      ]\n    }\n  ]\n}\n\nArchive v1.1.1: 7 files, 16810 bytes\n\nFiles: CHANGELOG.md (2439b), evals/evals.json (4374b), evals/files/sample-applications.md (4227b), README.md (2771b), skill-card.md (2612b), SKILL.md (21215b), _meta.json (137b)\n\nFile v1.1.1:SKILL.md\n\n---\nname: job-search-tracker\nversion: 1.1.1\ndescription: \"Use this skill when someone is job searching, tracking applications, or needs help at any stage of the hiring pipeline. Key triggers: 'I applied to,' 'just submitted an application,' 'track this job,' 'job search dashboard,' 'what needs attention,' 'any responses yet,' 'help me follow up,' 'haven't heard back,' 'prep me for an interview,' 'interview tomorrow,' 'draft a cover letter,' 'write a follow-up email,' 'thank-you note,' 'got rejected,' 'got an offer,' 'got an offer letter,' 'help me negotiate,' 'salary negotiation,' 'which resume should I send,' 'does this sound desperate,' 'what jobs have I applied to,' 'check my email for applications,' referencing a specific company they've applied to. Covers: application tracking, pipeline management, stale application reminders, Gmail scanning for application emails, LinkedIn application tracking, interview prep with company briefs and mock questions, cover letter drafting, follow-up email drafting, salary negotiation support, resume-version recommendations, outreach tone checks, and job search analytics.\"\nmetadata:\n  openclaw:\n    emoji: 🎯\n---\n\n# Job Search Tracker\n\nA complete job search command center. Tracks every application from discovery to offer, integrates with Gmail and LinkedIn for context, flags stale applications that need follow-up, and helps draft cover letters, follow-up emails, and interview prep materials.\n\n## Why this exists\n\nJob searching while juggling other responsibilities is chaotic. You apply to 30 places, lose track of which ones you followed up on, forget the recruiter's name, and can't remember which version of your resume you sent. This skill keeps it all in one place and does the busywork for you.\n\n---\n\n## The Applications File\n\nAll application data lives in a single markdown file: `applications.md` in the current working directory (or wherever the user specifies). This file is the source of truth for the entire job search.\n\n### File structure\n\n```markdown\n# Job Search Tracker\n\n_Last updated: YYYY-MM-DD_\n_Active applications: X | Interviews: X | Offers: X | Closed: X_\n\n---\n\n## [Company Name] - [Role Title]\n- **Status**: [Applied | Screening | Interviewing | Final Round | Offer | Accepted | Rejected | Withdrawn | Ghosted]\n- **Date Applied**: YYYY-MM-DD\n- **Posting URL**: [link]\n- **Salary Range**: [what's listed or discussed]\n- **Resume Version**: [which resume was sent]\n- **Cover Letter**: [yes/no, and which version or key angle used]\n- **Source**: [LinkedIn Easy Apply | Company Site | Referral | Recruiter Outreach | Job Board]\n\n### Contacts\n- [Name] - [Title] (e.g., \"Sarah Chen - Senior Recruiter\") - [email if known]\n- [Name] - [Title] - [email if known]\n\n### Timeline\n- YYYY-MM-DD: Applied via [source]\n- YYYY-MM-DD: [Event - e.g., \"Phone screen with Sarah Chen\", \"Received coding assessment\", \"Sent follow-up email\"]\n\n### Notes\n[Freeform notes - anything relevant about the role, company, conversations, gut feelings, red flags, compensation details discussed]\n\n### Follow-up\n- **Next action**: [what needs to happen next]\n- **Due by**: [date]\n- **Last contact**: [date of most recent communication]\n\n---\n```\n\nEach company gets its own section with the `## Company - Role` header. Sections are ordered by status priority: active applications first (Interviewing > Screening > Applied), then closed ones (Offers > Accepted > Rejected > Withdrawn > Ghosted) at the bottom.\n\n### Creating the file\n\nIf `applications.md` doesn't exist when the user asks to track something, create it with the header and their first application. Don't make a big deal of setup; just start tracking.\n\n### Updating entries\n\nWhen the user reports a status change (\"I heard back from Stripe\" or \"got rejected from Google\"), update the relevant section: change the status, add a timeline entry with today's date, and update the follow-up section. If they mention a new contact name, add it to Contacts.\n\n---\n\n## Gmail Integration\n\nThis skill works best when Gmail access is available (via MCP tools, the Gmail skill, or IMAP). When email tools are available, use them. When they're not, work with whatever the user tells you manually.\n\n### Auto-detecting applications\n\nWhen the user asks you to scan their email for applications (or when doing a periodic check-in):\n\n1. Search Gmail for recent application-related emails using queries like:\n   - `subject:\"application received\" OR subject:\"application confirmed\" OR subject:\"thank you for applying\" OR subject:\"we received your application\"`\n   - `from:notifications@linkedin.com subject:\"application\"`\n   - `subject:\"next steps\" from:recruiting OR from:talent OR from:careers`\n2. For each result, extract: company name, role title, date, and any recruiter names mentioned\n3. Cross-reference against `applications.md` to avoid duplicates\n4. Present new finds to the user: \"I found 3 applications in your email that aren't in your tracker yet. Want me to add them?\"\n5. Only add entries the user confirms\n\n### Pulling context on demand\n\nWhen the user asks about a specific company or the skill needs more context:\n\n1. Search Gmail for threads involving that company name\n2. Surface relevant emails: recruiter messages, interview scheduling, assessment links, offer details\n3. Summarize what the email trail shows (last contact date, who reached out, what stage it suggests)\n\n---\n\n## LinkedIn Integration\n\nLinkedIn integration works through browser automation or the LinkedIn skill/MCP if available. Since LinkedIn access can be unreliable, design all features to work without it and treat LinkedIn data as a bonus layer.\n\n### Tracking applications\n\nWhen the user mentions applying through LinkedIn or asks to check their recent applications:\n\n1. If browser tools are available, navigate to LinkedIn's \"My Jobs\" > \"Applied\" tab\n2. Extract recent applications: company, role, date applied\n3. Cross-reference against `applications.md`\n4. Present new ones for confirmation before adding\n\n### Research on demand\n\nWhen adding a new application or prepping for an interview:\n\n1. Look up the company on LinkedIn for: company size, industry, recent news/posts, key people in the department\n2. Check if the user has any connections at the company\n3. Look up the hiring manager or recruiter if named\n4. Summarize findings in a research brief\n\nIf LinkedIn isn't accessible, fall back to web search for company research. The research should happen regardless; LinkedIn is just one source.\n\n---\n\n## Resume Recommender\n\nMany users keep multiple resume variants tailored to different job types (e.g., \"engineering-focused,\" \"leadership-focused,\" \"generalist\"). This skill can suggest the best variant for a given posting.\n\n### Storing resume variants\n\nResumes live in a `resumes/` directory alongside `applications.md`. Each variant is a markdown or text file named for its slant:\n\n```\nresumes/\n  engineering-focused.md\n  leadership-focused.md\n  generalist.md\n```\n\nEach file should start with a one-paragraph self-description that summarizes the angle it takes. The skill reads these descriptions to make recommendations. It does not need the full resume content for matching, just the description block at the top.\n\n### Recommending a variant\n\nWhen the user adds a new application, asks \"which resume should I send?\", or pastes a job posting:\n\n1. Read the job posting (from URL, pasted text, or the tracker entry)\n2. Read each resume's self-description from `resumes/`\n3. Extract key signals from the posting: required skills, seniority level, team size, company size, work style cues (remote/hybrid/onsite, IC vs management)\n4. Recommend the variant whose self-description best matches those signals\n5. Present the recommendation with a one-line rationale: \"Suggested: leadership-focused.md (the posting emphasizes managing a cross-functional team and reporting to a VP)\"\n6. Offer to log the choice to the tracker entry's `Resume Version` field\n\nIf no `resumes/` directory exists, prompt the user once: \"I don't see saved resume variants. Want to set up the `resumes/` folder, or just track which version you sent each time?\" Don't badger after the initial prompt; respect \"no\" the first time.\n\n---\n\n## Proactive Reminders and Follow-ups\n\nThis is one of the most valuable features. Job seekers lose opportunities by not following up.\n\n### Stale application detection\n\nWhen the user opens their tracker or asks \"what needs attention\", scan all active applications and flag:\n\n- **No response in 7+ days after applying**: Suggest sending a follow-up email\n- **No response in 3+ days after an interview**: Suggest a thank-you note or check-in\n- **Scheduled interview coming up in 48 hours**: Prompt for interview prep\n- **No activity in 14+ days on any active application**: Suggest checking in or marking as Ghosted\n- **Follow-up due date passed**: Highlight overdue items\n\n### Dashboard view\n\nWhen the user asks for their job search status, dashboard, or overview, generate a summary:\n\n```markdown\n# Job Search Dashboard\n_As of YYYY-MM-DD_\n\n## Needs Attention (X items)\n- **[Company] - [Role]**: No response in 10 days. Consider following up.\n- **[Company] - [Role]**: Interview tomorrow. Run interview prep?\n- **[Company] - [Role]**: Follow-up was due 2 days ago.\n\n## Pipeline Summary\n- Actively interviewing: X\n- Waiting to hear back: X\n- Applied recently (< 7 days): X\n- Total active: X\n- Closed this month: X (Y rejected, Z withdrawn)\n\n## Recent Activity\n- [Date]: [Event summary]\n- [Date]: [Event summary]\n- [Date]: [Event summary]\n\n## Stats\n- Applications this week: X\n- Response rate: X%\n- Average time to first response: X days\n```\n\n---\n\n## Drafting Help\n\nThe skill helps draft outreach materials tailored to each specific application. The key value here is that the skill has all the context from the tracker -- it knows what role the user applied for, who they've been talking to, and what's happened so far.\n\n### Cover letters\n\nWhen the user asks for a cover letter:\n\n1. Ask for the job posting URL or description (or pull it from the tracker if already saved)\n2. Ask which resume version they're using (or check the tracker)\n3. Draft a cover letter that:\n   - Opens with something specific about the company, not generic praise\n   - Connects the user's actual experience to the role's requirements\n   - Keeps it to one page, three to four paragraphs\n   - Avoids cliches (\"passionate about,\" \"excited to bring my skills\")\n   - Sounds like a real person wrote it, not a template\n4. Save a note in the tracker about which angle the cover letter took\n\n### Follow-up emails\n\nWhen following up on an application or after an interview:\n\n1. Check the tracker for context: when they applied, who they've talked to, what stage they're in\n2. Draft an email that:\n   - References the specific role and conversation\n   - Adds something of value (a thought from the interview, a relevant article, a brief example of their work)\n   - Is short and direct (under 150 words for follow-ups)\n   - Has a clear ask or next step\n3. After presenting the draft, always offer to log this follow-up in the tracker: \"Want me to add this to your timeline and update the follow-up date?\"\n4. If the user confirms (or doesn't object), add a timeline entry and update the follow-up section with the new date\n\n### Thank-you notes\n\nAfter an interview:\n\n1. Ask who they met with and what was discussed (or pull from tracker notes)\n2. Draft a note that:\n   - References something specific from the conversation\n   - Reinforces fit for the role\n   - Is genuine, not formulaic\n3. One thank-you per interviewer if they met multiple people, with slight variations so they don't look identical if compared\n\n### Tone check on user drafts\n\nWhen the user pastes their own draft and asks for a check (or says \"does this sound desperate,\" \"is this templated,\" \"does this sound okay\"), run a quick tone pass before they send.\n\n**Flag categories**\n\n- **Desperate signals**: \"I'll do anything,\" \"any role,\" \"please consider me,\" stacked over-thanking (\"thank you so much for your time\" appearing twice), excessive flexibility statements (\"I'm open to anything,\" \"happy to start whenever\")\n- **Templated signals**: openings like \"I hope this email finds you well,\" \"I am writing to,\" generic praise of the company (\"a leader in the industry,\" \"world-class team\"), zero specifics pulled from the actual job posting or prior conversation\n- **Negative framing**: apologizing for gaps, leading with weakness, \"I know I'm a long shot,\" \"I may not have all the qualifications but\"\n- **Length issues**: follow-ups over 200 words, cover letter paragraphs over 5 sentences, opening paragraph that doesn't get to the point in 2 sentences\n\n**Output format**\n\n```\nTone read: [Tight | Mostly fine, some flags | Needs work]\n\nFlags found:\n1. [Category] — \"[exact phrase from draft]\" — why it lands flat\n2. ...\n\nSuggested revisions:\n- \"[phrase]\" → \"[better phrase]\"\n- ...\n```\n\nIf the draft is already tight, say so directly: \"Reads well. Nothing to fix. Ready to send.\"\n\nDo not rewrite the entire draft unless the user asks. The goal is a targeted edit, not a full rewrite that erases their voice.\n\n---\n\n## Interview Prep\n\nWhen the user has an upcoming interview or asks to prep for one:\n\n### Company research brief\n\nGenerate a one-page brief covering:\n- What the company does (in plain language, not marketing copy)\n- Recent news, product launches, or challenges\n- Company size, funding stage, growth trajectory\n- Culture signals (from job posting language, Glassdoor, LinkedIn posts)\n- Key people they might meet (from LinkedIn or the tracker's contacts)\n\n### Role-specific prep\n\nBased on the job posting:\n- Key skills/requirements they should be ready to demonstrate\n- Likely question themes (behavioral, technical, case-based)\n- Their strongest talking points mapped to the role's requirements\n- Potential concerns a hiring manager might have (gaps, career pivots, missing skills) and how to address them\n- Questions the user should ask the interviewer\n\n### Mock questions\n\nGenerate 8-10 likely interview questions:\n- 3-4 behavioral (\"Tell me about a time when...\")\n- 2-3 role-specific or technical\n- 2-3 situational (\"How would you handle...\")\n\nFor each question, provide a brief outline of a strong answer structure, not a full script. The user should sound like themselves, not like they memorized something.\n\n---\n\n## Salary Negotiation\n\nWhen the user reports an offer (triggers like \"got an offer,\" \"they made me an offer,\" \"offer letter came in,\" \"they came in at X\"), shift into negotiation support mode.\n\n### First-pass triage\n\n1. Update the tracker: status → Offer, add timeline entry with the offer details\n2. Pull context from the entry: what range was discussed at application or screen, what was on the posting, how the conversation progressed\n3. Ask three quick questions if not already known:\n   - What's the base offer, and any equity, sign-on, or bonus structure?\n   - What was the original range they signaled?\n   - How does this compare to your target and your floor?\n\n### Counter-offer analysis\n\nBased on tracker context:\n\n- Calculate deltas: offer vs. low/mid/high of the posted range, vs. the user's target, vs. their floor\n- Identify which components have negotiation room. Base usually has the most. Sign-on is often easier to move than base because it doesn't affect headcount budget. Equity is frequently flexible at senior levels. Vacation, start date, and remote/onsite are sometimes negotiable.\n- Suggest a specific counter, not a vague \"ask for more.\" Example: \"Counter at $X base + $Y sign-on. That's the high end of their stated range plus a sign-on that closes the gap to your target.\"\n\n### Counter-offer draft\n\nIf the user wants help responding:\n\n1. Draft a short, professional message that:\n   - Opens with one sentence of genuine enthusiasm about the role (not gushing)\n   - States the counter clearly and specifically\n   - Anchors the counter in something concrete: market data, the original posted range, the scope of the role, or a competing interest\n   - Leaves room to land somewhere in between\n   - Does not apologize for negotiating\n2. Avoid ultimatum framing unless the user explicitly wants to walk\n3. Save the draft to the tracker timeline\n\n### Things to flag\n\n- **Exploding offers** (deadline under 48 hours): a pressure tactic. Suggest the user ask for more time. \"I want to give this the consideration it deserves; could we extend the deadline by a few days?\"\n- **Verbal-only offers**: prompt the user to get it in writing before negotiating\n- **Below-range offers**: if the offer is below the posting's stated range, surface that directly. It's a meaningful signal about how the relationship will go.\n- **Total comp framing**: if the company emphasizes total comp heavily (equity-weighted, OTE-weighted), break it down to what's actually guaranteed cash\n\n---\n\n## Common Workflows\n\n**\"I just applied to a job\"**\n1. Ask for company, role, posting URL, how they applied, salary range if listed\n2. Create or update the entry in `applications.md`\n3. Set a follow-up reminder for 7 days out\n4. Offer to draft a connection request or follow-up plan\n\n**\"Check my email for new applications\"**\n1. Search Gmail for application confirmations since last check\n2. Present findings, add confirmed ones to tracker\n3. Run a quick stale-application scan while you're at it\n\n**\"I have an interview with [Company] on [Date]\"**\n1. Update the tracker status to Interviewing, add timeline entry\n2. Ask who they're meeting with\n3. Offer to generate a company research brief and mock questions\n4. Set a reminder for the day before\n\n**\"What's my job search looking like?\"**\n1. Read `applications.md`\n2. Generate the dashboard view\n3. Flag anything needing attention\n4. Offer to help with the highest-priority items\n\n**\"I got rejected from [Company]\"**\n1. Update status to Rejected, add timeline entry\n2. Brief empathy (one line, not a pep talk)\n3. Suggest: \"Want to draft a gracious response? Sometimes it keeps the door open for future roles.\"\n4. Move on to what's still active\n\n**\"I got an offer\"**\n1. Update status to Offer, add timeline entry with offer details (base, equity, sign-on, deadline)\n2. Pull tracker context: original range, conversations, what was promised\n3. Run counter-offer analysis: gap to target, which components have room\n4. Offer to draft a counter and log it to the timeline\n5. Flag any pressure tactics (exploding offer, verbal-only, below-range)\n\n**\"Which resume should I send?\"**\n1. Read the posting (URL, pasted text, or tracker entry)\n2. Read each resume's self-description from `resumes/`\n3. Recommend the best-fit variant with a one-line rationale\n4. Offer to log the choice in the tracker\n\n**\"Does this sound desperate / templated?\"**\n1. Run the tone check pass on the pasted draft\n2. Flag specific phrases, not the whole draft\n3. Suggest targeted revisions (don't rewrite top to bottom unless asked)\n\n---\n\n## Data Handling and Privacy\n\nThis skill is instruction-only — it tells the assistant how to behave. It does not make network calls, run shell commands, or transmit data on its own.\n\n- **Local-only storage**: All tracker data (`applications.md`, `resumes/`, drafts, dashboards) is written to the user's current working directory. Nothing is sent to any external service by this skill.\n- **No telemetry, no logging, no third-party sharing**: The skill does not collect, transmit, or share usage data, application contents, salary information, or contact details.\n- **Gmail and LinkedIn access is user-mediated**: Any email or LinkedIn lookups happen through tools the user has already connected (MCP servers, browser extensions, etc.) using the user's own credentials and permissions. This skill does not bundle, request, or store credentials.\n- **Confirmation before writes from external sources**: When auto-detecting applications from Gmail or LinkedIn, the skill surfaces findings to the user and only adds entries the user explicitly confirms. It does not silently ingest data into the tracker.\n- **Sensitive data stays in the tracker file**: Salary figures, offer details, and recruiter contact information appear only in the local tracker file. The skill does not echo this data into outputs beyond what the user is actively working on.\n- **No destructive operations without consent**: The skill does not delete entries, overwrite notes, or modify resumes without explicit user confirmation.\n\n---\n\n## Important Notes\n\n- The tracker is the user's data. Don't delete entries or overwrite notes without asking.\n- When in doubt about a status change, ask: \"Should I mark this as [status]?\"\n- Keep the emotional temperature right. Job searching is stressful. Be practical and supportive without being syrupy. A rejection is a data point, not a crisis; an offer is exciting, not a reason for five paragraphs of congratulations.\n- Gmail and LinkedIn access depend on what tools are available. The skill should work well even with zero integrations, just from what the user tells you directly. The integrations are a bonus, not a requirement.\n- Respect privacy. Application data, salary information, and recruiter names are sensitive. Don't include them in any outputs beyond the tracker file itself.\n\nFile v1.1.1:README.md\n\n# Job Search Tracker\n\nAn OpenClaw skill that tracks job applications from discovery to offer, flags stale applications, and helps with follow-up emails, cover letters, salary negotiation, and interview prep.\n\n**Current version: 1.1.0**\n\n## What's new in 1.1.0\n\n- **Salary Negotiation**: triggers on \"got an offer\" and runs gap analysis, counter-offer drafting, and pressure-tactic flagging (exploding offers, verbal-only, below-range)\n- **Resume Recommender**: matches stored resume variants from a `resumes/` directory against new postings and suggests the best fit\n- **Tone Check**: flags desperate, templated, or negative-framing language in user-drafted emails and cover letters before sending\n\nSee [CHANGELOG.md](CHANGELOG.md) for the full release history.\n\n## What it does\n\n- **Tracks applications** in a single markdown file with status, contacts, timeline, salary, resume version, and follow-up dates\n- **Detects stale applications** and flags anything needing attention (no response in 7+ days, overdue follow-ups, upcoming interviews)\n- **Generates a dashboard** with pipeline counts, recent activity, and actionable next steps\n- **Drafts follow-up emails, cover letters, and thank-you notes** using context from your tracker\n- **Recommends the best resume variant** for each posting (1.1.0)\n- **Tone-checks your drafts** for desperate or templated language (1.1.0)\n- **Supports salary negotiation** with counter-offer analysis and drafting (1.1.0)\n- **Preps you for interviews** with company research briefs, mock questions, and talking points\n- **Integrates with Gmail** to scan for application confirmations and pull recruiter email context\n- **Integrates with LinkedIn** to track Easy Apply submissions and research companies/contacts\n\nAll integrations are optional. The skill works well with just what you tell it directly.\n\n## Install\n\n```bash\nopenclaw skill install chris-openclaw/job-search-tracker\n```\n\n## Example prompts\n\n- \"I just applied to a Product Manager role at Stripe. Track it.\"\n- \"What needs attention in my job search?\"\n- \"Which resume should I send for this posting?\"\n- \"Does this follow-up email sound desperate?\"\n- \"I have an interview with Notion on Thursday. Prep me.\"\n- \"Draft a follow-up email for the Datadog recruiter.\"\n- \"I got an offer from Linear — help me think through the counter.\"\n- \"Check my email for any new application confirmations.\"\n- \"I got rejected from Shopify.\"\n\n## How it stores data\n\nEverything lives in `applications.md` in your working directory. Each company gets its own section with status, contacts, timeline, notes, and follow-up info. The file is plain markdown, so you can read and edit it yourself anytime.\n\nResume variants live in a sibling `resumes/` directory if you want the recommender feature.\n\nFile v1.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn77r9qjvh6fy4aja2km8bzgvd83khv9\",\n  \"slug\": \"job-search-tracker\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1780942249286\n}\n\nFile v1.1.1:CHANGELOG.md\n\n# Changelog\n\nAll notable changes to this skill will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this skill adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [1.1.1] — 2026-06-08\n\n### Added\n- **Data Handling and Privacy** section clarifying that the skill is instruction-only, stores all data locally in the user's working directory, makes no external network calls of its own, uses no telemetry, and gates all writes from Gmail/LinkedIn behind explicit user confirmation\n\n## [1.1.0] — 2026-05-12\n\n### Added\n- **Resume Recommender**: reads resume variants from a `resumes/` directory and matches each variant's self-description against new job postings to suggest the best fit\n- **Tone Check** pass on user-drafted emails and cover letters with flag categories for desperate signals, templated signals, negative framing, and length issues; produces targeted phrase-level revision suggestions rather than full rewrites\n- **Salary Negotiation** flow triggered on \"got an offer\" with offer triage, counter-offer analysis (gap to target, which components have room), counter-offer drafting, and pressure-tactic flagging (exploding offers, verbal-only, below-range, total-comp framing)\n- Three new Common Workflows: \"I got an offer,\" \"Which resume should I send?,\" and \"Does this sound desperate?\"\n\n### Changed\n- Frontmatter now includes `version` and `metadata.openclaw.emoji` fields\n- Trigger description expanded to cover offer, negotiation, resume, and tone-check phrases\n\n### Removed\n- License section removed from README (license now managed at the ClawHub platform level)\n\n## [1.0.0] — 2026-04-12\n\n### Added\n- Initial release\n- Application tracking in a single `applications.md` markdown file\n- Stale-application detection with configurable thresholds (no response in 7+ days, overdue follow-ups, interviews in 48 hours)\n- Dashboard view with pipeline summary, recent activity, and items needing attention\n- Drafting help for cover letters, follow-up emails, and thank-you notes using tracker context\n- Interview prep: company research briefs, role-specific prep, and mock questions\n- Optional Gmail integration for auto-detecting application confirmations and pulling email context\n- Optional LinkedIn integration for tracking Easy Apply submissions and company research\n- Common Workflows for the most frequent job-search interactions\n\nFile v1.1.1:evals/files/sample-applications.md\n\n# Job Search Tracker\n\n_Last updated: 2026-03-28_\n_Active applications: 4 | Interviews: 1 | Offers: 0 | Closed: 1_\n\n---\n\n## Notion - Solutions Engineer\n- **Status**: Interviewing\n- **Date Applied**: 2026-03-15\n- **Posting URL**: https://notion.so/careers/solutions-engineer-12345\n- **Salary Range**: $130-160k\n- **Resume Version**: tech-ops\n- **Cover Letter**: Yes - focused on cross-functional collaboration and technical problem solving\n- **Source**: Company Site\n\n### Contacts\n- Jamie Park - Head of Solutions Engineering\n- Taylor Reeves - Recruiting Coordinator - taylor@notion.so\n\n### Timeline\n- 2026-03-15: Applied via company careers page\n- 2026-03-19: Email from Taylor Reeves to schedule phone screen\n- 2026-03-22: Phone screen with Taylor Reeves (30 min, went well)\n- 2026-03-26: Scheduled onsite for April 3rd with Jamie Park\n\n### Notes\nReally excited about this one. The role sits between product and customers, which fits my background well. Taylor mentioned the team is growing and they're looking for someone who can also help build out internal tooling for the solutions team.\n\n### Follow-up\n- **Next action**: Prep for onsite interview on April 3rd\n- **Due by**: 2026-04-02\n- **Last contact**: 2026-03-26\n\n---\n\n## Acme Corp - Operations Manager\n- **Status**: Applied\n- **Date Applied**: 2026-03-16\n- **Posting URL**: https://acmecorp.com/jobs/ops-manager-789\n- **Salary Range**: $95-115k\n- **Resume Version**: ops-focused\n- **Cover Letter**: No\n- **Source**: LinkedIn Easy Apply\n\n### Contacts\n- None yet\n\n### Timeline\n- 2026-03-16: Applied via LinkedIn Easy Apply\n\n### Notes\nSmaller company, ~200 employees. The role description mentioned process improvement and vendor management which I have experience with. Not my top choice but solid.\n\n### Follow-up\n- **Next action**: Follow up if no response by March 23\n- **Due by**: 2026-03-23\n- **Last contact**: 2026-03-16\n\n---\n\n## Datadog - Technical Program Manager\n- **Status**: Screening\n- **Date Applied**: 2026-03-10\n- **Posting URL**: https://careers.datadoghq.com/detail/tpm-456\n- **Salary Range**: $140-170k\n- **Resume Version**: tech-ops\n- **Cover Letter**: Yes - emphasized program management experience and technical aptitude\n- **Source**: Recruiter Outreach\n\n### Contacts\n- Marcus Williams - Senior Recruiter - marcus.williams@datadoghq.com\n\n### Timeline\n- 2026-03-10: Marcus reached out via LinkedIn\n- 2026-03-12: Applied through link Marcus sent\n- 2026-03-18: Phone screen with Marcus (25 min)\n\n### Notes\nMarcus was friendly, said the team is looking for someone who can bridge engineering and business. Mentioned next step would be a technical assessment. Haven't heard back since the phone screen.\n\n### Follow-up\n- **Next action**: Follow up with Marcus on next steps\n- **Due by**: 2026-03-25\n- **Last contact**: 2026-03-18\n\n---\n\n## Webflow - Customer Success Manager\n- **Status**: Applied\n- **Date Applied**: 2026-03-25\n- **Posting URL**: https://webflow.com/careers/csm-321\n- **Salary Range**: $100-125k\n- **Resume Version**: ops-focused\n- **Cover Letter**: No\n- **Source**: Job Board (Built In)\n\n### Contacts\n- None yet\n\n### Timeline\n- 2026-03-25: Applied via Built In job board\n\n### Notes\nInteresting company, love their product. The CSM role might be a good fit given my client-facing experience. Remote-friendly.\n\n### Follow-up\n- **Next action**: Wait for response, follow up if nothing by April 1\n- **Due by**: 2026-04-01\n- **Last contact**: 2026-03-25\n\n---\n\n## Shopify - Revenue Operations Analyst\n- **Status**: Rejected\n- **Date Applied**: 2026-03-05\n- **Posting URL**: https://shopify.com/careers/revops-analyst-654\n- **Salary Range**: $110-130k\n- **Resume Version**: ops-focused\n- **Cover Letter**: Yes - focused on data analysis and process optimization\n- **Source**: Company Site\n\n### Contacts\n- Priya Sharma - Talent Acquisition - priya.sharma@shopify.com\n\n### Timeline\n- 2026-03-05: Applied via company careers page\n- 2026-03-08: Confirmation email from Priya\n- 2026-03-20: Rejection email - \"moved forward with other candidates\"\n\n### Notes\nWas a long shot. The posting wanted 3+ years of RevOps-specific experience. Worth trying though.\n\n### Follow-up\n- **Next action**: None - closed\n- **Due by**: N/A\n- **Last contact**: 2026-03-20\n\nFile v1.1.1:skill-card.md\n\n## Description: <br>\nJob Search Tracker helps agents track job applications, maintain a local dashboard, flag stale follow-ups, and draft cover letters, recruiter emails, interview prep, and negotiation guidance. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[chris-openclaw](https://clawhub.ai/user/chris-openclaw) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nIndividuals and their agents use this skill to manage an active job search, including application tracking, Gmail or LinkedIn context review when connected, stale follow-up detection, interview preparation, outreach drafting, resume-version recommendations, and offer negotiation support. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can guide an agent to read connected Gmail, LinkedIn, or browser context containing sensitive job-search information. <br>\nMitigation: Use explicit per-action approval for email scans, LinkedIn or browser lookups, and tracker writes. <br>\nRisk: The local tracker can contain applications, salary details, recruiter contacts, offer terms, and timelines. <br>\nMitigation: Store the tracker only in an intended local location and avoid shared or synced folders unless that sharing is deliberate. <br>\nRisk: Broad activation language may cause the skill to engage during many job-search conversations. <br>\nMitigation: Confirm before ingesting external findings or making material tracker changes, especially when status, salary, contact, or offer details are involved. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/chris-openclaw/job-search-tracker) <br>\n- [README](README.md) <br>\n- [Changelog](CHANGELOG.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, guidance, files] <br>\n**Output Format:** [Markdown tracker updates, dashboard summaries, email drafts, interview prep briefs, negotiation notes, and concise guidance.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May write or update local applications.md and resumes/ files when the user asks or confirms; external-source findings should be confirmed before being added to the tracker.] <br>\n\n## Skill Version(s): <br>\n1.1.1 (source: server release and SKILL.md frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.1.1:evals/evals.json\n\n{\n  \"skill_name\": \"job-search-tracker\",\n  \"evals\": [\n    {\n      \"id\": 1,\n      \"prompt\": \"Hey, I just applied to a Product Operations Manager role at Stripe. Applied through their careers page about 20 minutes ago. The posting is at https://stripe.com/jobs/12345. Salary listed as $120-150k. I used my 'ops-focused' resume version. No cover letter for this one. Can you start tracking it?\",\n      \"expected_output\": \"An applications.md file created with the Stripe entry fully populated: company, role, status (Applied), date, URL, salary range, resume version, cover letter (no), source (Company Site). Timeline with today's date. Follow-up reminder set for 7 days. Dashboard header with counts.\",\n      \"files\": [],\n      \"expectations\": [\n        \"An applications.md file is created\",\n        \"The file contains a '## Stripe - Product Operations Manager' section\",\n        \"Status is set to 'Applied'\",\n        \"Salary range '$120-150k' is recorded\",\n        \"Resume version 'ops-focused' is noted\",\n        \"Cover letter is marked as no\",\n        \"Source is identified as Company Site\",\n        \"A follow-up section exists with a date ~7 days from now\",\n        \"The file header includes application counts\"\n      ]\n    },\n    {\n      \"id\": 2,\n      \"prompt\": \"I've got a few applications going. Here's my current tracker file. Can you tell me what needs attention and give me the dashboard view?\\n\\n[Use the file at evals/files/sample-applications.md]\",\n      \"expected_output\": \"A dashboard view showing: applications needing follow-up (stale ones), pipeline summary with counts by status, recent activity, and flagged items. Should identify the Acme Corp application as stale (applied 12 days ago, no response).\",\n      \"files\": [\"evals/files/sample-applications.md\"],\n      \"expectations\": [\n        \"A dashboard summary is generated\",\n        \"Acme Corp is flagged as needing follow-up (applied 12+ days ago with no response)\",\n        \"Pipeline counts are accurate (matches the data in the sample file)\",\n        \"A 'Needs Attention' section highlights overdue items\",\n        \"Recent activity is summarized\",\n        \"Specific actionable suggestions are given for flagged items\"\n      ]\n    },\n    {\n      \"id\": 3,\n      \"prompt\": \"I have an interview with Notion on Thursday for the Solutions Engineer role. I'm meeting with their Head of Solutions Engineering, Jamie Park. Can you prep me? I want a company brief and some practice questions.\",\n      \"expected_output\": \"A company research brief on Notion (what they do, recent news, culture signals) and 8-10 interview questions tailored to a Solutions Engineer role, mixing behavioral, technical, and situational. Should include answer outlines and questions to ask the interviewer.\",\n      \"files\": [],\n      \"expectations\": [\n        \"A company research brief is generated covering what Notion does\",\n        \"The brief includes recent news or product information\",\n        \"At least 8 interview questions are provided\",\n        \"Questions include a mix of behavioral, role-specific, and situational\",\n        \"Answer outlines or talking point structures are provided for each question\",\n        \"Questions the user should ask the interviewer are included\",\n        \"The prep references the Solutions Engineer role specifically, not generic interview advice\",\n        \"Jamie Park's role (Head of Solutions Engineering) is acknowledged in the prep\"\n      ]\n    },\n    {\n      \"id\": 4,\n      \"prompt\": \"I need to follow up with the recruiter at Datadog - it's been 10 days since my phone screen and I haven't heard anything. The recruiter's name is Marcus Williams. Can you draft a follow-up email? Keep it short.\",\n      \"expected_output\": \"A short follow-up email (under 150 words) that references the specific role, the phone screen, and Marcus by name. Should be direct and professional without being pushy. Should also offer to log this follow-up in the tracker.\",\n      \"files\": [],\n      \"expectations\": [\n        \"A follow-up email draft is provided\",\n        \"The email is under 150 words\",\n        \"It addresses Marcus Williams by name\",\n        \"It references the phone screen specifically\",\n        \"It has a clear ask or next step\",\n        \"The tone is professional and direct, not desperate or overly formal\",\n        \"The skill offers to log this follow-up in the tracker\"\n      ]\n    }\n  ]\n}\n\nArchive v1.1.0: 7 files, 15984 bytes\n\nFiles: CHANGELOG.md (2119b), evals/evals.json (4374b), evals/files/sample-applications.md (4227b), README.md (2771b), skill-card.md (2286b), SKILL.md (19711b), _meta.json (137b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: job-search-tracker\nversion: \"1.1.0\"\ndescription: \"Use this skill when someone is job searching, tracking applications, or needs help at any stage of the hiring pipeline. Key triggers: 'I applied to,' 'just submitted an application,' 'track this job,' 'job search dashboard,' 'what needs attention,' 'any responses yet,' 'help me follow up,' 'haven't heard back,' 'prep me for an interview,' 'interview tomorrow,' 'draft a cover letter,' 'write a follow-up email,' 'thank-you note,' 'got rejected,' 'got an offer,' 'got an offer letter,' 'help me negotiate,' 'salary negotiation,' 'which resume should I send,' 'does this sound desperate,' 'what jobs have I applied to,' 'check my email for applications,' referencing a specific company they've applied to. Covers: application tracking, pipeline management, stale application reminders, Gmail scanning for application emails, LinkedIn application tracking, interview prep with company briefs and mock questions, cover letter drafting, follow-up email drafting, salary negotiation support, resume-version recommendations, outreach tone checks, and job search analytics.\"\nmetadata:\n  openclaw:\n    emoji: 🎯\n---\n\n# Job Search Tracker\n\nA complete job search command center. Tracks every application from discovery to offer, integrates with Gmail and LinkedIn for context, flags stale applications that need follow-up, and helps draft cover letters, follow-up emails, and interview prep materials.\n\n## Why this exists\n\nJob searching while juggling other responsibilities is chaotic. You apply to 30 places, lose track of which ones you followed up on, forget the recruiter's name, and can't remember which version of your resume you sent. This skill keeps it all in one place and does the busywork for you.\n\n---\n\n## The Applications File\n\nAll application data lives in a single markdown file: `applications.md` in the current working directory (or wherever the user specifies). This file is the source of truth for the entire job search.\n\n### File structure\n\n```markdown\n# Job Search Tracker\n\n_Last updated: YYYY-MM-DD_\n_Active applications: X | Interviews: X | Offers: X | Closed: X_\n\n---\n\n## [Company Name] - [Role Title]\n- **Status**: [Applied | Screening | Interviewing | Final Round | Offer | Accepted | Rejected | Withdrawn | Ghosted]\n- **Date Applied**: YYYY-MM-DD\n- **Posting URL**: [link]\n- **Salary Range**: [what's listed or discussed]\n- **Resume Version**: [which resume was sent]\n- **Cover Letter**: [yes/no, and which version or key angle used]\n- **Source**: [LinkedIn Easy Apply | Company Site | Referral | Recruiter Outreach | Job Board]\n\n### Contacts\n- [Name] - [Title] (e.g., \"Sarah Chen - Senior Recruiter\") - [email if known]\n- [Name] - [Title] - [email if known]\n\n### Timeline\n- YYYY-MM-DD: Applied via [source]\n- YYYY-MM-DD: [Event - e.g., \"Phone screen with Sarah Chen\", \"Received coding assessment\", \"Sent follow-up email\"]\n\n### Notes\n[Freeform notes - anything relevant about the role, company, conversations, gut feelings, red flags, compensation details discussed]\n\n### Follow-up\n- **Next action**: [what needs to happen next]\n- **Due by**: [date]\n- **Last contact**: [date of most recent communication]\n\n---\n```\n\nEach company gets its own section with the `## Company - Role` header. Sections are ordered by status priority: active applications first (Interviewing > Screening > Applied), then closed ones (Offers > Accepted > Rejected > Withdrawn > Ghosted) at the bottom.\n\n### Creating the file\n\nIf `applications.md` doesn't exist when the user asks to track something, create it with the header and their first application. Don't make a big deal of setup; just start tracking.\n\n### Updating entries\n\nWhen the user reports a status change (\"I heard back from Stripe\" or \"got rejected from Google\"), update the relevant section: change the status, add a timeline entry with today's date, and update the follow-up section. If they mention a new contact name, add it to Contacts.\n\n---\n\n## Gmail Integration\n\nThis skill works best when Gmail access is available (via MCP tools, the Gmail skill, or IMAP). When email tools are available, use them. When they're not, work with whatever the user tells you manually.\n\n### Auto-detecting applications\n\nWhen the user asks you to scan their email for applications (or when doing a periodic check-in):\n\n1. Search Gmail for recent application-related emails using queries like:\n   - `subject:\"application received\" OR subject:\"application confirmed\" OR subject:\"thank you for applying\" OR subject:\"we received your application\"`\n   - `from:notifications@linkedin.com subject:\"application\"`\n   - `subject:\"next steps\" from:recruiting OR from:talent OR from:careers`\n2. For each result, extract: company name, role title, date, and any recruiter names mentioned\n3. Cross-reference against `applications.md` to avoid duplicates\n4. Present new finds to the user: \"I found 3 applications in your email that aren't in your tracker yet. Want me to add them?\"\n5. Only add entries the user confirms\n\n### Pulling context on demand\n\nWhen the user asks about a specific company or the skill needs more context:\n\n1. Search Gmail for threads involving that company name\n2. Surface relevant emails: recruiter messages, interview scheduling, assessment links, offer details\n3. Summarize what the email trail shows (last contact date, who reached out, what stage it suggests)\n\n---\n\n## LinkedIn Integration\n\nLinkedIn integration works through browser automation or the LinkedIn skill/MCP if available. Since LinkedIn access can be unreliable, design all features to work without it and treat LinkedIn data as a bonus layer.\n\n### Tracking applications\n\nWhen the user mentions applying through LinkedIn or asks to check their recent applications:\n\n1. If browser tools are available, navigate to LinkedIn's \"My Jobs\" > \"Applied\" tab\n2. Extract recent applications: company, role, date applied\n3. Cross-reference against `applications.md`\n4. Present new ones for confirmation before adding\n\n### Research on demand\n\nWhen adding a new application or prepping for an interview:\n\n1. Look up the company on LinkedIn for: company size, industry, recent news/posts, key people in the department\n2. Check if the user has any connections at the company\n3. Look up the hiring manager or recruiter if named\n4. Summarize findings in a research brief\n\nIf LinkedIn isn't accessible, fall back to web search for company research. The research should happen regardless; LinkedIn is just one source.\n\n---\n\n## Resume Recommender\n\nMany users keep multiple resume variants tailored to different job types (e.g., \"engineering-focused,\" \"leadership-focused,\" \"generalist\"). This skill can suggest the best variant for a given posting.\n\n### Storing resume variants\n\nResumes live in a `resumes/` directory alongside `applications.md`. Each variant is a markdown or text file named for its slant:\n\n```\nresumes/\n  engineering-focused.md\n  leadership-focused.md\n  generalist.md\n```\n\nEach file should start with a one-paragraph self-description that summarizes the angle it takes. The skill reads these descriptions to make recommendations. It does not need the full resume content for matching, just the description block at the top.\n\n### Recommending a variant\n\nWhen the user adds a new application, asks \"which resume should I send?\", or pastes a job posting:\n\n1. Read the job posting (from URL, pasted text, or the tracker entry)\n2. Read each resume's self-description from `resumes/`\n3. Extract key signals from the posting: required skills, seniority level, team size, company size, work style cues (remote/hybrid/onsite, IC vs management)\n4. Recommend the variant whose self-description best matches those signals\n5. Present the recommendation with a one-line rationale: \"Suggested: leadership-focused.md (the posting emphasizes managing a cross-functional team and reporting to a VP)\"\n6. Offer to log the choice to the tracker entry's `Resume Version` field\n\nIf no `resumes/` directory exists, prompt the user once: \"I don't see saved resume variants. Want to set up the `resumes/` folder, or just track which version you sent each time?\" Don't badger after the initial prompt; respect \"no\" the first time.\n\n---\n\n## Proactive Reminders and Follow-ups\n\nThis is one of the most valuable features. Job seekers lose opportunities by not following up.\n\n### Stale application detection\n\nWhen the user opens their tracker or asks \"what needs attention\", scan all active applications and flag:\n\n- **No response in 7+ days after applying**: Suggest sending a follow-up email\n- **No response in 3+ days after an interview**: Suggest a thank-you note or check-in\n- **Scheduled interview coming up in 48 hours**: Prompt for interview prep\n- **No activity in 14+ days on any active application**: Suggest checking in or marking as Ghosted\n- **Follow-up due date passed**: Highlight overdue items\n\n### Dashboard view\n\nWhen the user asks for their job search status, dashboard, or overview, generate a summary:\n\n```markdown\n# Job Search Dashboard\n_As of YYYY-MM-DD_\n\n## Needs Attention (X items)\n- **[Company] - [Role]**: No response in 10 days. Consider following up.\n- **[Company] - [Role]**: Interview tomorrow. Run interview prep?\n- **[Company] - [Role]**: Follow-up was due 2 days ago.\n\n## Pipeline Summary\n- Actively interviewing: X\n- Waiting to hear back: X\n- Applied recently (< 7 days): X\n- Total active: X\n- Closed this month: X (Y rejected, Z withdrawn)\n\n## Recent Activity\n- [Date]: [Event summary]\n- [Date]: [Event summary]\n- [Date]: [Event summary]\n\n## Stats\n- Applications this week: X\n- Response rate: X%\n- Average time to first response: X days\n```\n\n---\n\n## Drafting Help\n\nThe skill helps draft outreach materials tailored to each specific application. The key value here is that the skill has all the context from the tracker -- it knows what role the user applied for, who they've been talking to, and what's happened so far.\n\n### Cover letters\n\nWhen the user asks for a cover letter:\n\n1. Ask for the job posting URL or description (or pull it from the tracker if already saved)\n2. Ask which resume version they're using (or check the tracker)\n3. Draft a cover letter that:\n   - Opens with something specific about the company, not generic praise\n   - Connects the user's actual experience to the role's requirements\n   - Keeps it to one page, three to four paragraphs\n   - Avoids cliches (\"passionate about,\" \"excited to bring my skills\")\n   - Sounds like a real person wrote it, not a template\n4. Save a note in the tracker about which angle the cover letter took\n\n### Follow-up emails\n\nWhen following up on an application or after an interview:\n\n1. Check the tracker for context: when they applied, who they've talked to, what stage they're in\n2. Draft an email that:\n   - References the specific role and conversation\n   - Adds something of value (a thought from the interview, a relevant article, a brief example of their work)\n   - Is short and direct (under 150 words for follow-ups)\n   - Has a clear ask or next step\n3. After presenting the draft, always offer to log this follow-up in the tracker: \"Want me to add this to your timeline and update the follow-up date?\"\n4. If the user confirms (or doesn't object), add a timeline entry and update the follow-up section with the new date\n\n### Thank-you notes\n\nAfter an interview:\n\n1. Ask who they met with and what was discussed (or pull from tracker notes)\n2. Draft a note that:\n   - References something specific from the conversation\n   - Reinforces fit for the role\n   - Is genuine, not formulaic\n3. One thank-you per interviewer if they met multiple people, with slight variations so they don't look identical if compared\n\n### Tone check on user drafts\n\nWhen the user pastes their own draft and asks for a check (or says \"does this sound desperate,\" \"is this templated,\" \"does this sound okay\"), run a quick tone pass before they send.\n\n**Flag categories**\n\n- **Desperate signals**: \"I'll do anything,\" \"any role,\" \"please consider me,\" stacked over-thanking (\"thank you so much for your time\" appearing twice), excessive flexibility statements (\"I'm open to anything,\" \"happy to start whenever\")\n- **Templated signals**: openings like \"I hope this email finds you well,\" \"I am writing to,\" generic praise of the company (\"a leader in the industry,\" \"world-class team\"), zero specifics pulled from the actual job posting or prior conversation\n- **Negative framing**: apologizing for gaps, leading with weakness, \"I know I'm a long shot,\" \"I may not have all the qualifications but\"\n- **Length issues**: follow-ups over 200 words, cover letter paragraphs over 5 sentences, opening paragraph that doesn't get to the point in 2 sentences\n\n**Output format**\n\n```\nTone read: [Tight | Mostly fine, some flags | Needs work]\n\nFlags found:\n1. [Category] — \"[exact phrase from draft]\" — why it lands flat\n2. ...\n\nSuggested revisions:\n- \"[phrase]\" → \"[better phrase]\"\n- ...\n```\n\nIf the draft is already tight, say so directly: \"Reads well. Nothing to fix. Ready to send.\"\n\nDo not rewrite the entire draft unless the user asks. The goal is a targeted edit, not a full rewrite that erases their voice.\n\n---\n\n## Interview Prep\n\nWhen the user has an upcoming interview or asks to prep for one:\n\n### Company research brief\n\nGenerate a one-page brief covering:\n- What the company does (in plain language, not marketing copy)\n- Recent news, product launches, or challenges\n- Company size, funding stage, growth trajectory\n- Culture signals (from job posting language, Glassdoor, LinkedIn posts)\n- Key people they might meet (from LinkedIn or the tracker's contacts)\n\n### Role-specific prep\n\nBased on the job posting:\n- Key skills/requirements they should be ready to demonstrate\n- Likely question themes (behavioral, technical, case-based)\n- Their strongest talking points mapped to the role's requirements\n- Potential concerns a hiring manager might have (gaps, career pivots, missing skills) and how to address them\n- Questions the user should ask the interviewer\n\n### Mock questions\n\nGenerate 8-10 likely interview questions:\n- 3-4 behavioral (\"Tell me about a time when...\")\n- 2-3 role-specific or technical\n- 2-3 situational (\"How would you handle...\")\n\nFor each question, provide a brief outline of a strong answer structure, not a full script. The user should sound like themselves, not like they memorized something.\n\n---\n\n## Salary Negotiation\n\nWhen the user reports an offer (triggers like \"got an offer,\" \"they made me an offer,\" \"offer letter came in,\" \"they came in at X\"), shift into negotiation support mode.\n\n### First-pass triage\n\n1. Update the tracker: status → Offer, add timeline entry with the offer details\n2. Pull context from the entry: what range was discussed at application or screen, what was on the posting, how the conversation progressed\n3. Ask three quick questions if not already known:\n   - What's the base offer, and any equity, sign-on, or bonus structure?\n   - What was the original range they signaled?\n   - How does this compare to your target and your floor?\n\n### Counter-offer analysis\n\nBased on tracker context:\n\n- Calculate deltas: offer vs. low/mid/high of the posted range, vs. the user's target, vs. their floor\n- Identify which components have negotiation room. Base usually has the most. Sign-on is often easier to move than base because it doesn't affect headcount budget. Equity is frequently flexible at senior levels. Vacation, start date, and remote/onsite are sometimes negotiable.\n- Suggest a specific counter, not a vague \"ask for more.\" Example: \"Counter at $X base + $Y sign-on. That's the high end of their stated range plus a sign-on that closes the gap to your target.\"\n\n### Counter-offer draft\n\nIf the user wants help responding:\n\n1. Draft a short, professional message that:\n   - Opens with one sentence of genuine enthusiasm about the role (not gushing)\n   - States the counter clearly and specifically\n   - Anchors the counter in something concrete: market data, the original posted range, the scope of the role, or a competing interest\n   - Leaves room to land somewhere in between\n   - Does not apologize for negotiating\n2. Avoid ultimatum framing unless the user explicitly wants to walk\n3. Save the draft to the tracker timeline\n\n### Things to flag\n\n- **Exploding offers** (deadline under 48 hours): a pressure tactic. Suggest the user ask for more time. \"I want to give this the consideration it deserves; could we extend the deadline by a few days?\"\n- **Verbal-only offers**: prompt the user to get it in writing before negotiating\n- **Below-range offers**: if the offer is below the posting's stated range, surface that directly. It's a meaningful signal about how the relationship will go.\n- **Total comp framing**: if the company emphasizes total comp heavily (equity-weighted, OTE-weighted), break it down to what's actually guaranteed cash\n\n---\n\n## Common Workflows\n\n**\"I just applied to a job\"**\n1. Ask for company, role, posting URL, how they applied, salary range if listed\n2. Create or update the entry in `applications.md`\n3. Set a follow-up reminder for 7 days out\n4. Offer to draft a connection request or follow-up plan\n\n**\"Check my email for new applications\"**\n1. Search Gmail for application confirmations since last check\n2. Present findings, add confirmed ones to tracker\n3. Run a quick stale-application scan while you're at it\n\n**\"I have an interview with [Company] on [Date]\"**\n1. Update the tracker status to Interviewing, add timeline entry\n2. Ask who they're meeting with\n3. Offer to generate a company research brief and mock questions\n4. Set a reminder for the day before\n\n**\"What's my job search looking like?\"**\n1. Read `applications.md`\n2. Generate the dashboard view\n3. Flag anything needing attention\n4. Offer to help with the highest-priority items\n\n**\"I got rejected from [Company]\"**\n1. Update status to Rejected, add timeline entry\n2. Brief empathy (one line, not a pep talk)\n3. Suggest: \"Want to draft a gracious response? Sometimes it keeps the door open for future roles.\"\n4. Move on to what's still active\n\n**\"I got an offer\"**\n1. Update status to Offer, add timeline entry with offer details (base, equity, sign-on, deadline)\n2. Pull tracker context: original range, conversations, what was promised\n3. Run counter-offer analysis: gap to target, which components have room\n4. Offer to draft a counter and log it to the timeline\n5. Flag any pressure tactics (exploding offer, verbal-only, below-range)\n\n**\"Which resume should I send?\"**\n1. Read the posting (URL, pasted text, or tracker entry)\n2. Read each resume's self-description from `resumes/`\n3. Recommend the best-fit variant with a one-line rationale\n4. Offer to log the choice in the tracker\n\n**\"Does this sound desperate / templated?\"**\n1. Run the tone check pass on the pasted draft\n2. Flag specific phrases, not the whole draft\n3. Suggest targeted revisions (don't rewrite top to bottom unless asked)\n\n---\n\n## Important Notes\n\n- The tracker is the user's data. Don't delete entries or overwrite notes without asking.\n- When in doubt about a status change, ask: \"Should I mark this as [status]?\"\n- Keep the emotional temperature right. Job searching is stressful. Be practical and supportive without being syrupy. A rejection is a data point, not a crisis; an offer is exciting, not a reason for five paragraphs of congratulations.\n- Gmail and LinkedIn access depend on what tools are available. The skill should work well even with zero integrations, just from what the user tells you directly. The integrations are a bonus, not a requirement.\n- Respect privacy. Application data, salary information, and recruiter names are sensitive. Don't include them in any outputs beyond the tracker file itself.\n\nFile v1.1.0:README.md\n\n# Job Search Tracker\n\nAn OpenClaw skill that tracks job applications from discovery to offer, flags stale applications, and helps with follow-up emails, cover letters, salary negotiation, and interview prep.\n\n**Current version: 1.1.0**\n\n## What's new in 1.1.0\n\n- **Salary Negotiation**: triggers on \"got an offer\" and runs gap analysis, counter-offer drafting, and pressure-tactic flagging (exploding offers, verbal-only, below-range)\n- **Resume Recommender**: matches stored resume variants from a `resumes/` directory against new postings and suggests the best fit\n- **Tone Check**: flags desperate, templated, or negative-framing language in user-drafted emails and cover letters before sending\n\nSee [CHANGELOG.md](CHANGELOG.md) for the full release history.\n\n## What it does\n\n- **Tracks applications** in a single markdown file with status, contacts, timeline, salary, resume version, and follow-up dates\n- **Detects stale applications** and flags anything needing attention (no response in 7+ days, overdue follow-ups, upcoming interviews)\n- **Generates a dashboard** with pipeline counts, recent activity, and actionable next steps\n- **Drafts follow-up emails, cover letters, and thank-you notes** using context from your tracker\n- **Recommends the best resume variant** for each posting (1.1.0)\n- **Tone-checks your drafts** for desperate or templated language (1.1.0)\n- **Supports salary negotiation** with counter-offer analysis and drafting (1.1.0)\n- **Preps you for interviews** with company research briefs, mock questions, and talking points\n- **Integrates with Gmail** to scan for application confirmations and pull recruiter email context\n- **Integrates with LinkedIn** to track Easy Apply submissions and research companies/contacts\n\nAll integrations are optional. The skill works well with just what you tell it directly.\n\n## Install\n\n```bash\nopenclaw skill install chris-openclaw/job-search-tracker\n```\n\n## Example prompts\n\n- \"I just applied to a Product Manager role at Stripe. Track it.\"\n- \"What needs attention in my job search?\"\n- \"Which resume should I send for this posting?\"\n- \"Does this follow-up email sound desperate?\"\n- \"I have an interview with Notion on Thursday. Prep me.\"\n- \"Draft a follow-up email for the Datadog recruiter.\"\n- \"I got an offer from Linear — help me think through the counter.\"\n- \"Check my email for any new application confirmations.\"\n- \"I got rejected from Shopify.\"\n\n## How it stores data\n\nEverything lives in `applications.md` in your working directory. Each company gets its own section with status, contacts, timeline, notes, and follow-up info. The file is plain markdown, so you can read and edit it yourself anytime.\n\nResume variants live in a sibling `resumes/` directory if you want the recommender feature.\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn77r9qjvh6fy4aja2km8bzgvd83khv9\",\n  \"slug\": \"job-search-tracker\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1778614797897\n}\n\nFile v1.1.0:CHANGELOG.md\n\n# Changelog\n\nAll notable changes to this skill will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this skill adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [1.1.0] — 2026-05-12\n\n### Added\n- **Resume Recommender**: reads resume variants from a `resumes/` directory and matches each variant's self-description against new job postings to suggest the best fit\n- **Tone Check** pass on user-drafted emails and cover letters with flag categories for desperate signals, templated signals, negative framing, and length issues; produces targeted phrase-level revision suggestions rather than full rewrites\n- **Salary Negotiation** flow triggered on \"got an offer\" with offer triage, counter-offer analysis (gap to target, which components have room), counter-offer drafting, and pressure-tactic flagging (exploding offers, verbal-only, below-range, total-comp framing)\n- Three new Common Workflows: \"I got an offer,\" \"Which resume should I send?,\" and \"Does this sound desperate?\"\n\n### Changed\n- Frontmatter now includes `version` and `metadata.openclaw.emoji` fields\n- Trigger description expanded to cover offer, negotiation, resume, and tone-check phrases\n\n### Removed\n- License section removed from README (license now managed at the ClawHub platform level)\n\n## [1.0.0] — 2026-04-12\n\n### Added\n- Initial release\n- Application tracking in a single `applications.md` markdown file\n- Stale-application detection with configurable thresholds (no response in 7+ days, overdue follow-ups, interviews in 48 hours)\n- Dashboard view with pipeline summary, recent activity, and items needing attention\n- Drafting help for cover letters, follow-up emails, and thank-you notes using tracker context\n- Interview prep: company research briefs, role-specific prep, and mock questions\n- Optional Gmail integration for auto-detecting application confirmations and pulling email context\n- Optional LinkedIn integration for tracking Easy Apply submissions and company research\n- Common Workflows for the most frequent job-search interactions\n\nFile v1.1.0:evals/files/sample-applications.md\n\n# Job Search Tracker\n\n_Last updated: 2026-03-28_\n_Active applications: 4 | Interviews: 1 | Offers: 0 | Closed: 1_\n\n---\n\n## Notion - Solutions Engineer\n- **Status**: Interviewing\n- **Date Applied**: 2026-03-15\n- **Posting URL**: https://notion.so/careers/solutions-engineer-12345\n- **Salary Range**: $130-160k\n- **Resume Version**: tech-ops\n- **Cover Letter**: Yes - focused on cross-functional collaboration and technical problem solving\n- **Source**: Company Site\n\n### Contacts\n- Jamie Park - Head of Solutions Engineering\n- Taylor Reeves - Recruiting Coordinator - taylor@notion.so\n\n### Timeline\n- 2026-03-15: Applied via company careers page\n- 2026-03-19: Email from Taylor Reeves to schedule phone screen\n- 2026-03-22: Phone screen with Taylor Reeves (30 min, went well)\n- 2026-03-26: Scheduled onsite for April 3rd with Jamie Park\n\n### Notes\nReally excited about this one. The role sits between product and customers, which fits my background well. Taylor mentioned the team is growing and they're looking for someone who can also help build out internal tooling for the solutions team.\n\n### Follow-up\n- **Next action**: Prep for onsite interview on April 3rd\n- **Due by**: 2026-04-02\n- **Last contact**: 2026-03-26\n\n---\n\n## Acme Corp - Operations Manager\n- **Status**: Applied\n- **Date Applied**: 2026-03-16\n- **Posting URL**: https://acmecorp.com/jobs/ops-manager-789\n- **Salary Range**: $95-115k\n- **Resume Version**: ops-focused\n- **Cover Letter**: No\n- **Source**: LinkedIn Easy Apply\n\n### Contacts\n- None yet\n\n### Timeline\n- 2026-03-16: Applied via LinkedIn Easy Apply\n\n### Notes\nSmaller company, ~200 employees. The role description mentioned process improvement and vendor management which I have experience with. Not my top choice but solid.\n\n### Follow-up\n- **Next action**: Follow up if no response by March 23\n- **Due by**: 2026-03-23\n- **Last contact**: 2026-03-16\n\n---\n\n## Datadog - Technical Program Manager\n- **Status**: Screening\n- **Date Applied**: 2026-03-10\n- **Posting URL**: https://careers.datadoghq.com/detail/tpm-456\n- **Salary Range**: $140-170k\n- **Resume Version**: tech-ops\n- **Cover Letter**: Yes - emphasized program management experience and technical aptitude\n- **Source**: Recruiter Outreach\n\n### Contacts\n- Marcus Williams - Senior Recruiter - marcus.williams@datadoghq.com\n\n### Timeline\n- 2026-03-10: Marcus reached out via LinkedIn\n- 2026-03-12: Applied through link Marcus sent\n- 2026-03-18: Phone screen with Marcus (25 min)\n\n### Notes\nMarcus was friendly, said the team is looking for someone who can bridge engineering and business. Mentioned next step would be a technical assessment. Haven't heard back since the phone screen.\n\n### Follow-up\n- **Next action**: Follow up with Marcus on next steps\n- **Due by**: 2026-03-25\n- **Last contact**: 2026-03-18\n\n---\n\n## Webflow - Customer Success Manager\n- **Status**: Applied\n- **Date Applied**: 2026-03-25\n- **Posting URL**: https://webflow.com/careers/csm-321\n- **Salary Range**: $100-125k\n- **Resume Version**: ops-focused\n- **Cover Letter**: No\n- **Source**: Job Board (Built In)\n\n### Contacts\n- None yet\n\n### Timeline\n- 2026-03-25: Applied via Built In job board\n\n### Notes\nInteresting company, love their product. The CSM role might be a good fit given my client-facing experience. Remote-friendly.\n\n### Follow-up\n- **Next action**: Wait for response, follow up if nothing by April 1\n- **Due by**: 2026-04-01\n- **Last contact**: 2026-03-25\n\n---\n\n## Shopify - Revenue Operations Analyst\n- **Status**: Rejected\n- **Date Applied**: 2026-03-05\n- **Posting URL**: https://shopify.com/careers/revops-analyst-654\n- **Salary Range**: $110-130k\n- **Resume Version**: ops-focused\n- **Cover Letter**: Yes - focused on data analysis and process optimization\n- **Source**: Company Site\n\n### Contacts\n- Priya Sharma - Talent Acquisition - priya.sharma@shopify.com\n\n### Timeline\n- 2026-03-05: Applied via company careers page\n- 2026-03-08: Confirmation email from Priya\n- 2026-03-20: Rejection email - \"moved forward with other candidates\"\n\n### Notes\nWas a long shot. The posting wanted 3+ years of RevOps-specific experience. Worth trying though.\n\n### Follow-up\n- **Next action**: None - closed\n- **Due by**: N/A\n- **Last contact**: 2026-03-20\n\nFile v1.1.0:skill-card.md\n\n## Description: <br>\nTracks job applications, flags stale follow-ups, prepares interview and outreach materials, recommends resume variants, checks draft tone, and supports salary negotiation from a local job-search tracker. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[chris-openclaw](https://clawhub.ai/user/chris-openclaw) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and employees use this skill to manage a job search pipeline, maintain an applications.md tracker, identify follow-up actions, and generate practical job-search communications and interview preparation. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can persist sensitive job-search, recruiter, interview, resume, and compensation details in a local tracker. <br>\nMitigation: Keep applications.md in a trusted workspace, review tracker changes before sharing, and require explicit approval before creating or updating entries. <br>\nRisk: Optional Gmail, LinkedIn, browser automation, and resume-folder features may expose private account or document content to the agent. <br>\nMitigation: Confirm exactly which sources the agent will read, scope searches narrowly, and use manual entry when account access is not appropriate. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/chris-openclaw/job-search-tracker) <br>\n- [README](README.md) <br>\n- [Changelog](CHANGELOG.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, guidance, configuration] <br>\n**Output Format:** [Markdown and plain text with optional local markdown file updates] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May create or update applications.md and read optional resumes/ content when the user requests tracking or resume recommendations.] <br>\n\n## Skill Version(s): <br>\n1.1.0 (source: frontmatter, README, CHANGELOG, server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.1.0:evals/evals.json\n\n{\n  \"skill_name\": \"job-search-tracker\",\n  \"evals\": [\n    {\n      \"id\": 1,\n      \"prompt\": \"Hey, I just applied to a Product Operations Manager role at Stripe. Applied through their careers page about 20 minutes ago. The posting is at https://stripe.com/jobs/12345. Salary listed as $120-150k. I used my 'ops-focused' resume version. No cover letter for this one. Can you start tracking it?\",\n      \"expected_output\": \"An applications.md file created with the Stripe entry fully populated: company, role, status (Applied), date, URL, salary range, resume version, cover letter (no), source (Company Site). Timeline with today's date. Follow-up reminder set for 7 days. Dashboard header with counts.\",\n      \"files\": [],\n      \"expectations\": [\n        \"An applications.md file is created\",\n        \"The file contains a '## Stripe - Product Operations Manager' section\",\n        \"Status is set to 'Applied'\",\n        \"Salary range '$120-150k' is recorded\",\n        \"Resume version 'ops-focused' is noted\",\n        \"Cover letter is marked as no\",\n        \"Source is identified as Company Site\",\n        \"A follow-up section exists with a date ~7 days from now\",\n        \"The file header includes application counts\"\n      ]\n    },\n    {\n      \"id\": 2,\n      \"prompt\": \"I've got a few applications going. Here's my current tracker file. Can you tell me what needs attention and give me the dashboard view?\\n\\n[Use the file at evals/files/sample-applications.md]\",\n      \"expected_output\": \"A dashboard view showing: applications needing follow-up (stale ones), pipeline summary with counts by status, recent activity, and flagged items. Should identify the Acme Corp application as stale (applied 12 days ago, no response).\",\n      \"files\": [\"evals/files/sample-applications.md\"],\n      \"expectations\": [\n        \"A dashboard summary is generated\",\n        \"Acme Corp is flagged as needing follow-up (applied 12+ days ago with no response)\",\n        \"Pipeline counts are accurate (matches the data in the sample file)\",\n        \"A 'Needs Attention' section highlights overdue items\",\n        \"Recent activity is summarized\",\n        \"Specific actionable suggestions are given for flagged items\"\n      ]\n    },\n    {\n      \"id\": 3,\n      \"prompt\": \"I have an interview with Notion on Thursday for the Solutions Engineer role. I'm meeting with their Head of Solutions Engineering, Jamie Park. Can you prep me? I want a company brief and some practice questions.\",\n      \"expected_output\": \"A company research brief on Notion (what they do, recent news, culture signals) and 8-10 interview questions tailored to a Solutions Engineer role, mixing behavioral, technical, and situational. Should include answer outlines and questions to ask the interviewer.\",\n      \"files\": [],\n      \"expectations\": [\n        \"A company research brief is generated covering what Notion does\",\n        \"The brief includes recent news or product information\",\n        \"At least 8 interview questions are provided\",\n        \"Questions include a mix of behavioral, role-specific, and situational\",\n        \"Answer outlines or talking point structures are provided for each question\",\n        \"Questions the user should ask the interviewer are included\",\n        \"The prep references the Solutions Engineer role specifically, not generic interview advice\",\n        \"Jamie Park's role (Head of Solutions Engineering) is acknowledged in the prep\"\n      ]\n    },\n    {\n      \"id\": 4,\n      \"prompt\": \"I need to follow up with the recruiter at Datadog - it's been 10 days since my phone screen and I haven't heard anything. The recruiter's name is Marcus Williams. Can you draft a follow-up email? Keep it short.\",\n      \"expected_output\": \"A short follow-up email (under 150 words) that references the specific role, the phone screen, and Marcus by name. Should be direct and professional without being pushy. Should also offer to log this follow-up in the tracker.\",\n      \"files\": [],\n      \"expectations\": [\n        \"A follow-up email draft is provided\",\n        \"The email is under 150 words\",\n        \"It addresses Marcus Williams by name\",\n        \"It references the phone screen specifically\",\n        \"It has a clear ask or next step\",\n        \"The tone is professional and direct, not desperate or overly formal\",\n        \"The skill offers to log this follow-up in the tracker\"\n      ]\n    }\n  ]\n}\n\nArchive v1.0.0: 2 files, 5714 bytes\n\nFiles: SKILL.md (12922b), _meta.json (137b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: job-search-tracker\ndescription: \"Use this skill when someone is job searching, tracking applications, or needs help at any stage of the hiring pipeline. Key triggers: 'I applied to,' 'just submitted an application,' 'track this job,' 'job search dashboard,' 'what needs attention,' 'any responses yet,' 'help me follow up,' 'haven't heard back,' 'prep me for an interview,' 'interview tomorrow,' 'draft a cover letter,' 'write a follow-up email,' 'thank-you note,' 'got rejected,' 'got an offer,' 'what jobs have I applied to,' 'check my email for applications,' referencing a specific company they've applied to. Covers: application tracking, pipeline management, stale application reminders, Gmail scanning for application emails, LinkedIn application tracking, interview prep with company briefs and mock questions, cover letter drafting, follow-up email drafting, and job search analytics.\"\n---\n\n# Job Search Tracker\n\nA complete job search command center. Tracks every application from discovery to offer, integrates with Gmail and LinkedIn for context, flags stale applications that need follow-up, and helps draft cover letters, follow-up emails, and interview prep materials.\n\n## Why this exists\n\nJob searching while juggling other responsibilities is chaotic. You apply to 30 places, lose track of which ones you followed up on, forget the recruiter's name, and can't remember which version of your resume you sent. This skill keeps it all in one place and does the busywork for you.\n\n---\n\n## The Applications File\n\nAll application data lives in a single markdown file: `applications.md` in the current working directory (or wherever the user specifies). This file is the source of truth for the entire job search.\n\n### File structure\n\n```markdown\n# Job Search Tracker\n\n_Last updated: YYYY-MM-DD_\n_Active applications: X | Interviews: X | Offers: X | Closed: X_\n\n---\n\n## [Company Name] - [Role Title]\n- **Status**: [Applied | Screening | Interviewing | Final Round | Offer | Accepted | Rejected | Withdrawn | Ghosted]\n- **Date Applied**: YYYY-MM-DD\n- **Posting URL**: [link]\n- **Salary Range**: [what's listed or discussed]\n- **Resume Version**: [which resume was sent]\n- **Cover Letter**: [yes/no, and which version or key angle used]\n- **Source**: [LinkedIn Easy Apply | Company Site | Referral | Recruiter Outreach | Job Board]\n\n### Contacts\n- [Name] - [Title] (e.g., \"Sarah Chen - Senior Recruiter\") - [email if known]\n- [Name] - [Title] - [email if known]\n\n### Timeline\n- YYYY-MM-DD: Applied via [source]\n- YYYY-MM-DD: [Event - e.g., \"Phone screen with Sarah Chen\", \"Received coding assessment\", \"Sent follow-up email\"]\n\n### Notes\n[Freeform notes - anything relevant about the role, company, conversations, gut feelings, red flags, compensation details discussed]\n\n### Follow-up\n- **Next action**: [what needs to happen next]\n- **Due by**: [date]\n- **Last contact**: [date of most recent communication]\n\n---\n```\n\nEach company gets its own section with the `## Company - Role` header. Sections are ordered by status priority: active applications first (Interviewing > Screening > Applied), then closed ones (Offers > Accepted > Rejected > Withdrawn > Ghosted) at the bottom.\n\n### Creating the file\n\nIf `applications.md` doesn't exist when the user asks to track something, create it with the header and their first application. Don't make a big deal of setup; just start tracking.\n\n### Updating entries\n\nWhen the user reports a status change (\"I heard back from Stripe\" or \"got rejected from Google\"), update the relevant section: change the status, add a timeline entry with today's date, and update the follow-up section. If they mention a new contact name, add it to Contacts.\n\n---\n\n## Gmail Integration\n\nThis skill works best when Gmail access is available (via MCP tools, the Gmail skill, or IMAP). When email tools are available, use them. When they're not, work with whatever the user tells you manually.\n\n### Auto-detecting applications\n\nWhen the user asks you to scan their email for applications (or when doing a periodic check-in):\n\n1. Search Gmail for recent application-related emails using queries like:\n   - `subject:\"application received\" OR subject:\"application confirmed\" OR subject:\"thank you for applying\" OR subject:\"we received your application\"`\n   - `from:notifications@linkedin.com subject:\"application\"`\n   - `subject:\"next steps\" from:recruiting OR from:talent OR from:careers`\n2. For each result, extract: company name, role title, date, and any recruiter names mentioned\n3. Cross-reference against `applications.md` to avoid duplicates\n4. Present new finds to the user: \"I found 3 applications in your email that aren't in your tracker yet. Want me to add them?\"\n5. Only add entries the user confirms\n\n### Pulling context on demand\n\nWhen the user asks about a specific company or the skill needs more context:\n\n1. Search Gmail for threads involving that company name\n2. Surface relevant emails: recruiter messages, interview scheduling, assessment links, offer details\n3. Summarize what the email trail shows (last contact date, who reached out, what stage it suggests)\n\n---\n\n## LinkedIn Integration\n\nLinkedIn integration works through browser automation or the LinkedIn skill/MCP if available. Since LinkedIn access can be unreliable, design all features to work without it and treat LinkedIn data as a bonus layer.\n\n### Tracking applications\n\nWhen the user mentions applying through LinkedIn or asks to check their recent applications:\n\n1. If browser tools are available, navigate to LinkedIn's \"My Jobs\" > \"Applied\" tab\n2. Extract recent applications: company, role, date applied\n3. Cross-reference against `applications.md`\n4. Present new ones for confirmation before adding\n\n### Research on demand\n\nWhen adding a new application or prepping for an interview:\n\n1. Look up the company on LinkedIn for: company size, industry, recent news/posts, key people in the department\n2. Check if the user has any connections at the company\n3. Look up the hiring manager or recruiter if named\n4. Summarize findings in a research brief\n\nIf LinkedIn isn't accessible, fall back to web search for company research. The research should happen regardless; LinkedIn is just one source.\n\n---\n\n## Proactive Reminders and Follow-ups\n\nThis is one of the most valuable features. Job seekers lose opportunities by not following up.\n\n### Stale application detection\n\nWhen the user opens their tracker or asks \"what needs attention\", scan all active applications and flag:\n\n- **No response in 7+ days after applying**: Suggest sending a follow-up email\n- **No response in 3+ days after an interview**: Suggest a thank-you note or check-in\n- **Scheduled interview coming up in 48 hours**: Prompt for interview prep\n- **No activity in 14+ days on any active application**: Suggest checking in or marking as Ghosted\n- **Follow-up due date passed**: Highlight overdue items\n\n### Dashboard view\n\nWhen the user asks for their job search status, dashboard, or overview, generate a summary:\n\n```markdown\n# Job Search Dashboard\n_As of YYYY-MM-DD_\n\n## Needs Attention (X items)\n- **[Company] - [Role]**: No response in 10 days. Consider following up.\n- **[Company] - [Role]**: Interview tomorrow. Run interview prep?\n- **[Company] - [Role]**: Follow-up was due 2 days ago.\n\n## Pipeline Summary\n- Actively interviewing: X\n- Waiting to hear back: X\n- Applied recently (< 7 days): X\n- Total active: X\n- Closed this month: X (Y rejected, Z withdrawn)\n\n## Recent Activity\n- [Date]: [Event summary]\n- [Date]: [Event summary]\n- [Date]: [Event summary]\n\n## Stats\n- Applications this week: X\n- Response rate: X%\n- Average time to first response: X days\n```\n\n---\n\n## Drafting Help\n\nThe skill helps draft outreach materials tailored to each specific application. The key value here is that the skill has all the context from the tracker -- it knows what role the user applied for, who they've been talking to, and what's happened so far.\n\n### Cover letters\n\nWhen the user asks for a cover letter:\n\n1. Ask for the job posting URL or description (or pull it from the tracker if already saved)\n2. Ask which resume version they're using (or check the tracker)\n3. Draft a cover letter that:\n   - Opens with something specific about the company, not generic praise\n   - Connects the user's actual experience to the role's requirements\n   - Keeps it to one page, three to four paragraphs\n   - Avoids cliches (\"passionate about,\" \"excited to bring my skills\")\n   - Sounds like a real person wrote it, not a template\n4. Save a note in the tracker about which angle the cover letter took\n\n### Follow-up emails\n\nWhen following up on an application or after an interview:\n\n1. Check the tracker for context: when they applied, who they've talked to, what stage they're in\n2. Draft an email that:\n   - References the specific role and conversation\n   - Adds something of value (a thought from the interview, a relevant article, a brief example of their work)\n   - Is short and direct (under 150 words for follow-ups)\n   - Has a clear ask or next step\n3. After presenting the draft, always offer to log this follow-up in the tracker: \"Want me to add this to your timeline and update the follow-up date?\"\n4. If the user confirms (or doesn't object), add a timeline entry and update the follow-up section with the new date\n\n### Thank-you notes\n\nAfter an interview:\n\n1. Ask who they met with and what was discussed (or pull from tracker notes)\n2. Draft a note that:\n   - References something specific from the conversation\n   - Reinforces fit for the role\n   - Is genuine, not formulaic\n3. One thank-you per interviewer if they met multiple people, with slight variations so they don't look identical if compared\n\n---\n\n## Interview Prep\n\nWhen the user has an upcoming interview or asks to prep for one:\n\n### Company research brief\n\nGenerate a one-page brief covering:\n- What the company does (in plain language, not marketing copy)\n- Recent news, product launches, or challenges\n- Company size, funding stage, growth trajectory\n- Culture signals (from job posting language, Glassdoor, LinkedIn posts)\n- Key people they might meet (from LinkedIn or the tracker's contacts)\n\n### Role-specific prep\n\nBased on the job posting:\n- Key skills/requirements they should be ready to demonstrate\n- Likely question themes (behavioral, technical, case-based)\n- Their strongest talking points mapped to the role's requirements\n- Potential concerns a hiring manager might have (gaps, career pivots, missing skills) and how to address them\n- Questions the user should ask the interviewer\n\n### Mock questions\n\nGenerate 8-10 likely interview questions:\n- 3-4 behavioral (\"Tell me about a time when...\")\n- 2-3 role-specific or technical\n- 2-3 situational (\"How would you handle...\")\n\nFor each question, provide a brief outline of a strong answer structure, not a full script. The user should sound like themselves, not like they memorized something.\n\n---\n\n## Common Workflows\n\n**\"I just applied to a job\"**\n1. Ask for company, role, posting URL, how they applied, salary range if listed\n2. Create or update the entry in `applications.md`\n3. Set a follow-up reminder for 7 days out\n4. Offer to draft a connection request or follow-up plan\n\n**\"Check my email for new applications\"**\n1. Search Gmail for application confirmations since last check\n2. Present findings, add confirmed ones to tracker\n3. Run a quick stale-application scan while you're at it\n\n**\"I have an interview with [Company] on [Date]\"**\n1. Update the tracker status to Interviewing, add timeline entry\n2. Ask who they're meeting with\n3. Offer to generate a company research brief and mock questions\n4. Set a reminder for the day before\n\n**\"What's my job search looking like?\"**\n1. Read `applications.md`\n2. Generate the dashboard view\n3. Flag anything needing attention\n4. Offer to help with the highest-priority items\n\n**\"I got rejected from [Company]\"**\n1. Update status to Rejected, add timeline entry\n2. Brief empathy (one line, not a pep talk)\n3. Suggest: \"Want to draft a gracious response? Sometimes it keeps the door open for future roles.\"\n4. Move on to what's still active\n\n---\n\n## Important Notes\n\n- The tracker is the user's data. Don't delete entries or overwrite notes without asking.\n- When in doubt about a status change, ask: \"Should I mark this as [status]?\"\n- Keep the emotional temperature right. Job searching is stressful. Be practical and supportive without being syrupy. A rejection is a data point, not a crisis; an offer is exciting, not a reason for five paragraphs of congratulations.\n- Gmail and LinkedIn access depend on what tools are available. The skill should work well even with zero integrations, just from what the user tells you directly. The integrations are a bonus, not a requirement.\n- Respect privacy. Application data, salary information, and recruiter names are sensitive. Don't include them in any outputs beyond the tracker file itself.\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn77r9qjvh6fy4aja2km8bzgvd83khv9\",\n  \"slug\": \"job-search-tracker\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1776021823140\n}","readmeExcerpt":"Skill: Job Search Tracker Owner: chris Summary: Use this skill when someone is actively managing a job search and references applications, interviews, offers, or recruiter communication. Specific triggers:... Tags: applications:1.0.0, career:1.0.0, cover-letter:1.0.0, email:1.0.0, follow-up:1.0.0, interview-prep:1.0.0, job-search:1.0.0, latest:1.1.2, pipeline:1.0.0, productivity:1.0.0, resume:1.0.0 Version history: v","codeSnippets":[],"executableExamples":[{"language":"markdown","snippet":"# Job Search Tracker\n\n_Last updated: YYYY-MM-DD_\n_Active applications: X | Interviews: X | Offers: X | Closed: X_\n\n---\n\n## [Company Name] - [Role Title]\n- **Status**: [Applied | Screening | Interviewing | Final Round | Offer | Accepted | Rejected | Withdrawn | Ghosted]\n- **Date Applied**: YYYY-MM-DD\n- **Posting URL**: [link]\n- **Salary Range**: [what's listed or discussed]\n- **Resume Version**: [which resume was sent]\n- **Cover Letter**: [yes/no, and which version or key angle used]\n- **Source**: [LinkedIn Easy Apply | Company Site | Referral | Recruiter Outreach | Job Board]\n\n### Contacts\n- [Name] - [Title] (e.g., \"Sarah Chen - Senior Recruiter\") - [email if known]\n- [Name] - [Title] - [email if known]\n\n### Timeline\n- YYYY-MM-DD: Applied via [source]\n- YYYY-MM-DD: [Event - e.g., \"Phone screen with Sarah Chen\", \"Received coding assessment\", \"Sent follow-up email\"]\n\n### Notes\n[Freeform notes - anything relevant about the role, company, conversations, gut feelings, red flags, compensation details discussed]\n\n### Follow-up\n- **Next action**: [what needs to happen next]\n- **Due by**: [date]\n- **Last contact**: [date of most recent communication]\n\n---"},{"language":"text","snippet":"resumes/\n  engineering-focused.md\n  leadership-focused.md\n  generalist.md"},{"language":"markdown","snippet":"# Job Search Dashboard\n_As of YYYY-MM-DD_\n\n## Needs Attention (X items)\n- **[Company] - [Role]**: No response in 10 days. Consider following up.\n- **[Company] - [Role]**: Interview tomorrow. Run interview prep?\n- **[Company] - [Role]**: Follow-up was due 2 days ago.\n\n## Pipeline Summary\n- Actively interviewing: X\n- Waiting to hear back: X\n- Applied recently (< 7 days): X\n- Total active: X\n- Closed this month: X (Y rejected, Z withdrawn)\n\n## Recent Activity\n- [Date]: [Event summary]\n- [Date]: [Event summary]\n- [Date]: [Event summary]\n\n## Stats\n- Applications this week: X\n- Response rate: X%\n- Average time to first response: X days"},{"language":"text","snippet":"Tone read: [Tight | Mostly fine, some flags | Needs work]\n\nFlags found:\n1. [Category] — \"[exact phrase from draft]\" — why it lands flat\n2. ...\n\nSuggested revisions:\n- \"[phrase]\" → \"[better phrase]\"\n- ..."},{"language":"bash","snippet":"openclaw skill install chris-openclaw/job-search-tracker"},{"language":"markdown","snippet":"# Job Search Tracker\n\n_Last updated: YYYY-MM-DD_\n_Active applications: X | Interviews: X | Offers: X | Closed: X_\n\n---\n\n## [Company Name] - [Role Title]\n- **Status**: [Applied | Screening | Interviewing | Final Round | Offer | Accepted | Rejected | Withdrawn | Ghosted]\n- **Date Applied**: YYYY-MM-DD\n- **Posting URL**: [link]\n- **Salary Range**: [what's listed or discussed]\n- **Resume Version**: [which resume was sent]\n- **Cover Letter**: [yes/no, and which version or key angle used]\n- **Source**: [LinkedIn Easy Apply | Company Site | Referral | Recruiter Outreach | Job Board]\n\n### Contacts\n- [Name] - [Title] (e.g., \"Sarah Chen - Senior Recruiter\") - [email if known]\n- [Name] - [Title] - [email if known]\n\n### Timeline\n- YYYY-MM-DD: Applied via [source]\n- YYYY-MM-DD: [Event - e.g., \"Phone screen with Sarah Chen\", \"Received coding assessment\", \"Sent follow-up email\"]\n\n### Notes\n[Freeform notes - anything relevant about the role, company, conversations, gut feelings, red flags, compensation details discussed]\n\n### Follow-up\n- **Next action**: [what needs to happen next]\n- **Due by**: [date]\n- **Last contact**: [date of most recent communication]\n\n---"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: job-search-tracker\nversion: 1.1.2\ndescription: \"Use this skill when someone is actively managing a job search and references applications, interviews, offers, or recruiter communication. Specific triggers: 'I applied to [company],' 'just submitted an application,' 'track this job,' 'job search dashboard,' 'what jobs have I applied to,' 'any responses from [company] yet,' 'haven't heard back from [company],' 'prep me for the [company] interview,' 'draft a cover letter for [company/role],' 'write a follow-up email to [company/recruiter],' 'thank-you note for the [company] interview,' 'got rejected from [company],' 'got an offer from [company],' 'help me negotiate the [company] offer,' 'salary negotiation,' 'which resume should I send for [posting],' 'does this [draft] sound desperate or templated,' or any message that explicitly names a company in a hiring context. Do NOT trigger on general productivity questions, calendar requests, or unrelated email tasks. Covers: application tracking in a local markdown file, stale-application detection, follow-up and cover-letter drafting with tracker context, interview prep, salary negotiation analysis and counter-offer drafting, tone checks on user drafts, resume-variant recommendations, and optional Gmail/LinkedIn lookups (user-mediated, see Data Handling).\"\nmetadata:\n  openclaw:\n    emoji: 🎯\n---\n\n# Job Search Tracker\n\nA complete job search command center. Tracks every application from discovery to offer, integrates with Gmail and LinkedIn for context, flags stale applications that need follow-up, and helps draft cover letters, follow-up emails, and interview prep materials.\n\n## Why this exists\n\nJob searching while juggling other responsibilities is chaotic. You apply to 30 places, lose track of which ones you followed up on, forget the recruiter's name, and can't remember which version of your resume you sent. This skill keeps it all in one place and does the busywork for you.\n\n---\n\n## The Applications File\n\nAll application data lives in a single markdown file: `applications.md` in the current working directory (or wherever the user specifies). This file is the source of truth for the entire job search.\n\n### File structure\n\n```markdown\n# Job Search Tracker\n\n_Last updated: YYYY-MM-DD_\n_Active applications: X | Interviews: X | Offers: X | Closed: X_\n\n---\n\n## [Company Name] - [Role Title]\n- **Status**: [Applied | Screening | Interviewing | Final Round | Offer | Accepted | Rejected | Withdrawn | Ghosted]\n- **Date Applied**: YYYY-MM-DD\n- **Posting URL**: [link]\n- **Salary Range**: [what's listed or discussed]\n- **Resume Version**: [which resume was sent]\n- **Cover Letter**: [yes/no, and which version or key angle used]\n- **Source**: [LinkedIn Easy Apply | Company Site | Referral | Recruiter Outreach | Job Board]\n\n### Contacts\n- [Name] - [Title] (e.g., \"Sarah Chen - Senior Recruiter\") - [email if known]\n- [Name] - [Title] - [email if known]\n\n### Timeline\n- YYYY-MM-DD: Applied via [source]\n- YYYY-MM-DD:"},{"path":"README.md","content":"# Job Search Tracker\n\nAn OpenClaw skill that tracks job applications from discovery to offer, flags stale applications, and helps with follow-up emails, cover letters, salary negotiation, and interview prep.\n\n**Current version: 1.1.2**\n\n## What's new in 1.1.2\n\n- Rewrote the **Data Handling and Privacy** section to accurately describe tool usage (rather than understating it)\n- Added a **Permissions and Privacy** section to this README so users see the scope of access before installing\n- Narrowed the activation triggers in `description` to reduce over-activation on generic email or calendar phrases\n\nSee [CHANGELOG.md](CHANGELOG.md) for the full release history.\n\n## What it does\n\n- **Tracks applications** in a single markdown file with status, contacts, timeline, salary, resume version, and follow-up dates\n- **Detects stale applications** and flags anything needing attention (no response in 7+ days, overdue follow-ups, upcoming interviews)\n- **Generates a dashboard** with pipeline counts, recent activity, and actionable next steps\n- **Drafts follow-up emails, cover letters, and thank-you notes** using context from your tracker\n- **Recommends the best resume variant** for each posting (1.1.0)\n- **Tone-checks your drafts** for desperate or templated language (1.1.0)\n- **Supports salary negotiation** with counter-offer analysis and drafting (1.1.0)\n- **Preps you for interviews** with company research briefs, mock questions, and talking points\n- **Integrates with Gmail** to scan for application confirmations and pull recruiter email context\n- **Integrates with LinkedIn** to track Easy Apply submissions and research companies/contacts\n\nAll integrations are optional. The skill works well with just what you tell it directly.\n\n## Install\n\n```bash\nopenclaw skill install chris-openclaw/job-search-tracker\n```\n\n## Example prompts\n\n- \"I just applied to a Product Manager role at Stripe. Track it.\"\n- \"What needs attention in my job search?\"\n- \"Which resume should I send for this posting?\"\n- \"Does this follow-up email sound desperate?\"\n- \"I have an interview with Notion on Thursday. Prep me.\"\n- \"Draft a follow-up email for the Datadog recruiter.\"\n- \"I got an offer from Linear — help me think through the counter.\"\n- \"Check my email for any new application confirmations.\"\n- \"I got rejected from Shopify.\"\n\n## How it stores data\n\nEverything lives in `applications.md` in your working directory. Each company gets its own section with status, contacts, timeline, notes, and follow-up info. The file is plain markdown, so you can read and edit it yourself anytime.\n\nResume variants live in a sibling `resumes/` directory if you want the recommender feature.\n\n## Permissions and Privacy (read before installing)\n\nThis skill instructs the assistant to use whichever of the following tools you have connected — it does not bundle them, but it will reach for them when relevant:\n\n- **Gmail / email tools**: search for application confirmations, recruiter messages, interview scheduling, "},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn77r9qjvh6fy4aja2km8bzgvd83khv9\",\n  \"slug\": \"job-search-tracker\",\n  \"version\": \"1.1.2\",\n  \"publishedAt\": 1780953260319\n}"},{"path":"CHANGELOG.md","content":"# Changelog\n\nAll notable changes to this skill will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this skill adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [1.1.2] — 2026-06-08\n\n### Changed\n- Rewrote **Data Handling and Privacy** section in SKILL.md to accurately describe assistant-mediated use of Gmail, LinkedIn, browser, and web-search tools, rather than understating tool usage. The skill instructs the assistant to invoke those tools when connected; this version is explicit about scope, consent rules, and what stays local\n- Narrowed the activation triggers in the `description` frontmatter to require explicit job-search context (e.g., a named company in a hiring context) and reduce over-activation on generic email, calendar, or follow-up phrases\n\n### Added\n- **Permissions and Privacy** section in README.md so users see the scope of access (Gmail, LinkedIn, browser, web search, local files) before installing, along with a \"tracker-only mode\" path for users who'd rather not connect Gmail or LinkedIn\n\n## [1.1.1] — 2026-06-08\n\n### Added\n- **Data Handling and Privacy** section (later rewritten in 1.1.2 to remove an intent-code divergence that misrepresented tool usage)\n\n## [1.1.0] — 2026-05-12\n\n### Added\n- **Resume Recommender**: reads resume variants from a `resumes/` directory and matches each variant's self-description against new job postings to suggest the best fit\n- **Tone Check** pass on user-drafted emails and cover letters with flag categories for desperate signals, templated signals, negative framing, and length issues; produces targeted phrase-level revision suggestions rather than full rewrites\n- **Salary Negotiation** flow triggered on \"got an offer\" with offer triage, counter-offer analysis (gap to target, which components have room), counter-offer drafting, and pressure-tactic flagging (exploding offers, verbal-only, below-range, total-comp framing)\n- Three new Common Workflows: \"I got an offer,\" \"Which resume should I send?,\" and \"Does this sound desperate?\"\n\n### Changed\n- Frontmatter now includes `version` and `metadata.openclaw.emoji` fields\n- Trigger description expanded to cover offer, negotiation, resume, and tone-check phrases\n\n### Removed\n- License section removed from README (license now managed at the ClawHub platform level)\n\n## [1.0.0] — 2026-04-12\n\n### Added\n- Initial release\n- Application tracking in a single `applications.md` markdown file\n- Stale-application detection with configurable thresholds (no response in 7+ days, overdue follow-ups, interviews in 48 hours)\n- Dashboard view with pipeline summary, recent activity, and items needing attention\n- Drafting help for cover letters, follow-up emails, and thank-you notes using tracker context\n- Interview prep: company research briefs, role-specific prep, and mock questions\n- Optional Gmail integration for auto-detecting application confirmations and pulling email context\n- Optio"},{"path":"evals/files/sample-applications.md","content":"# Job Search Tracker\n\n_Last updated: 2026-03-28_\n_Active applications: 4 | Interviews: 1 | Offers: 0 | Closed: 1_\n\n---\n\n## Notion - Solutions Engineer\n- **Status**: Interviewing\n- **Date Applied**: 2026-03-15\n- **Posting URL**: https://notion.so/careers/solutions-engineer-12345\n- **Salary Range**: $130-160k\n- **Resume Version**: tech-ops\n- **Cover Letter**: Yes - focused on cross-functional collaboration and technical problem solving\n- **Source**: Company Site\n\n### Contacts\n- Jamie Park - Head of Solutions Engineering\n- Taylor Reeves - Recruiting Coordinator - taylor@notion.so\n\n### Timeline\n- 2026-03-15: Applied via company careers page\n- 2026-03-19: Email from Taylor Reeves to schedule phone screen\n- 2026-03-22: Phone screen with Taylor Reeves (30 min, went well)\n- 2026-03-26: Scheduled onsite for April 3rd with Jamie Park\n\n### Notes\nReally excited about this one. The role sits between product and customers, which fits my background well. Taylor mentioned the team is growing and they're looking for someone who can also help build out internal tooling for the solutions team.\n\n### Follow-up\n- **Next action**: Prep for onsite interview on April 3rd\n- **Due by**: 2026-04-02\n- **Last contact**: 2026-03-26\n\n---\n\n## Acme Corp - Operations Manager\n- **Status**: Applied\n- **Date Applied**: 2026-03-16\n- **Posting URL**: https://acmecorp.com/jobs/ops-manager-789\n- **Salary Range**: $95-115k\n- **Resume Version**: ops-focused\n- **Cover Letter**: No\n- **Source**: LinkedIn Easy Apply\n\n### Contacts\n- None yet\n\n### Timeline\n- 2026-03-16: Applied via LinkedIn Easy Apply\n\n### Notes\nSmaller company, ~200 employees. The role description mentioned process improvement and vendor management which I have experience with. Not my top choice but solid.\n\n### Follow-up\n- **Next action**: Follow up if no response by March 23\n- **Due by**: 2026-03-23\n- **Last contact**: 2026-03-16\n\n---\n\n## Datadog - Technical Program Manager\n- **Status**: Screening\n- **Date Applied**: 2026-03-10\n- **Posting URL**: https://careers.datadoghq.com/detail/tpm-456\n- **Salary Range**: $140-170k\n- **Resume Version**: tech-ops\n- **Cover Letter**: Yes - emphasized program management experience and technical aptitude\n- **Source**: Recruiter Outreach\n\n### Contacts\n- Marcus Williams - Senior Recruiter - marcus.williams@datadoghq.com\n\n### Timeline\n- 2026-03-10: Marcus reached out via LinkedIn\n- 2026-03-12: Applied through link Marcus sent\n- 2026-03-18: Phone screen with Marcus (25 min)\n\n### Notes\nMarcus was friendly, said the team is looking for someone who can bridge engineering and business. Mentioned next step would be a technical assessment. Haven't heard back since the phone screen.\n\n### Follow-up\n- **Next action**: Follow up with Marcus on next steps\n- **Due by**: 2026-03-25\n- **Last contact**: 2026-03-18\n\n---\n\n## Webflow - Customer Success Manager\n- **Status**: Applied\n- **Date Applied**: 2026-03-25\n- **Posting URL**: https://webflow.com/careers/csm-321\n- **Salary Range**: $100-125k\n- **Resume Versio"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1847,"uniquenessScore":44,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T09:44:43.129Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T09:44:43.129Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:15:07.472Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}