AI EngineeringZero to ProductionHome·About·Contact
Career & Interview Prep · Chapter CR5

Offers & negotiation

Turn an offer into the right decision: evaluate total comp, negotiate without burning bridges, compare offers with a runnable weighted comparator, and target the level that compounds.

⏱️ ~1.5 hours🧪 1 lab🎯 Beginner→Tech-lead

Learning objectives

  • Evaluate an offer beyond base salary.
  • Negotiate professionally without burning bridges.
  • Compare competing offers objectively.
  • Think about comp trajectory, not just today.
▶ Runnable companionThe tools here are saved under code/cr5-offer-negotiation/ — run them against your own resume, stories, and offers.

1 · An offer is more than salary essential

Total comp = base + bonus + equity + benefits, plus non-comp factors (growth, team, remote, the work). A higher base with no equity/growth can be worth less than it looks. Evaluate the whole package.

ComponentAsk about
Base salarythe number, review cycle
Bonustarget %, how it's determined
Equityamount, vesting, current value + realistic upside
Growthleveling, mentorship, path to senior/lead

2 · The negotiation mindset essential

Negotiating is expected and rarely rescinds an offer when done respectfully — most first offers have room. The leverage: competing offers, your market value, and staying positive. Never accept on the spot; ask for time to consider.

"I'm excited — can we talk about the compensation?"Anchor on enthusiasm, then make a specific, justified ask ("based on my experience and market data, I was hoping for X"). Silence after your ask is fine — let them respond. Being pleasant and specific beats being aggressive.

3 · Compare offers objectively intermediate

Emotions and a big base can mislead. Put offers in a table and weight what you value — here's a runnable comparator that scores total comp plus your personal factors.

Example code for learning — review, test, and adapt it before running against real or production systems. Commands can create, change, or delete resources. See the Terms & Disclaimer.
Python · a weighted offer comparator (runs)
offer_compare.pydef annual_comp(base, bonus_pct, equity_total, vest_years):
    return base + base * bonus_pct/100 + equity_total / vest_years

def score_offer(o, weights):
    comp = annual_comp(o["base"], o["bonus_pct"], o["equity"], o["vest_years"])
    # normalize comp to a 0-10ish scale (per $30k) + weighted soft factors
    comp_score = comp / 30_000
    soft = sum(o["factors"][k] * w for k, w in weights.items())
    return round(comp_score + soft, 1), round(comp)

weights = {"growth": 1.5, "team": 1.0, "remote": 0.8}   # what YOU value (factors 1-5)
a = {"base":150_000,"bonus_pct":15,"equity":200_000,"vest_years":4,
     "factors":{"growth":5,"team":4,"remote":5}}
b = {"base":175_000,"bonus_pct":10,"equity":40_000,"vest_years":4,
     "factors":{"growth":2,"team":3,"remote":2}}
print("Offer A:", score_offer(a, weights))
print("Offer B:", score_offer(b, weights))
Offer A: (18.6, 212500)
Offer B: (13.7, 202500)
▶ How this works

A higher salary isn't always the better offer. This compares two job offers fairly by adding up their real yearly money and scoring the soft things you care about (growth, team, remote) with weights you choose. It shows why a lower-base offer can still win.

  1. annual_comp(...) works out one offer's real yearly pay: base salary, plus the bonus (base * bonus_pct/100), plus one year's slice of equity (equity_total / vest_years — stock usually vests over several years, so you only count a portion each year).
  2. score_offer(o, weights) turns an offer into one score. comp_score = comp / 30_000 shrinks the big dollar figure onto a roughly 0–10 scale so it can be compared with the soft factors.
  3. soft = sum(o["factors"][k] * w for k, w in weights.items()) multiplies each soft factor's 1–5 rating by your weight for it and adds them up — so things you value more count more.
  4. weights is where you say what matters (here growth is weighted 1.5, team 1.0, remote 0.8). a and b are two offers described as dictionaries; each is scored and printed as (score, total-dollars).

What the output means: Offer A: (18.6, 212500) vs Offer B: (13.7, 202500) — Offer B has a higher base, but Offer A wins on total money and on the factors you weighted, so its score is clearly higher.

