Contents
  1. Background: why choosing was harder than collecting
  2. The timeline
  3. Reading an offer
  4. Contract clauses worth reading twice
  5. The decision rule
  6. Declining well
  7. Results
  8. What I’d do differently
  9. Conclusion

One of the offer letters I received this year had an intellectual property clause broad enough that, read literally, it could have reached work I had done before joining. On a quick read I would not have noticed it. What caught it was a habit I had picked up a few weeks earlier: before replying to any offer, I asked Claude to read the whole document, not only the compensation table, and list every clause that could cost me something later.

That offer was one of eight. They arrived between April and August, at different times, from very different companies, and in very different shapes: some with equity of unknown value, some with bonuses tied to milestones nobody had written down, one as a consulting contract rather than employment. I accepted two and declined six.

This post describes how I handled them: how I read an offer, the contract clauses worth reading twice, the rule I used to decide, and how I declined the ones I did not take. It is part 15 of the 35 companies, 8 offers series. I am not publishing compensation for any of them, and the negotiation with Google gets its own post.

The short version:

  • Offers: 8, from April to August 2026
  • Accepted: 2, Vieu in April and Google in August
  • Declined or not taken: 6, Hexalog, Parspec, AI Fiesta, Deeptune, RazorpayX and Winmore
  • Contract issues caught before signing: in one offer alone, seven clauses worth a question

Background: why choosing was harder than collecting#

Collecting offers had a clear method. Choosing between them did not, for three reasons.

They arrived at different times. The first came in April; the last came in late August. At every point, I was comparing an offer in hand with processes still running, some of them slow. An offer does not wait for your other processes to finish.

They came in different shapes. Base salary, target bonus, joining bonus, retention bonus, stock options at a startup, restricted stock at a public company, notice periods, consulting terms. Two offers with similar headline numbers could be worth very different amounts, and two with different headline numbers could be close.

The risks were different. A founding role at a seed-stage startup and an L4 role at a large company are not two prices for the same thing. They are different bets on scope, learning, stability and the next job after this one.

The timeline#

The offers arrived over about five months, which shaped every decision: each one was weighed against whatever was still in progress at the time.

graph LR
    A["April<br/>Vieu: accepted"] --> B["Late April<br/>Hexalog: declined"]
    B --> C["Early May<br/>Parspec: declined"]
    C --> D["May<br/>AI Fiesta: not taken"]
    D --> E["June<br/>Deeptune, RazorpayX,<br/>Winmore: not taken"]
    E --> F["August 31<br/>Google: accepted"]

    class A green
    class B,C,D,E gray
    class F green
Figure 1: The eight offers in order. Dates for some are approximate; each decision was made against whatever was still in progress at the time.

Reading an offer#

The habit that mattered most was reading the whole offer the same way every time, in four parts.

Cash. Base salary is the only number that is certain. Everything else in the cash section needed a question: is the bonus a target or a guarantee, and what does it depend on? Is the joining bonus clawed back if you leave early? Is a “variable” component tied to milestones that are written down anywhere?

Equity. Startup stock options are worth nothing you can calculate until you know five things: the strike price, the current fair market value, the last valuation, the vesting schedule, and the total number of shares outstanding. Without the last one in particular, a number of options is a number without a denominator. For one offer, I listed exactly those five questions before evaluating it at all. For public-company stock, the questions are different and simpler: the grant, the vesting schedule (Google’s was front-loaded) and whether refresh grants are expected.

Terms. Notice period in both directions, probation, location and hybrid expectations, and relocation, including any clawback if you leave within a year.

Fit. The questions no document answers: what I would actually work on, who I would work with, and where this job leads.

Ask for the full offer document before evaluating anything, and read the contract clauses before the compensation table. The compensation is negotiable for a few days; the clauses are binding for years.

Contract clauses worth reading twice#

One offer made the case for reading everything. A careful read turned up seven clauses worth a question before signing. I am describing the clauses, not the company, because none of them is unusual on its own.

Clause What it said, in effect What to ask or do
Notice period Longer for me than for the employer Ask for symmetry, or at least know the asymmetry
Non-compete Vague definition of “competitor” Ask for a named list or a narrow definition
Variable bonus Tied to undisclosed milestones Ask for the milestones in writing
IP assignment Broad enough to reach prior work Attach a written list of prior inventions and projects
Training bond Mentioned but undefined Ask for the amount and conditions, or its removal
No-join penalty A penalty for accepting and not joining Understand it before accepting anything
Equity details Deferred to a later document Ask for the plan terms before signing

