---
description: Salary Negotiation — triggered at offer time. Pre-built scripts for common scenarios (geo-discount pushback, RSU acceleration, competing-offer leverage, signing-bonus ask, base-vs-equity tradeoffs). Tier 4 main session. Voice-strict.
---

# personal-salary-negotiation

Negotiation drafting is irreversible-broadcast-adjacent and high-stakes future-employer-content. **Tier 4 main, no exceptions, no delegation.**

## Trigger phrases

- "Help me negotiate this offer"
- "[Company] offered $X — how do I push back?"
- "Salary negotiation for [role]"
- `/negotiate`

## Inputs

- Offer details (Josh provides — base, bonus structure, equity, sign-on, benefits, location adjustments)
- `~/.career/applications/{slug}/` — full application context
- `~/.career/companies/{slug}/brief.md` — company comp signal
- `~/.career/voice-profile.md`
- Levels.fyi data for the role + level + company (Josh provides URL or paste)
- Competing offer details (if any, Josh provides)
- Josh's floor / target / dream numbers (Josh confirms before drafting)

## Process

### Stage 1 — Comp baseline analysis

The AI synthesizes:

- Where the offer falls vs Levels.fyi data (percentile)
- Where the offer falls vs Glassdoor data
- What components are negotiable (base, sign-on, RSU, vesting schedule, start date, title, remote-flex)
- Which lever has the most realistic upside

Output:

```markdown
# Offer Analysis — [Company] [Role]

## The offer
- Base: $X
- Sign-on: $Y
- RSU: $Z over [vest schedule]
- Bonus target: [%]
- Total Y1 (cash): $...
- Total Y1 (incl RSU): $...

## Where it sits

- vs Levels.fyi (this role, this company, this level): [percentile]
- vs Glassdoor: [percentile]
- vs Josh's floor: [above/at/below]
- vs Josh's target: [above/at/below]

## Recommended ask

**Strategy:** [name the play — e.g., "Equity-bias ask given RSU is below band"]

**Realistic upside:** [$ range]
- Base: [+$N]
- Sign-on: [+$N]
- RSU: [+$N]
- (Combined: +$X — Y%)

## What NOT to ask for

- [Things that won't move at this company / this stage]
```

### Stage 2 — Choose the play

Based on the analysis, pick from the play library:

**Play 1 — "Below band" (offer is below Levels.fyi median)**
The strongest play. Direct: "Based on Levels.fyi, the median for this role at this level at [Company] is $X. The current offer is below that. Can we revisit?"

**Play 2 — "Competing offer leverage"**
If Josh has another offer or active process: "I want to be transparent — I'm in late stages with [competitor] who's signaling [$ band]. I'd prefer [Company] but the gap is meaningful. Is there room?"

**Play 3 — "Component swap"**
Offer total looks OK but mix is wrong (too RSU-heavy when Josh wants cash floor): "Total comp works for me but the RSU exposure is more than I'd like at this stage. Could we shift $X from RSU to base?"

**Play 4 — "Sign-on as bridge"**
When base is anchored but sign-on can flex: "The base is in line with the band. To bridge the equity-vest year-1 gap, would a $X sign-on be possible?"

**Play 5 — "Title/level adjustment"**
When Josh's experience genuinely warrants the next level up: "Given [experience], I'd like to discuss whether L[X+1] is more aligned. The compensation difference flows from that."

**Play 6 — "Remote-flex / start-date / PTO"**
Non-cash levers when cash is locked.

**Play 7 — "Geo-discount pushback"**
If the offer is geo-discounted and Josh disagrees with the discount premise: "I noticed the offer is geo-adjusted. My value to the team is independent of physical location for this role. Can we discuss a non-geo-adjusted band?"

### Stage 3 — Draft the message

Hard rules:

1. **Tone: collaborative, not adversarial.** "Excited about the role / let's see if we can close the gap" — NOT "your offer is unacceptable."
2. **One ask per message.** Multiple asks dilute. Pick the strongest.
3. **Anchor with data.** Levels.fyi link or specific number. Don't say "the market rate is higher" — say "Levels.fyi shows the median at $X."
4. **Easy out for them.** Phrase that lets them say "yes" or "no" without losing face. NOT "I need" — YES "Could we explore."
5. **Voice-strict.** Em-dash ban. AI-cliché ban. Personal-pronoun ratio.
6. **Length:** 100-150 words. Concise = confident.

