Offer Negotiation
Turn a verbal or written offer into a clear-eyed decision: what it's actually worth against market, how it stacks against alternatives, what to counter, and where the contract can bite. The default posture is to negotiate, politely and with data, and never to accept on the spot.
When to use
- "I got an offer" / "they made an offer" / "help me think through this"
- "Compare these two (or three) offers"
- "How do I counter?" / "Is this comp any good?" / "What should I ask for?"
- Reviewing an offer letter or contract for landmines before signing
Inputs
- Reads:
workspace/profile/(target comp floor, location, priorities, deal-breakers),workspace/pipeline/tracker.csv(the row for this role, whose status should move toofferornegotiating), the application recordworkspace/pipeline/applications/<id>-<company>-<role>.md(JD, comp_range, contacts),workspace/stories/(evidence of value delivered, to justify the ask) - Needs from user: the actual offer terms: base, bonus, equity, sign-on, start date, benefits, PTO, remote policy, level/title. Whatever's missing, ask for in ONE batch before analyzing. Also: their real priorities (what they'd trade comp for), any competing offer, and current-comp / walk-away number if they'll share it.
Workflow
1. Capture the full offer: every component, not just base
Never analyze "the number." Pull apart:
- Base salary. The only fully guaranteed cash.
- Bonus. The target %, and whether it is discretionary, performance-gated, or guaranteed. Ask what actual payout has been the last 2 years (targets are marketing, payouts are truth).
- Equity. This is where offers diverge most and mislead most:
- Type: ISO / NSO / RSU. Options ≠ RSUs ≠ "shares."
- Amount: # of shares or $ value, and what % of fully-diluted it represents (a dollar figure means nothing without the denominator).
- Vesting schedule: standard is 4 years / 1-year cliff. Flag anything longer, back-loaded, or with no cliff.
- Strike price + current 409A or preferred valuation (for options). The spread is the only "value" that exists today. If strike is close to 409A, the equity is a lottery ticket, not comp.
- Private vs. public: private equity is illiquid and may stay that way for years. Discount it accordingly.
- Sign-on bonus. A one-time payment. Check clawback if they leave within N months.
- Benefits. Health premium coverage %, 401k match, HSA, parental leave. A rich match or fully covered premium is real money. Quantify it.
- PTO. Unlimited (often means less used) against accrued days, plus sabbatical.
- Work model. Remote / hybrid / on-site, required days, relocation, and whether remote is contractual or "for now."
- Title + level. Anchors future comp and internal mobility.
Restate the offer back to the user as a single normalized picture: total first-year cash (base + realistic bonus + sign-on) and annualized target comp (add equity value ÷ vesting years, clearly labeled as nominal for private equity).
2. Benchmark against market
Use web search to bound the range for this role + level + location (or remote band):
- levels.fyi (best for tech comp, especially equity), Glassdoor, Payscale, Built In, and role-specific salary reports.
- Search patterns:
<title> <level> salary <metro> levels.fyi,<title> total compensation <industry> <year>,<company> salary <title> glassdoor. - Triangulate at least two sources and report a low / median / high band, not a point estimate.
- Compare the offer to the band and state plainly: below / at / above market, and on which components. Equity below market but base above is a different negotiation than the reverse.
- No public data? Say so and fall back to the JD's posted
comp_rangeand the user's own network. Never invent a benchmark.
3. Build the weighted decision matrix
This is the core artifact. It works for one offer (against staying, or against walking) or for several head to head.
- Pick dimensions that matter to THIS user (from profile + what they tell you). A general set, trimmed to what's relevant: comp (total), role scope / ownership, growth & learning, manager quality, company trajectory & risk, culture, work-life balance, location / commute / remote, mission fit, brand / résumé value.
- User assigns weights. Distribute 100 points across the chosen dimensions (or 1–5 importance each). Their weights, not yours. If they won't, propose a default and have them adjust.
- Score each offer 1–10 per dimension using the offer facts + research. Show your reasoning per cell, not just the number.
- Weighted total = Σ(weight × score). Highest total wins. Show the full table so the user can challenge any cell.
- Sensitivity check: call out which 1–2 dimensions are actually driving the result, and whether a plausible re-score would flip it. A close result means the "loser" is worth negotiating up, not discarding.
Do not let the matrix override a hard deal-breaker (a disqualifier from profile). Flag those separately. They veto regardless of total.
4. Separate reversible from irreversible (match effort to stakes)
- Two-way doors (reversible, low cost to undo): most negotiable terms, including start date, PTO specifics, equipment, a title tweak, WFH days, and even base to a degree. Decide fast, ask for them, and don't agonize.
- One-way doors (irreversible or expensive to reverse): taking the job at all, leaving a current role, relocation, a non-compete you signed, equity structure once accepted, walking away from a competing offer. Slow down, get everything in writing, and pressure-test before committing. Tell the user explicitly which parts of their decision are which. Most people over-agonize the reversible and under-scrutinize the irreversible.
5. Generate the counter-offer script
Default recommendation: counter. Most employers expect it and leave 5–15% headroom. A polite, well-justified ask rarely rescinds an offer. Build the script with:
- Gratitude + genuine enthusiasm. Anchor that they want the role (removes the "are they even interested" risk).
- Anchor high, but defensibly. Open above target, justified by the market band from step 2 and the specific value the user brings (pull concrete wins from
workspace/stories/). Anchor on the strongest-justified component. - The ask, specific and singular-ish. Name the number and component ("I'm targeting a base of $X, which is the market median for this level per levels.fyi"). Prioritize: lead with the highest-value, most-movable lever. Bundle at most 2–3 asks so it doesn't read as a shakedown.
- A graceful fallback. What they'll accept if base won't move (sign-on, equity, earlier review, extra PTO, title). Never issue an ultimatum unless they're genuinely willing to walk.
- Keep it collaborative. "How close can we get to X?" beats "I need X." Give the recruiter a problem to solve with you, not against you.
Produce it in two formats: a short email version and talking points for a live call. Both are drafts for the user to send. This skill never sends.
6. Contract red-flags check
Scan the written offer / contract (or list what to demand in writing if it's still verbal):
- Non-compete. Scope, duration, and geography. Broad or long ones can block the next job. Enforceability varies by state (and some ban them). Flag to review with a lawyer if aggressive.
- IP-assignment overreach. Assigning inventions made on personal time or unrelated to the job. Look for a state-law carve-out (e.g. CA Labor Code 2870-style). Its absence is a flag.
- Clawbacks. Sign-on or relocation repayment if they leave within N months. bonus clawbacks.
- At-will vs. anything unusual. Most US roles are at-will, but watch for mandatory arbitration, class-action waivers, or one-sided termination terms.
- Equity fine print. Post-termination exercise window (90 days is common and brutal for options), single/double-trigger acceleration on acquisition, repurchase rights, ISO→NSO conversion risk.
- Vesting cliffs / back-loading. A one-year cliff means $0 equity if they leave in month 11. Back-loaded vesting (less early, more late) is a retention leash.
- On-call / comp surprises. Commission plans that can be changed unilaterally, on-call expectations, "other duties," or PTO that doesn't pay out. Mark each finding as 🟢 standard / 🟡 negotiate / 🔴 get legal review, with the specific clause quoted.
7. Recommend and log
Give a clear recommendation (accept / counter-then-accept / decline / need more info), the reasoning, and the exact next step. Update the tracker row (status → negotiating or offer), next_action + next_action_date. Write the full analysis to the output file.
Output
- Writes to:
workspace/output/<company>-offer-analysis.md - Format: (1) normalized offer breakdown with total-cash and annualized-comp figures, (2) market benchmark band with sources, (3) the weighted decision matrix table, (4) reversible/irreversible split, (5) the counter-offer email + call talking points, (6) the red-flags checklist with severity, (7) recommendation + next step. Tracker row updated.
Rules & quality bar
- Never accept, decline, or send on the spot. Every message is a draft the user reviews and sends. No auto-send, ever.
- Almost always negotiate. Politely, with data. The rare exceptions: an explicit take-it-or-leave-it with a firm published band, or the user's own stated wish not to. Even then, negotiate non-cash terms.
- Get everything in writing before accepting. A verbal number is not an offer. Restate it and request the letter.
- No fabrication. Don't invent benchmarks, payout histories, or equity values. If data is unknown, say "unknown, ask the recruiter" and list it as a question. Nominal private-equity value is always labeled nominal.
- Weights belong to the user. Never quietly encode your own preference into the matrix. Surface the weights and let them tune.
- Not legal advice. Flag 🔴 items for a real lawyer, especially non-competes, equity structure, and IP terms. Do not opine on enforceability as if certain.
- Match effort to stakes. Fast on two-way doors, methodical on one-way doors.
Related skills
- Upstream:
application-tracker(moves the row tooffer/negotiating),story-bank(evidence for the value justification),company-research(trajectory/risk input to the matrix),interview-followup(the offer often lands here). - Peer:
writing-quality. Run the counter-offer email through it before the user sends, so the ask reads human, not templated. - Orchestrated by:
search-and-scale-osroutes here the moment an offer is in hand. - See also:
docs/negotiation-guide.md, the companion deep-dive (benchmarking sources, equity math, counter-offer scripts, contract clauses) behind this skill's workflow.