Make the ask
Counter with enthusiasm, a specific number, and reasons.
- Structure a counteroffer conversation.
- Choose a specific, justified target.
- Use silence and patience effectively.
Once the written offer is in hand, it is time to counter. A good counter is warm, specific, and grounded in reasons. You are not making demands; you are helping the recruiter - who usually wants to close you - build a case internally to improve the offer.
A structure that works
- Thank them and show enthusiasm: make it clear you want to join.
- State the gap and your reasons: competing offers, market data for the level, or the scope you bring.
- Ask for a specific number or change: “Could you get total compensation to 245,000?” rather than “Can you do better?”
- Pause. Let them respond; resist filling silence by lowering your own ask.
- Signal commitment where true: “If we can get there, I’m ready to sign this week.”
1offer_total = 220_000
2target_increase_pct = 10
3counter = round(offer_total * (100 + target_increase_pct) / 100, -3)
4print(f"Counter at about {int(counter):,}")Counter at about 242,000
Precise numbers such as 242,000 can come across as researched rather than arbitrary. Aim a little above what you would happily accept, so there is room to meet in the middle. Many people negotiate by phone for warmth and by email for clarity - a common pattern is to discuss by phone, then confirm in writing.
Key takeaways
Enthusiasm, reasons, a specific number, then silence.
Aim slightly above what you would happily accept.
Offer commitment in exchange for movement when you mean it.
Lesson quiz
5 questions · pass with 4 correct · up to 50 XP
Passing this quiz completes the lesson and keeps your streak going. Questions you miss come back in review sessions later.
Practice: run the numbers
Use short Python programs to calculate total compensation, vesting, market percentiles, and counteroffers. These exercises run locally in your browser.
Calculate a counteroffer
Read the offered total compensation and a target increase percent. Compute the counter as offer * (100 + percent) / 100, rounded to the nearest thousand (halves round up), using integer arithmetic. Print Counter: X with thousands separators.
- Ten percent
- Rounds up
- Rounds down
Python runs in a sandboxed browser worker with a 60 second time limit. Its runtime loads from the Pyodide CDN; your code stays in this browser.
Questions about this lesson
Stuck? Ask. Figured something out? Share it. Explaining is one of the best ways to learn.
Loading posts…