Example structure:

```
Hi [recruiter/hiring manager first name],

Thanks for the offer — really excited about [specific thing about role/team].

I want to discuss the [component]. Based on [data anchor], the median for this role at this level is around [$X], and the current offer of [$Y] sits below that. Could we revisit?

If we can land at [$X], I'm ready to sign.

[Sign-off]
```

(Note: that example uses an em-dash for illustrative purposes here in this skill file; the actual draft would not.)

### Stage 4 — Voice smell test

Mandatory before output. Same checks as `personal-cover-letter`.

### Stage 5 — Output

```markdown
**Negotiation message ready** — [Company]

**Play used:** [name]
**Ask:** $[N] (current offer $[M], delta +$[D])
**Confidence in landing:** [low / medium / high] — [rationale]

**Voice Smell Test:** all green

---
[message]
---

**Pre-send checks:**
- [ ] Have you confirmed your floor / target / dream with yourself?
- [ ] If they say no on this, what's your response? (Drafted at [path])
- [ ] Have you given them a realistic close-window? ("ready to sign by [date]")

**If they counter-offer with [partial movement]:** here's the response draft → [path]

**If they hold firm:** here's the "decide" framework → [path]

**Open questions:**
- [Anything Josh should clarify with the company before sending — e.g., "what's the standard vesting cliff" if not in offer letter]
```

### Stage 6 — Persist

Save the message + analysis to `~/.career/applications/{slug}/06-negotiation-{date}.md`.

Update tracker:

```
status: offer → negotiating
notes: appended with the play used + the ask
```

## Pre-publish gate (mandatory, two-pass)

Salary negotiation messages are the highest-stakes future-employer-content the kit drafts. A wrong tone, an under-market anchor, or a poorly-worded counter can cost tens of thousands of dollars over the role's tenure.

Before showing the draft to Josh, the gate runs in TWO passes:

**Pass 1 -- evaluator:**

Invoke the `evaluator` sub-agent via the Task tool:

- **subagent_type:** `evaluator`
- **prompt:** include the negotiation message, the offer details, the market comp data, the role context, and Josh's stated bottom line. Ask for the standard 4-axis rubric AND additionally:
  - Does the message anchor at or above market median (not below)?
  - Does the message preserve relationship while asserting value (no defensive language, no apologetic framing)?
  - Is every claim about Josh's market value backed by data in the prompt?
  - Is the ask specific (number) or vague (would degrade the negotiation)?

**Pass 2 -- adversary:**

Then invoke the `adversary` sub-agent (also via Task tool) with the same artefact:

- **subagent_type:** `adversary`
- **prompt:** include the message and ask: "What's the worst-case interpretation of this message? What could the recruiter reasonably push back on? What signals weakness?"

Handle the responses:

| Combined result | Action |
| --- | --- |
| Both pass | Proceed to delivery. |
| Either fails | Revise once incorporating both feedback streams. Re-invoke both. If still failing, surface to Josh with both critiques. |
| Adversary returns BLOCK | Hard stop. Surface to Josh; do not deliver the draft for sending. |

The two-pass gate is specifically scoped to salary negotiation because the message has irreversible negotiation-position consequences. For other career content the single evaluator pass is sufficient.

## Multi-round handling

Negotiation is rarely one-shot. The skill handles follow-ups:

- "They came back with [partial movement]" → draft the response
- "They said no movement on base, but offered $X more sign-on" → analyze + counter or accept
- "I want to push one more time" → draft the second-round message (different rules — softer, less data-heavy, more "let's close this")

## Discipline reminders

- The AI does NOT decide whether Josh should accept. The AI surfaces tradeoffs.
- The AI does NOT pressure Josh to negotiate harder. Some offers are fine as-is; saying so is honest.
- The AI does NOT include personal info Josh hasn't approved (current salary unless Josh said it's OK to share).
- The AI does NOT estimate the company's response — that's speculation.

## Privacy rule

Salary numbers, offer details, and negotiation drafts are HIGH sensitivity. NEVER include these in any sub-agent prompt. NEVER commit to any public repo. The `.career/` folder is gitignored by default.
