I turned down Polymarket. They hired me anyway.

Polymarket offered me a job when the company was valued at around $1.1 billion. I said no.

Remember that number. We’ll come back to it. It gets a lot worse.

The “no”

To be clear, there was nothing particularly wrong with the offer. It was very generous, and it was Polymarket, which, even then, was one of the most compelling startups. They were, then like they are now, basically a crystal ball for the future, using markets to predict what’s going to happen. As far as products go, that’s one of the most interesting ones.

The “no” was more about me. I just didn’t want to be an employee. My contracting company was taking off. We had tons of revenue, and tons of people wanted to hire us. I also had a few employees at that point. That’s where I was coming from, more than evaluating the company itself.

Basically, I turned down a job, not the people. I tried to make that as clear as I could to them, which turned out to be smart.

The election had just happened

Everybody remembers November 2024 for Polymarket. It was pretty much their first incredible peak. The pundits had mostly hedged on the election, but Polymarket had it squarely in the camp of Trump. The fact that the election turned out to be somewhat lopsided gave the company such an air of authenticity. Almost overnight, it felt like a piece of civic infrastructure. Their offer came in shortly after that.

Polymarket’s Presidential Election Winner 2024 market, resolved, showing $3.69 billion in volumeMy phone in November 2024. The presidential market had just resolved, with $3.7 billion in volume on screen. I was checking it every minute.

And then came the crash. Trading volume on Polymarket fell 84% overnight, and daily active users dropped by more than half.1 I think a lot of teams would have been very discouraged, but Polymarket saw an opportunity to build a properly regulated US market, and they took it.

And that was when my phone rang again, but not with another job offer. They wanted to hire my contracting company.

The work

I did not build the first version of Polymarket’s US app. The repo was about three months old when I got there. One of their engineers had been laying down the scaffolding, and he was excellent to work with. He was very fast and excited to produce really great work, the kind of collaborator who just made everything easier.

Eventually, they hired more people throughout the fall, and the in-house team really picked up in the winter. In between, I wrote the load-bearing frontend components, though I never touched the backend or markets.

To get a sense of what I mean by components, keep in mind that I rebuilt iMessage down to the buzz haptics. That’s basically the job they hired me for. They wanted to make the trading experience feel beautiful.

The part that I cared about most was the trading experience itself. When you type a number into a good trading app, it should feel the way it feels when you type in Cash App. To achieve that, the number pad is completely custom. Every digit animates in place, and the text auto-scales as the number grows so that $5 and $5,000 sit perfectly in the same space.2

A screen recording from my camera roll, sixteen days in. The ticker rolls from $0.58 to $100,000 on the Super Bowl market. Every digit animates into place, and you can watch the type shrink down to make space for six figures.

And then there was the gradient.

We also wanted the post-confirmation screen to feel amazing. We knew a flat color wouldn’t even be something you would want a screenshot of, so we tried to come up with the best-feeling gradient imaginable. We settled on a blob gradient that responds to motion and dithers at its edges.

The blob gradient in its primordial form. I was trying to use Metal to get it responsive enough that I could have it be controlled by motion.

An iPhone held in hand showing a red Polymarket share card: You bought MIA, $2Here is what the gradient looked like behind the new trading view.

And then my favorite component, probably, is swipe to buy. We knew that tapping to trade would feel awkward. It had to be a slide. I added this for the very first time about two and a half weeks in. It’s not a very standard iOS interaction, so I had to do a lot of things, like disable the system slide so that it wouldn’t trigger a return to the home screen.3 The final result was beautiful.

This is a prototype we never ended up using, an offshoot of swipe to buy that we called slide to buy. You can see it with the final blob gradient here, looking very pretty.

The swipe to buy then moves to the confirmation screen, which has a nice animation my team and I made. The best gradient we probably ever made was this dither gradient, with a scatter grain around the corners. It still looks so good.

