offer

Use when the user gets a job offer, is deciding between offers, asks whether to accept, wants to negotiate salary, or asks for a counteroffer. Helps evaluate and compare offers (total compensation, co

SKILL.md

GitHub

/offer

Use references/offer-worksheet.md for the comparison table, negotiation scripts, fine-print checklist, and accept/decline wording, and references/negotiation-and-fine-print.md for what to expect by career stage, equity, benefits math, counteroffers, background checks, and sources.

If the offer hasn't arrived in writing yet (a call just came), the first step is the worksheet's "when the offer first comes" script: thank them, ask for it in writing and the answer-by date, and don't accept or name numbers on the call.

  1. Get the details (ask the user to paste the offer or drop the PDF in imports/): base, signing bonus, relocation, bonus target, equity, start date, location, remote/hybrid terms, benefits (retirement match, health, PTO, tuition reimbursement), program structure if any, deadline. Save to jobs/<folder>/offer.md, and put the answer-by date in the job's deadline column in jobs/tracker.csv (status offer, next_action=Respond to offer, next_action_date = 3 days before the answer-by date, or today if that's sooner) so the board and /today warn them as it gets close. Log it in history/activity.md.
  2. Benchmark: get a sourced market range for that title, level, and city by following references/pay-data.md (government wage data, posted ranges, employer H-1B filings, crowd data as a secondary signal); reuse the job folder's "Market pay" block if it's recent. Put the table and one-line synthesis in offer.md, compare base to base and total to total, and note cost-of-living differences between locations. Label estimates as estimates.
  3. Compare (if more than one): a table on money (first-year total), growth (training, mentorship, scope, brand), work (what they'd actually do daily vs. what they enjoyed in past roles), location/life, risk (startup funding, layoffs). Ask the user to weight what matters; give a clear recommendation with reasoning, and say it's their call.
  4. Read the fine print first: signing bonus and relocation repayment terms (often prorated clawbacks over 12–24 months if they leave), lump-sum vs. managed relocation and whether it's taxed or grossed up, equity vesting and cliff (count only what vests in year one, at today's price, as an estimate; value private-startup options at $0 plus upside; a connected company-data app can add funding history and the last valuation, with the preferred-vs-common caveats in knowledge/data-connectors.md, never as what the options are worth), benefits in dollars (match, premiums), and contingencies (background check, drug screen, references, degree completion for students). If a background check is pending, help the user line up exact past dates and titles; in the US they have the right to see and dispute a report before an offer is pulled over it. Outside the US, also compare notice period, probation, 13th-month pay, statutory leave and pension instead of the US benefits math (reference, section 9). Structured programs (e.g. new-grad cohorts) often have a fixed base; negotiate sign-on, relocation, or start date instead.
  5. Negotiation: even when base is fixed, signing bonus, relocation, start date, title or level, or remote terms can often move; experienced hires usually have more room on base. Draft a short, warm, specific ask into outbox/ (one ask, one reason, e.g., a competing offer, relocation cost, or market data; never invent a competing offer). A counteroffer never says "accept", not even "accept with one change"; the user accepts separately once the final terms are in writing. Prepare a phone script if they prefer calls. Set expectations honestly: in Pew's 2023 survey about two-thirds of people who asked got at least something more, and about a third got no change; a polite single ask rarely costs an offer. If the user's current employer counteroffers, walk through why they wanted to leave before comparing numbers (reference, section 4). 5b. Hourly, contract and academic offers: compare hourly or day rates on the same basis (hours actually offered, unpaid gaps, benefits eligibility by hours), and for contracts read the contract terms and status (W-2/1099, IR35) first; for faculty offers, the start-up package, teaching load and tenure clock (the matching file in the playbook's "Special situations"). 5c. If the user is employed: the start date is the earliest date their notice period allows after a written, unconditional offer; they resign only after that, in writing, briefly (knowledge/searching-while-employed.md §4).
  6. Deadlines: if the deadline is only a day or three, use the worksheet's short-deadline script; many employers extend when asked. If waiting on another company, draft a polite extension request: open with what genuinely appeals about this offer (one specific thing), ask for a specific, modest extension (usually 1–2 weeks, to the date the other decision is due), and accept that they may say no. Also draft a note to the other company asking about their timeline. If the user is a student or new grad (career_stage in preferences), check whether their school's career center has an employer offer-timeline policy and mention it only if it exists; don't quote NACE numbers to an employer.
  7. Accepting: get it in writing and only accept when sure. Reneging burns bridges (and for students, schools commonly restrict career-services or job-board access for it; check the school's policy). Withdraw from other processes the same day the user accepts, unless the offer is still contingent (a background check, references, a drug test, right-to-work documents, a degree or license still to come, or anything else offer.md lists as open): then draft the withdrawals but hold the ones for final-stage and offer-stage processes until the contingencies clear (ask the user), so a rescinded offer doesn't leave them with nothing.

Closing the search (after the user accepts in writing)

If the offer is still contingent (see step 7), do steps 0 to 2 now, but in step 1 leave the held rows (final-stage and offer-stage processes) exactly as they are: no withdrawal draft, the same status and next step. Set the accepted job's next_action to Decide next step: confirm the contingencies cleared (worded so the board, /today and the startup note keep showing it) with the date the employer gave as next_action_date (7 days from today if none), and keep search_status: active. When the user says they cleared, run step 1 for the held rows, then steps 3 to 8.

Congratulate them first. After step 1, refresh the dashboard (the pages skill) and then tell them to open it (it celebrates once the job shows as accepted). 0. Save a backup first (the my-data skill, "Back up"), unless one was just made.

  1. Set the job to accepted. For every other row at applied, screening, interviewing or offer, draft a short, warm withdrawal note into outbox/ (one per company, to their contact or the recruiter, thanking the people they met). Those rows stay open (with next_action=Send withdrawal note, due today) until the user says the note was sent; then mark each withdrawn and clear its next step. Unsent withdrawals keep showing on the board and in /today, so none is forgotten. Set interested rows to skipped with no note (those companies never heard from them). Closed rows get no next step: clear next_action and next_action_date. Re-read the tracker before editing, and log the changes in history/activity.md.
  2. Draft thank-you or update notes to every contact with status talked or referred, and to each reference in profile/references.md. When sent, they set last_contact only: no touches, no next_followup (these people aren't waiting on a reply). 2a. Benefits and visa clocks (only if those lines in profile/preferences.md are filled): unemployment benefits usually must be told about a new job, its start date, and any hours and pay, through the agency's own site or phone line: remind the user to report it themselves. Whether they keep claiming, and for how long, is the agency's call (some programs, such as Universal Credit or US partial benefits, can continue at a reduced rate while working). On a job-dependent visa (for example F-1 OPT), the new employer and start date usually have to be reported (OPT: through the SEVP Portal or to the DSO, within the time the DSO gives); point them to their DSO or immigration lawyer. Don't clear the clock lines yet: certification reminders (including a scheduled certification reminder routine) and the visa count keep running until the job actually starts. Add a dated line to jobs/layoff-plan.md (create it in the laid-off skill's format if it's missing) so /today reminds them: - [ ] <start date>: New job starts. Report it to <agency / DSO>, then ask me to clear the benefits and visa clock lines. On or after the start date, with their OK: clear the benefits_ lines and visa_clock_start, and set visa_days_used to the official count with that day's date in visa_days_used_as_of (.claude/skills/evaluate-job/references/visa-checks.md, "Visa clock"), so a later gap starts from the right number. Then suggest deleting a certification reminder routine if they set one up (routines skill, "Pause, change or delete"). Keep the work-search log file.
  3. If other offers are pending, help the user decline them graciously with the worksheet's decline wording (never renege without talking it through).
  4. Write profile/career-log.md: offer terms, start date, manager, what worked in this search (funnel numbers from the tracker), and a "First 90 days" section where they can log wins. Tell them it's the start of their next resume.
  5. Ask before changing the existing search_status: active line under "Settings" in profile/preferences.md to search_status: closed YYYY-MM-DD (edit that one line; never add a second search_status: line; if the line is missing, add it there). Re-read the file and check exactly one search_status: line remains. That quiets the reminders, the board's band and the status line (pending drafts and unsent withdrawals still show).
  6. Offer to unpublish the dashboard and flashcards; keep the portfolio if they want.
  7. Finish with the extra wrap-up steps in my-data (references/wrap-up.md, "Accepted a job": contacts' follow-up dates, leftover Outbox drafts, interviews still on their calendar, deleting routines (the certification reminder stays until the start date while benefits_cert_day: is set), a second backup). If you came here from my-data, go back to it for those. Wiping the folder later is also my-data.
  8. Last, once (not while contingencies or withdrawal notes are still open, and not if the Celebration panel's Share what worked was already pressed): offer the share-lessons skill in one line: "If you'd like to help people who are where you were, I can draft a few anonymous notes about what worked, for you to post on the project's GitHub page if you want." A no is fine.