Try this: Plug in two real offers and set weights to what you actually value (bump remote up if it matters most). The point isn't the exact score — it's forcing an honest, apples-to-apples comparison instead of chasing the biggest base.

4 · Advanced — handle the tricky bits advanced

Exploding offers ("decide by tomorrow") — ask for reasonable time; a good employer grants it. Lowball — counter with market data. Multiple offers — be honest they exist without bluffing. Always get the final offer in writing before resigning anywhere.

5 · Professional — total trajectory professional

The best comp decision optimizes the next few years, not just year one: a role with faster growth, better mentorship, or a rising company can out-earn a higher starting base. Weigh learning and leveling velocity, especially early-career.

6 · Tech-lead — leveling & senior comp tech-lead

At senior/lead, comp is driven by level (equity and scope grow non-linearly), and you also negotiate title/scope, not just money. Understand the company's leveling rubric, target the right level (down-leveling is costly), and negotiate the role's scope — that's what compounds.

Level is the biggest leverThe jump from senior to staff can dwarf any base negotiation. Getting placed at the right level — backed by the tech-lead evidence this course helped you build — matters more than squeezing the base of a too-low level.

Exercise CR5.1 — Compare & plan

Context: Turning negotiation theory into a decision means modeling your actual offers and rehearsing the exact words — because the moment you're on the call is the wrong time to improvise.

Your task: Model two real (or realistic) offers with offer_compare using weights set to what you actually value, then write the exact sentences you'd use to ask for time and to counter, and note the level you'd target and why.

Requirements:

  • Score two offers with weights reflecting what you value, not a generic ranking
  • Read the comparison as apples-to-apples total money plus weighted soft factors, not the biggest base
  • Write a verbatim sentence to ask for time to consider rather than accepting on the spot
  • Write a verbatim counter anchored on enthusiasm and backed by market data
  • Name the level you'd target and justify it against the leveling rubric

💡 Hint: The exact score matters less than forcing an honest comparison and having the words ready before the call.

🪜 Practice ladder beginner → industry

Six graded exercises, easy to real-world. Try each before opening its solution.

Exercise 1 · Break an offer into its real componentsBeginner

Context: A recruiter drops a single number — "the offer is $150k" — and it feels like the whole story. It almost never is: that figure is usually base only, and you cannot negotiate or compare what you cannot see.

Your task: List the compensation components you must ask the recruiter to break out before you can evaluate a "$150k" offer, and give the one sentence you'd say to get them.

Requirements:

  • Treat the quoted number as base salary only, not total comp
  • Name equity (grant value, vesting schedule, cliff), target bonus, and any sign-on bonus
  • Include benefits (401k match, health premiums, PTO, remote/relocation)
  • For each, say what to ask about — e.g. is the bonus guaranteed or performance-dependent
  • End with a concrete ask that requests the full breakdown so you can evaluate the whole package

💡 Hint: Frame the whole answer around one idea: total compensation, not the headline number — enumerate the parts you can't see yet.

Show solution

“$150k” is almost always base only. The real question is total compensation:

  • Base salary — the $150k; the guaranteed part.
  • Equity — RSUs (public) or options (private): grant value, vesting schedule (often 4 yrs), cliff.
  • Bonus — target % of base; is it guaranteed, or performance/company dependent?
  • Sign-on bonus — one-time; often used to bridge a gap or offset lost equity.
  • Benefits — 401k match, health premiums, PTO, remote/relocation.

What to say: “Could you break the offer into base, equity, target bonus, and sign-on so I can evaluate the whole package?” You can’t negotiate or compare what you can’t see.

Exercise 2 · The mindset: anchor without a number firstIntermediate

Context: On the first call the recruiter asks, "What are your salary expectations?" — and whoever names a number first usually anchors the range. Answer badly here and you cap yourself before the process starts.

Your task: Write the response you'd give to deflect the early expectations question while staying collaborative, and state the principle behind it.

Requirements:

  • State the principle: the first number named tends to anchor the range, so let the offer come first
  • Deflect collaboratively — reaffirm mutual fit and ask what range is budgeted for the role
  • If pressed, give a researched range anchored near the top of market, not a single point
  • Back the range with a source (e.g. levels.fyi for the level + location), not a gut figure
  • Keep the tone joint-problem-solving, not combative — negotiation is not a fight

