Salary Negotiation Scripts for Engineers With Competing Offers
Knowing the salary band for your level before negotiating puts you on equal footing with recruiters.
Summary
Knowing the salary band for your level before negotiating puts you on equal footing with recruiters.
Most companies build a cushion into the first number they give you. They expect pushback, and they staff and budget for it. An engineer who signs the moment the offer letter lands is leaving money on the table that the company had already set aside to pay.
That cushion exists because recruiters need room to close a deal. It has nothing to do with rewarding persistence. It is simply how offers get constructed inside a comp approval process: propose low enough to leave room to move, high enough to not insult the candidate.
Despite that, most software engineers never negotiate their first offer. The reason usually isn't greed-aversion or a lack of nerve. Most engineers simply don't know what to say in the moment, so they say nothing and sign.
That silence costs more than it looks like at the time. A gap set at the initial offer doesn't stay contained to year one. Annual raises get calculated as a percentage of base, bonus targets are often set as a percentage of base, equity refreshes get benchmarked against current total comp, and 401(k) matching is pegged to base salary too. A low starting number compounds through every one of those mechanisms for as long as the engineer stays at the company.
The fear that stops people from pushing back, that a counter will cause the offer to get pulled, almost never plays out that way in practice. A company has already spent weeks of recruiter time, hours of engineering interviewer time, and real internal political capital getting a candidate to the offer stage. Walking away from that investment because a candidate asked a reasonable question is not how the economics of hiring work. Negotiation is the last stage of the interview process, not a conflict layered on top of it. The recruiter sitting across from you expects this conversation. They've had it dozens of times before.
Total compensation components
Negotiating on salary alone is the single most common mistake engineers make, because salary is only one piece of what's on the table. At well-funded tech companies and AI startups, total compensation breaks into three or four distinct components, and the biggest dollars are frequently sitting somewhere other than base.
Those components are base salary, the equity grant (RSUs or options), a signing bonus, and an annual performance bonus. Each one has its own negotiation surface, its own decision-maker, and its own realistic range of movement. Treating them as one lump sum called "the offer" means missing where the actual flexibility lives.
Rank them by how much a recruiter can actually move, and the order runs from signing bonus down to base. Signing bonus is where a recruiter has the most day-to-day discretion. A standard senior-level signing bonus runs $20K to $60K, and that number can often get pushed toward the top of the range with a credible competing offer, especially when the candidate is walking away from unvested equity at their current company.
Equity sits next. At pre-IPO companies, the grant has the widest range of discretion of any component, and a credible competing offer can move it meaningfully. Public companies band equity more tightly, but signing-year RSU additions are still common at senior levels. Whatever the structure, ask for the grant broken into three numbers: dollar value, share count, and the price those shares are valued at. Ask about the refresh cadence too. A strong year-one grant that never refreshes is a different offer than a modest grant with a reliable annual top-up, and comparing two offers without that detail is comparing incomplete numbers.
Base salary is the most visible number in the offer and the hardest one to move. Public companies run hard bands set by level. Private companies run softer bands, but bands all the same. A modest bump above the initial number is typical at senior level. Moving it further usually requires a competing offer at a meaningfully higher base. Trading equity for base dollar-for-dollar rarely works out in the engineer's favor unless the company is late-stage and already public, where the stock has a known, stable value.
Annual performance bonus is usually fixed by level and barely moves regardless of how the conversation goes. Spending negotiation effort there is wasted effort.
When base genuinely won't move no matter how the conversation is framed, change the question. Ask whether the level itself can be re-evaluated. The gap between, say, an L5 and an L6 title can represent a substantial swing in total comp, larger than anything available by negotiating within a single level.
A few levers simply don't produce real dollar movement at senior level and aren't worth spending negotiation capital on: extra PTO, a title change that isn't tied to an actual level change, and vesting acceleration, which matters a great deal for executives but is rarely granted to individual contributors.
The comp benchmarks that anchor every ask
Knowing the real band for a given level and role before the conversation starts is the single most important piece of preparation an engineer can do. The recruiter already knows the band. An engineer who doesn't is negotiating blind against someone negotiating with full information.
Specialization premiums are negotiable if the role actually qualifies. GenAI and LLM engineers are at the top of the general engineering range, commonly $200K to $400K or more in total comp. Forward Deployed Engineers run $300K to $600K or more. LLM specialists run $220K to $350K. All three command a real premium over generic senior IC comp, so a candidate whose role fits one of these categories should anchor to the role premium, not the generic senior-engineer band.
A look at average AI engineer salary across more than 3,696 real job listings shows the top of the market concentrated in a handful of companies: Motion at $528K, Runway ML at $425K, Anthropic at $398K, MatX at $395K, and Thinking Machines at $394K. These numbers are useful anchors whether an engineer is negotiating directly against one of these companies or simply using them as a reference point alongside a frontier-lab offer.
For big-tech IC roles in major coastal tech hubs, 2026 estimates built from publicly self-reported data on platforms like Levels.fyi and Blind put L5/Senior total comp at $345K to $500K, and L6/Staff at $500K to $750K. Within those bands, Meta and Netflix tend to sit at the top. Google runs in the middle. Microsoft trends toward the lower end. Apple runs slightly lower than Meta and Google on both base and equity, but holds up competitively against Microsoft on equity specifically. Two L5 candidates at two different companies, or even the same company, can land far apart within that range depending on their specialization and how well they negotiate.
Geography changes the math substantially. Second-tier hubs like Austin and Boston run meaningfully lower than SF or NYC. One particular hub, nominally below the top coastal market on paper, trades closely with or above the other major coastal hub in total comp once its state's lack of income tax is factored in. Non-coastal US markets run lower still. Anchoring to an SF number while interviewing for a non-coastal role is a mistake that costs credibility with the recruiter, not just money.
Three tools make it possible to reconstruct a band independently before any conversation starts: Levels.fyi, which breaks data down by role and level and lets a candidate check percentile data against a specific leveling framework; Blind, for real-time sentiment from people currently inside these companies; and Glassdoor. Using all three tools means walking into the first call already knowing the band, so the recruiter's opening number can be evaluated the second it's spoken.
The five moments where most negotiations are won or lost
Negotiation is a sequence of five distinct moments, each carrying its own decision and its own characteristic mistake. Engineers who leave money on the table usually lose it at one specific point in this sequence, not from being generally bad at negotiating.
The first moment is the recruiter screen, when they ask what salary you expect before any interviews happen. This question is an anchor attempt. Giving a specific number this early, or disclosing current salary, caps the outcome before the interview loop even begins. If pressed to name a number first, the better move is stating a range: a floor set slightly above the published band midpoint, and a ceiling meaningfully higher. A range signals flexibility without anchoring the conversation low.
The second moment is when the offer actually arrives. Accepting on that call is the most expensive mistake an engineer can make in the entire process. The right move is to express genuine enthusiasm for the role, then ask for a day or two to review the full package in writing, broken out by component. That window gets used for real work: locating the offer within the known band using Levels.fyi or an equivalent, identifying the one or two components with the most room to move, and settling on a specific counter target before getting back on the phone.
The third moment is the counter itself. Vague counters don't work. Specific, component-level asks do. Naming a total comp target and then breaking it down, base to this number, equity to that number, gives the recruiter something concrete to carry into their own approval chain. Anchoring to external market data gets results. Anchoring to personal need doesn't, because a recruiter can act on "market data for this level and location" in a way they can't act on "I need more to cover my mortgage."
The fourth moment is the pushback. When a recruiter says "that's the top of our band" or "we can't move on base," it's a redirect signal pointing toward a different component. If base is genuinely stuck, the next move is asking directly whether other components have flexibility, equity or signing bonus specifically. If the whole package seems locked, it's fair to ask whether the leveling decision itself is final, since a level change can be worth more than any single component adjustment. And if a recruiter says "this is our final offer," asking to walk through the full equity structure and bonus calculation before accepting or declining is legitimate due diligence, not stalling.
The fifth moment is the close. Leaving a recruiter uncertain about whether an engineer will actually sign costs both sides time and risks the whole process dragging past the point where either side still has patience for it. Once terms are agreed, closing with a direct commitment, something like "if we can get to this number with these terms, the candidate is prepared to sign today," removes the ambiguity and gives the recruiter a clear, fast path to finalize. Any revised offer needs to be in writing before formal acceptance.
Word-for-word scripts for the competing-offer conversation
A competing offer is the single most powerful asset an engineer can bring into a negotiation, but all of its power depends on how it's introduced. A vague reference to "another offer" moves almost nothing. A specific, transparent breakdown of the competing package moves quite a lot.
Here is the full version, adapted from how senior-level negotiations have actually played out in 2025 and 2026:
"Quick update, Company B came back at $Y total comp: $X base, $X equity, $X signing. To be transparent: your role is preferred for [specific reason, the team, the technical problem, the mission].
Each piece of that script is doing specific work. The numbers are precise enough to be checked and acted on internally. The stated preference for the target company reduces the recruiter's fear of entering a bidding war they'll lose anyway, since the candidate has already said where they'd rather land. And naming a date turns a vague sense of urgency into an actual deadline the recruiter can plan around.
For a narrower ask, a component-level version works well on its own: "Can you match the equity component of [Company]'s offer at $X?" That's concrete and immediately actionable, handing the recruiter something specific to bring to whoever approves equity grants. Compare that to simply saying "I have another offer" with no numbers attached. That signals leverage exists without giving the recruiter anything they can actually act on, and it tends to produce a polite acknowledgment instead of a revised number.
What gets shared and what gets held back matters just as much as the wording. Share the total comp number, the level, and the company's stage, enough detail for the claim to be credible. Don't share the actual offer letter PDF. Handing it over locks the conversation into the competing company's specific structure and removes flexibility on components that might be arranged differently between the two offers.
Never fabricate a competing offer. Recruiters in the same city, on the same recruiting channels, inside the same professional networks can and do verify offer numbers informally. A fabricated offer that gets caught doesn't just end that one negotiation. It can follow an engineer through the rest of their career in that industry.
None of this works without the underlying market conditions to support it. At the senior AI engineer level, the current supply-demand balance means strong candidates often hold multiple offers within the same few weeks. That's the environment that makes a parallel process realistic, not a hypothetical edge case. When one offer carries a short deadline and a second process isn't finished yet, asking for more time is a completely normal, legitimate request: "I have another process at a final stage, can I have until [date] to give you a proper answer?" Most companies will grant a few extra days without issue.
For engineers who are leaving unvested equity behind at their current employer, one more framing is useful around signing bonus: "I'm walking away from $X in unvested equity at my current company. I'd need the signing bonus to address that gap before I can move." Recruiters tend to respond well to this framing because it's quantifiable and reads as replacing a real, calculable loss.
Scripts for negotiating without a competing offer
Not holding a competing offer reduces leverage, but it doesn't erase it. A merit-based counter, built around market data and the specific scarcity of a given role, can still move equity and signing bonus by a meaningful amount.
The structure looks similar to the competing-offer script, minus the second offer. Instead of citing Company B's number, the anchor becomes the market data itself: a specific band pulled from Levels.fyi or a comparable source, paired with the role's specialization premium if one applies. "Based on current data for [level] at [role type] in [location], the band runs [X to Y]. Given the [GenAI / LLM / Forward Deployed] specialization this role requires, the target is [specific number], split as [base], [equity], [signing].
That framing does the same job the competing-offer script does: it gives the recruiter something specific and external to carry into their approval process. The number comes from the market, not from personal circumstance, which is exactly the kind of justification a recruiter can actually act on without a rival offer forcing their hand.