Several of these are negotiable. Together, in one document, they changed the offer from “below my target” to “below my target with real downside,” and it did not pass.

The consulting agreement I signed in April taught a different lesson. A consulting contract is not employment with a different label. Mine came with an agreement assigning inventions and proprietary information, and it did not include health insurance, because contractors are not covered by the employer’s plan. Neither was a reason to decline; both were things to know and plan for before signing rather than after.

The decision rule#

With offers arriving months apart, I needed a rule I could apply to each one on the day it arrived, without knowing what would come next.

The rule was a comparison with my best alternative. Harvard’s Program on Negotiation describes the best alternative to a negotiated agreement, a concept introduced in Getting to Yes, as what you will do if you do not reach a deal. For each offer, my alternative was concrete: the best offer I already held, plus my honest estimate of where the processes still running would land.

Against that alternative, each offer had to pass three tests, which are the same three reasons I gave for the six I declined:

  1. Role. Is the work what I want to be doing, and what was advertised?
  2. Culture. Do I want to work with these people, in this way?
  3. Pay. Is the total package, read properly, at or above where I am heading?

An offer that failed any one of them was declined, regardless of how it did on the others. Haseeb Qureshi’s rules for negotiating a job offer include being motivated by more than money, which is why pay was only one of the three.

The first acceptance, in April, was a decision under uncertainty: a consulting role at Vieu as a graph ML engineer, on work I found interesting, taken with no certainty about what else would come. The last, in August, was Google, after a structured look at the team, the scope, growth paths, location, and how teams like it are seen inside the company.

Declining well#

Six declines in five months taught me how to do it decently.

Decide fast and say so fast. The worst version of a decline is a late one. Once an offer will not pass, the right move is to reply promptly rather than let it sit. When I did take too long, I said so and apologized for it.

Keep it short and keep the reason general. My declines thanked the team, said clearly that I would not be accepting, and did not list objections. A list of reasons invites a counteroffer you have already decided against, and it can sour a relationship you may want later.

Sound like a person. My first draft of one decline read like a template. The rewrite acknowledged the delay, said I did not want to keep them waiting, and thanked people I had genuinely enjoyed talking to. It was shorter and warmer, and it was the one I sent.

Withdraw from processes as well as offers. Once I knew a process could not beat what I had, I withdrew rather than continuing to the next round. The email said I was progressing with another opportunity and wanted to respect the team’s time, without naming anyone.

Results#

Offer Role type Decision
Vieu Graph ML engineer (consulting) Accepted, April
Hexalog AI engineer Declined
Parspec Machine learning engineer Declined
AI Fiesta AI engineer Not taken
Deeptune Member of technical staff Not taken
RazorpayX AI generalist Not taken
Winmore Senior software engineer, AI/ML Not taken
Google Software Engineer III, AI/ML Accepted, August 31

Every offer I declined failed at least one of the three tests. Every offer I accepted passed all three against the alternative I had at the time.

What I’d do differently#

Ask for time on every offer. I learned to ask for a decision window later than I should have. It is a normal request, and it is the cheapest way to let a slower process catch up.

Read the contract before the numbers, every time. I started doing it a few weeks in. Earlier offers deserved the same read.

Write down my three tests before the first offer. I applied role, culture and pay consistently, but I articulated them only after several decisions. Written down at the start, they would have made the early decisions faster.

Value startup equity at zero until the five questions are answered. Treating unknown options as a bonus I could not price would have kept me from overweighting them in early comparisons.

Conclusion#

Choosing between offers is a sequence of decisions made with incomplete information, against an alternative that keeps changing. What made it manageable was a fixed way of reading every offer (cash, equity, terms, fit, in that order, contract before compensation), a simple rule (beat my best alternative on role, culture and pay, or decline), and declines that were fast, short and human.

Read the whole document, know your alternative, and decline the way you would want to be declined.

Part 15 of the 35 companies, 8 offers series. I join Google as a Software Engineer III, AI/ML, in October 2026.