💡 Hint: The goal isn't to refuse to answer; it's to move the first concrete number onto their side of the table.

Show solution

Principle: whoever names a number first often anchors the range. Deflect early; let the offer come first, backed by your research.

Recruiter: “What are your salary expectations?”
You: “I want to make sure this is a strong mutual fit first. I’m confident we can land on a number that reflects the role’s level and market — what range is budgeted for this position?”

If pressed for a number, give a researched range anchored at the top of market, not a point: “Based on levels.fyi for this level and location, I’d expect total comp in the $X–$Y range.” Notice it’s collaborative, not combative — negotiation is joint problem-solving, not a fight.

Exercise 3 · Compare two offers objectivelyAdvanced

Context: Two offers, and the bigger base is not obviously the better deal. Offer A: $160k base, $40k/yr public RSUs, 10% bonus. Offer B: $140k base, $200k private options over 4yr, 15% bonus, $20k sign-on. Comparing headline totals will mislead you.

Your task: Build the year-1 total-comp comparison for both offers and name the hidden risk the headline numbers hide.

Requirements:

  • Lay the components side by side: base, year-1 equity, target bonus, and any sign-on
  • Compute a year-1 nominal total for each offer so they're on the same footing
  • Flag that B's equity is private options — illiquid, subject to strike price, dilution, and preferences
  • Note that A's RSUs are near-cash while B's options may be worth $0 until a liquidity event
  • Warn that the sign-on inflates B's year 1 but not year 2+; compare steady-state (yr 2–4) and risk-adjust
  • Conclude that on a risk-adjusted basis the higher-total offer may not be the stronger one

💡 Hint: Separate what's cash-like from what's a lottery ticket, then look past year 1 to the steady state.

Show solution
📋 Year-1 total-comp comparison
ComponentOffer A (public)Offer B (private)
Base$160k$140k
Equity (yr 1)$40k RSU (liquid, ~market value)$50k options (illiquid, uncertain value)
Bonus (target)$16k (10%)$21k (15%)
Sign-on (yr 1)$20k
Year-1 nominal~$216k~$231k

Hidden risk: B’s equity is private options — worth $0 until a liquidity event, subject to strike price, dilution, and preferences. A’s RSUs are near-cash. The sign-on inflates B’s year 1 but not year 2+. Compare steady-state (year 2–4) and risk-adjust the private equity, don’t just total the headline numbers. On a risk-adjusted basis A may well be the stronger offer.

Exercise 4 · Handle the tricky bits: exploding offers & ‘best & final’Expert

Context: The pressure tactics arrive: first an "exploding" offer that expires in 48 hours, then, later, "this is our best and final." How you answer decides whether you keep both the offer and the relationship.

Your task: Write how you'd respond to each — the exploding deadline and the "best and final" — without burning the relationship.

Requirements:

  • For the exploding offer, buy time calmly: express genuine enthusiasm and ask to extend the deadline to a specific date
  • Note that most exploding deadlines are negotiable and a firm-but-warm ask rarely backfires
  • Treat a company that won't grant a few days to decide as itself a signal
  • For "best and final," test it on a non-base lever — sign-on or equity refresh — since base may truly be capped
  • Give them a clear "here's what gets me to yes" so the ask is concrete and closeable

💡 Hint: "Best and final" on base is often not final on the levers they still control — move the negotiation there.

Show solution

(1) Exploding offer — buy time, calmly:

“I’m genuinely excited about this role and want to accept with full conviction, not under time pressure. I have another process wrapping up next week — could we extend the deadline to [date]? That lets me commit wholeheartedly.”

Most “exploding” deadlines are negotiable; a firm-but-warm ask rarely backfires, and a company that won’t give you days to decide is showing you something.

(2) “Best and final” — test it on a non-base lever:

“I understand base may be capped. If the base is fixed, could we look at the sign-on or the equity refresh to close the gap? I’m at yes if we can bridge $X.”

“Best and final” on base is often not final on sign-on or equity. Move the negotiation to a lever they still control, and always give them a clear “here’s what gets me to yes.”

Exercise 5 · Optimize for trajectory, not year 1Professional

Context: You're choosing between $10k more base at a stagnant company and a slightly lower offer on a team where you'd grow fast. The shiny number is real, but so is what compounds over the next few years.