The selfie share screen. It slides in from the left, kind of like the Instagram camera. There are two different ways of sharing, one where the ticket comes over your face and the other where your face is the ticket. I had to do so much heavy lifting to make this look and feel beautiful and not heat up your phone considerably. We wanted it to feel seamless and smooth.

At the end of the work, I built the share receipts. The idea was that when people want to bet, they would want a great and easy way to share the position, the odds, the payout, and their face if they wanted it. A huge amount of that feature was taste. You can see that the camera reveals gradually as you swipe, and the shutter is at the bottom like a Snapchat filter. Everything is smooth and interactive and works exactly the way your brain would expect it to.

The taste of this team was some of the best I’ve ever worked with. Here’s a real thread, with the names smudged:

A Slack thread between Ben and two Polymarket engineers debating share-card ergonomics, colleague names pixelatedTwo Polymarket engineers and me discussing a shutter button at 8:47 PM.

And the rest is basically the infrastructure that makes an app feel expensive: transitions, launch animations, glass materials, a button style that presses down into the screen instead of shrinking. Basically, incorporating everything I had learned from app development over the years into this project.

This is maybe even better than equity. For a big stretch of version one, the app pulled five of my open-source packages: union-buttons, union-toast, union-shake, union-gradients, and union-materials. For one week, the chat tab ran entirely on union-chat, the iMessage that I rebuilt that nobody wanted. They ended up forking the package and integrating it directly into their code, heavily modified. That is to say, even my own client work eventually told me no. union-chat was not destined to be, I guess.

This is basically the best that client work gets. It was high-stakes, with serious deadlines, a high-performing team, and a product that the whole world was looking at. The client really cared, maybe more than anyone I’ve ever worked with, about quality in the same ways that I do. When their new in-house team came on, I handed the codebase over and had that strange contractor moment where the point of good work was to make yourself unnecessary. That is exactly what we did. I can tell you confidently that the app is in good hands.

The coda

Now some brutal math.

Polymarket is now rumored to be raising about $1 billion at a valuation above $20 billion.4 When they first offered me the job, they were worth $1.1 billion. That’s roughly an 18x. For every million dollars of stock in that offer, I’d have about eighteen million today.

a million in stock, at a $1.1B valuation · then$1M
the same grant, at $20B · now~$18M
the price of the no18× in about two years
The equity I lost out on. Being independent certainly has a price.

Eighteen million, per million.

Having lived with this for a while now, I’ve thought about it from every angle. Polymarket made a very strong offer and took being turned down gracefully. They came back a few months later to hire my company anyway. The whole thing was extremely admirable.

I don’t fully regret the decision, because I made it for reasons that are mostly still true. The uncertainty was real, and the independence that I got was the reason I was able to build my contracting business. I didn’t know what the equity would turn out to be, but nobody ever does. You’re making a risk-adjusted decision, and later, when you figure out what everything was worth, you can’t over-index on hindsight.

So I wouldn’t necessarily call it a mistake, but it was certainly an expensive price for the time that I bought. By the way, if Polymarket ever calls again, I’m still not looking for employment.

But I’d certainly pick up the FaceTime.

Footnotes

  1. DL News, citing Dune Analytics the week after the election. Volume had fallen 84%. Daily actives were down 53% to a little over 24,000. The $3.7 billion presidential market had ended.

  2. The auto-scaling code actually started out on the identity verification screens, where legal names would need to potentially be very long and still fit. Then we reused that code in the currency field. That’s kind of the cool thing about building your code as components.

  3. One of the most brutal bugs to deal with was the way the swipe-to-buy gesture kept firing when your thumb started to swipe. The fix prevents the swipe-to-buy gesture from triggering in the gradient zone. This was then followed up by “add defensive guards for gradient zone gesture handling,” because we had to be thorough about the edge cases.

  4. Reported by Bloomberg and CNBC. They had several rounds of funding along the way, including one at a $9 billion valuation and then one at $15 billion. The New York Stock Exchange’s parent company has now committed more than $2 billion to the company.