Offer Comparison Skill
Offers are quoted as feelings — "the startup has more upside" — but they resolve to numbers with dates on them. This skill computes the curves: what each offer pays in each of the next four years, where the lines cross, and which lever in the weaker offer would actually move it.
What This Skill Produces
- The comp table — per-year and cumulative totals per offer, from the script
- The crossover analysis — which offer leads when, and what assumption that ranking is hostage to
- The risk translation — private equity restated honestly rather than at face value
- Negotiation levers — ranked by dollar impact per unit of asking-awkwardness
Required Inputs
Ask for these if not provided:
- Per offer: base, bonus %, equity grant value, vest years, cliff months, vest frequency, 401(k) match (% and cap), any promised refreshers
- The user's horizon — expecting to stay 2 years or 4 changes the answer, because cliffs do
- Equity risk view — public RSUs count at face; for private equity, agree a discount with the user (e.g. 50–75% haircut pre-Series B) and pass the discounted number to the script labeled as such
Programmatic Helper
python3 scripts/offer_comparison.py offers.json
cat offers.json | python3 scripts/offer_comparison.py - --json
Input shape in the script docstring. The script computes vesting month-by-month (a 12-month cliff releases the accrued year), bonuses and match annually, and reports the cumulative leader and crossover year. It values equity at exactly the number you give it — the risk adjustment is your input, visible, never a hidden assumption.
Framework: The Judgment Around the Math
- The cliff vs the horizon — an 18-month expected stay makes year-4 equity fiction; compare at the user's actual horizon, not the grant's
- A risky dollar ≠ a salary dollar — never compare private paper to cash 1:1; show the comparison at 2–3 discount levels if the user resists picking one
- Refreshers are policy, not promise — model them only if written down; otherwise mention them as upside outside the table
- Levers, ranked: base (compounds into bonus and match) → equity grant → signing bonus (one-time, easiest yes) → cliff/start-date adjustments
Output Format
Offer Comparison: [A] vs [B]
The Curves
[Script output: per-year, cumulative, leader, crossover]
What the Ranking Is Hostage To
[The 1–2 assumptions that flip the answer — usually the private-equity discount and the stay-horizon — each shown with the flipped result.]
Negotiation Levers
| Lever |
Applied to |
Moves 4-yr total by |
Ask difficulty |
Educational model, not financial advice — verify with a licensed professional before acting on it.
Quality Checks
Anti-Patterns
1---2name: offer-comparison3description: Compare two or more job offers as total-comp curves over four years — vesting cliffs, bonuses, 401(k) match, and the crossover year computed, not vibed. Use when asked to compare job offers, which offer pays more over time, model my equity vesting, or is the startup offer actually worth it. Produces a year-by-year and cumulative comp table per offer, the crossover analysis, and negotiation levers ranked by dollar impact.4---5
6# Offer Comparison Skill
7
8Offers are quoted as feelings — "the startup has more upside" — but they resolve to numbers with dates on them. This skill computes the curves: what each offer pays in each of the next four years, where the lines cross, and which lever in the weaker offer would actually move it.
9
10## What This Skill Produces
11
12- **The comp table** — per-year and cumulative totals per offer, from the script
13- **The crossover analysis** — which offer leads when, and what assumption that ranking is hostage to
14- **The risk translation** — private equity restated honestly rather than at face value
15- **Negotiation levers** — ranked by dollar impact per unit of asking-awkwardness
16
17## Required Inputs
18
19Ask for these if not provided:
20- **Per offer:** base, bonus %, equity grant value, vest years, cliff months, vest frequency, 401(k) match (% and cap), any promised refreshers
21- **The user's horizon** — expecting to stay 2 years or 4 changes the answer, because cliffs do
22- **Equity risk view** — public RSUs count at face; for private equity, agree a discount with the user (e.g. 50–75% haircut pre-Series B) and pass the discounted number to the script *labeled as such*
23
24## Programmatic Helper
25
26```bash
27python3 scripts/offer_comparison.py offers.json
28cat offers.json | python3 scripts/offer_comparison.py - --json
29```
30
31Input shape in the script docstring. The script computes vesting month-by-month (a 12-month cliff releases the accrued year), bonuses and match annually, and reports the cumulative leader and crossover year. **It values equity at exactly the number you give it** — the risk adjustment is your input, visible, never a hidden assumption.
32
33## Framework: The Judgment Around the Math
34
35- **The cliff vs the horizon** — an 18-month expected stay makes year-4 equity fiction; compare at the user's actual horizon, not the grant's
36- **A risky dollar ≠ a salary dollar** — never compare private paper to cash 1:1; show the comparison at 2–3 discount levels if the user resists picking one
37- **Refreshers are policy, not promise** — model them only if written down; otherwise mention them as upside outside the table
38- **Levers, ranked:** base (compounds into bonus and match) → equity grant → signing bonus (one-time, easiest yes) → cliff/start-date adjustments
39
40## Output Format
41
42---
43
44# Offer Comparison: [A] vs [B]
45
46## The Curves
47[Script output: per-year, cumulative, leader, crossover]
48
49## What the Ranking Is Hostage To
50[The 1–2 assumptions that flip the answer — usually the private-equity discount and the stay-horizon — each shown with the flipped result.]
51
52## Negotiation Levers
53| Lever | Applied to | Moves 4-yr total by | Ask difficulty |
54|---|---|---|---|
55
56*Educational model, not financial advice — verify with a licensed professional before acting on it.*
57
58---
59
60## Quality Checks
61
62- [ ] Equity discount for private companies is explicit and the user agreed to it
63- [ ] The comparison is shown at the user's stated horizon, not only at 4 years
64- [ ] The hostage-assumptions section shows the flipped ranking, not just names the risk
65- [ ] Levers carry dollar impacts computed from the actual offers
66- [ ] The disclaimer line appears in the artifact
67
68## Anti-Patterns
69
70- [ ] Do not compare a risky equity dollar to a salary dollar 1:1 — the discount is the analysis
71- [ ] Do not hide the vesting cliff inside annual averages — year 1 with a cliff is its own story
72- [ ] Do not model unwritten refreshers as income
73- [ ] Do not declare a winner without naming what assumption the win depends on
74- [ ] Do not present the model's output without its assumptions attached