Your task: Write the framework for weighing trajectory against a higher year-1 base, and say when the extra $10k should still win.

Requirements:

  • Separate what compounds (learning rate, seniority of peers, path to the next level, brand/network) from what doesn't
  • Name the $10k as a real but non-compounding one-time delta that doesn't raise your ceiling
  • Give the rule of thumb: early-career, weight trajectory heavily — a faster promotion can dwarf $10k
  • State when to take the $10k: near-term financial pressure, a vague growth story, or genuinely similar learning
  • Insist on naming the tradeoff honestly rather than letting a narrative override a real constraint

💡 Hint: Ask which choice changes where you'll be in three years, then let a real constraint — not a story — break the tie.

Show solution

Framework — what compounds vs what doesn’t:

  • Compounds: the rate you learn, the seniority of people you work with, whether the role puts you on a path to the next level, and the brand/network you build. These set your comp 3–5 years out.
  • Doesn’t: a one-time $10k base delta — real, but it doesn’t grow the ceiling.

Rule of thumb: early career, weight trajectory heavily — a role that gets you promoted a year sooner is worth far more than $10k. Take the $10k when: you have near-term financial pressure (debt, family), the “growth” team’s growth story is vague, or the two roles are actually similar in learning. Name the tradeoff out loud to yourself; don’t let a shiny narrative override a real constraint.

Exercise 6 · Negotiate level, because level sets the rangeIndustry scenario

Context: At senior/staff, the biggest lever isn't the number inside the band — it's the band itself. Each level carries its own comp range, so being placed one step up shifts base, equity, bonus, and every future refresh.

Your task: Write the case you'd make to be leveled up one step, and explain why leveling beats haggling on base.

Requirements:

  • Explain that negotiating inside a band is small; moving up a level shifts the entire band and every future refresh
  • State that leveling compounds while a one-time base bump does not
  • Build the case with evidence tied to their leveling rubric — scope, autonomy, influence — not years of experience
  • Cite concrete scope: systems owned end-to-end, cross-team efforts led without authority, engineers mentored
  • Make the case before the offer where possible
  • If they can't move the level now, get the criteria and a written re-review date as a concrete lever

💡 Hint: Anchor every claim to a rubric line the company already uses to define the level, not to tenure.

Show solution

Why level > base: each level has a comp band. Negotiating $10k inside E4 is small; being placed at E5 shifts your entire band — base, equity, bonus target, and every future refresh — up a tier. Leveling compounds; a one-time base bump doesn’t.

The case to make (with evidence, before the offer if possible):

“Based on the scope we discussed, this maps to your Senior/E5 rubric more than E4: I’ve owned [system X] end to end, led [cross-team effort Y] without direct authority, and mentored [N] engineers. In the interviews I designed for failure modes and org impact, not just correctness. Can we align on E5 given that scope?”

Tie your evidence to their leveling rubric (scope, autonomy, influence), not years of experience. If they can’t move the level now, get the criteria and a written re-review date in writing — that’s a concrete lever, not a vague promise.

✓ Checkpoint — you can move on when you can…

  • Evaluate total comp, not just base.
  • Negotiate specifically and respectfully.
  • Compare offers with weighted, objective scoring.
  • Optimize trajectory and target the right level.

Knowledge check check yourself

✓ Knowledge check

Why can an offer with a higher base salary be worth less than one with a lower base?

Show answer
Because total comp is base + bonus + equity + benefits plus non-comp factors (growth, team, remote); a higher base with little equity or growth can total less than a lower-base offer that vests meaningful equity and offers faster leveling.
✓ Knowledge check

What is the recommended negotiation posture, and what should you never do on the spot?

Show answer
Anchor on enthusiasm, then make a specific, justified ask backed by market data and stay pleasant — negotiating respectfully rarely rescinds an offer; never accept on the spot, always ask for time to consider.
© 2026 studybydoing.in · AI Engineering: Zero to Production · All rights reserved. · About · Privacy Policy · Terms · Contact
Educational content, provided as-is and without warranty. Code samples are examples — review, test, and adapt them before using in production. See the Terms of Use & Disclaimer. Use at your own risk.
© studybydoing.in