I turned down Polymarket. They hired me anyway.

Polymarket offered me a job when the company was valued around $1.1 billion. The offer was roughly $500k a year in stock, about $2 million over the grant. I said no.

Hold that number. We’ll come back to it, and it gets worse.

The no

I want to be clear that there was nothing wrong with the offer. It was generous, and it was Polymarket, which even then was one of the most interesting companies on the internet: a live scoreboard for what the world actually believes, with money keeping it honest. As products go, that’s about as good as premises get.

The no was about me. I had my own company. I’d spent years building apps for clients on my own terms, choosing the projects, keeping the independence, and it was working. Somewhere in there I’d decided that being an employee, anywhere, wasn’t the shape of my life anymore. So when a great company slid a great offer across the table, the answer came out of that decision, not out of any math.

I said no to the job, not the people. Keeping that distinction clean turned out to matter more than I could have known at the time.

Then the election happened

You remember November 2024 whether you wanted to or not. For Polymarket it was the moment the premise cashed in. While pundits hedged, Polymarket had a number, and for a stretch it felt like the entire internet was checking it. The site went from “interesting company” to a piece of civic infrastructure more or less overnight.

Polymarket’s Presidential Election Winner 2024 market, resolved, showing $3.69 billion in volumeDecember 2024, my phone. The market that made the company: resolved, with $3,686,335,059 of volume on the screen. I was checking it too — this screenshot is my own.

And then, because traffic is a wave and waves break, came the crash after the spike. That part rarely makes the retellings, but it’s exactly the moment that says the most about a team: what they chose to build once the world stopped refreshing the page. Polymarket’s answer was to go bigger. A proper regulated app for the US market, built right.

That’s when my phone rang again. Not with a job offer this time. They hired my contracting company.

I have to say, whatever mixture of graciousness and pragmatism it takes to re-approach the guy who turned you down, they had it. Nobody made it weird. There was work to do and they wanted it done well, and that was the entire temperature of the relationship, start to finish.

The work

Let me set the credits straight before anything else, because the internet loves to compress “I worked on” into “I built,” and I’m not letting that happen here.

Version one of Polymarket’s US app was not mine. The repo was three months old when I arrived — one of their engineers had been laying the scaffolding since April 2025, and he was, frankly, a joy to build alongside: fast, unprecious about his code, the kind of collaborator who makes the whole codebase better to live in. My first commit lands July 28th, 2025. More hands joined through the fall, the in-house team arrived in force by December, and my last commit is February 25th, 2026.1 I wrote key components, the load-bearing frontend pieces, and only frontend; I never touched the backend or the markets machinery.

If you want to know what I mean by components, my whole career is a paper trail: I’m the person who rebuilt iMessage down to the haptics. Polymarket hired that guy to do that thing. My job was making the surfaces you touch feel inevitable.

The part I cared about most was the money entry. When you type an amount into a trading app, you are typing money, and it should feel like it. So the number pad is custom — CUINumberPad, 447 lines. The amount display is a rolling ticker with the very serious name CUITickerCurrencyInputDisplay, every digit animating into place, and the text auto-scales as the number grows so that $5 and $50,000 both sit perfectly in the same space.2

My own screen recording, sixteen days into the job: the ticker rolling from 58 cents to $100,000 on the Super Bowl market. Every digit animates into place, and watch the type shrink to hold six figures — that’s the auto-scale earning its keep.

Before any of the rest of it, though, there was a color problem to solve, and it started with me staring at a phone at nine at night in a red-lit room.

The mesh gradient in isolation, mid-tuning, running full-screen on a device in my hand. No app around it yet — just two colors being talked into moving correctly. This is what most of the work actually looks like.

A confirmation screen has one job: tell you the money moved, and feel good enough that you don’t resent having spent it. A flat color is cheap. A photograph is somebody else’s taste. What I wanted was a surface that moves slowly enough that you are never quite sure it is moving.

The problem with that is banding. A gradient this slow, stretched across an OLED panel, resolves into visible stripes — you can see the steps between the colors. The fix is dithering: scatter a fine grain of noise across the whole thing so the eye blends the steps instead of counting them. The commit is called “Update gradient mesh background,” which undersells it considerably.

Filmed the day after the commit that reads “Update gradient mesh background”: the mesh drifting behind the win screen, then the wipe into the ticket — WON $31, COST $31, my face run through a halftone because a receipt should look printed. Look closely at the flat areas and you can see the grain that stops it banding. Nobody will ever notice it. That is what it is for.

Once that existed, everything else could hand off to it — which brings me to my favorite single component, swipe to buy. Placing a real-money trade shouldn’t be a tap; taps are for likes. It’s a deliberate slide, slide-to-unlock for your conviction, with its own loading and success animations when the order lands. Git remembers the birthday: “feat: add swipe-to-dismiss trading widget with ScrollView,” August 14th, 2025, two and a half weeks in. The very next commit is “Implement gesture deferral,” because like everything involving a gesture inside a scroll view, the glamorous part took a day and the arbitration took much longer: teaching one pan gesture to win over another is the closest iOS work gets to diplomacy.3

Two buys, end to end. Type the amount and the ticker rolls each digit into place; the pill below carries the team’s logo and takes the team’s color — red for Washington, purple for Portland — then you drag it, it fills behind your thumb, and it hands off into a mesh-gradient confirmation in the same color. It tracks the finger the whole way. A real gesture, not a tap in a costume.

A live sports market: Miami (OH) at 61% versus Toledo at 43%, with a live chart and Pick a side buy buttonsThe sports surface: live chart, live score, and the two-tap “Pick a side” row that hands you to the swipe.

Late in the engagement came my favorite feature to polish: the share receipts. Win a bet, and the app builds you a card — your position, your odds, your payout, your face if you want it, framed like a ticket worth keeping. It’s the kind of feature that’s ninety percent taste: the camera reveals gradually as you swipe, the shutter got moved to the bottom because thumbs live there, and the buttons fire their haptic on press down, not on release, because that’s when your brain expects it.

And taste, on this team, was a group activity. This is the actual thread, names smudged:

A Slack thread between Ben and two Polymarket engineers debating share-card ergonomics, colleague names pixelatedTwo Polymarket engineers and me, relitigating a shutter button at 8:47 PM: “having the crop of the image be on bottom edge instead of middle of screen just feels more natural.” When I said the client cared about quality in the specific ways I care about it, this is what I meant, from inside.

An iPhone held in hand showing a red Polymarket share card: You bought MIA, $2My desk, a real device, the receipt in its natural habitat. You can tell it’s a work photo because the position is two dollars.

The rest was the connective tissue that makes an app feel expensive — transitions, launch animation, glass materials, a button style that presses down into the screen instead of shrinking. Old habits from the iMessage rebuild, gainfully employed.4

Their engineer laid the scaffolding and built much of the app. I built key components, all frontend. Their in-house team took it from there, and took it further.

What I can tell you is what it felt like: the best kind of client work. High stakes, real deadlines, a product the whole world had just finished looking at, and a client who cared about quality in the specific ways I care about it. When their new in-house team came aboard, we handed the codebase over and I got to feel the contractor’s strange pride: the point of the work was to make yourself unnecessary, and we did. Last I checked, the app is in very good hands, most of them not mine, which is exactly how v1 handoffs are supposed to end.

The coda

Now the math I skipped.

Polymarket is now reportedly raising at a valuation around $20 billion. When they offered me the job, they were worth about $1.1 billion. That’s roughly an 18x. The stock in that offer, the $2 million I waved off, would today be worth about $40 million.5

I’ll walk you through my process for absorbing this number. First I did the math. Then I did it again, slower, on the theory that I’d slipped a decimal. I had not slipped a decimal.

Forty million dollars. I’ve typed it now, so it’s real.

the offer, at a $1.1B valuation · then$2M
the same grant, at $20B · now~$40M
the price of the no18× in about two years
Same grant, two appraisals. The bottom bar is not income I lost; it’s the going rate for the independence I bought instead. It turns out the market prices that too.

Here’s what I notice about the wince, though, having lived with it a while: it’s mine, and only mine. Polymarket made a strong offer, took the no gracefully, and came back years later to hire my company anyway, which is about as well as anyone has ever handled being told no by me.

And I don’t get to fully regret the decision, because I made it for reasons that were true and are mostly still true. The independence I bought with that no is the reason there’s a contracting company and this blog at all. I just didn’t know the sticker price. Nobody ever does; that’s the whole trick of the decision. You pick a door, and years later somebody tells you what was behind the other one, in this case with a term sheet attached.

So no, I wouldn’t call it a mistake. I’d call it the most expensive tuition I ever paid for a lesson I’d already decided to learn. And if Polymarket calls again, for the record: I still won’t take the job.

But I’ll absolutely take the call.

Footnotes

  1. Both numbers from git log --author, counted this week. The 1,110 spans every branch; the 101 are the squashed survivors on main. An earlier draft of this post said “112,” which I’m told is what I get for counting before fetching.

  2. The auto-scaling started life on the identity-verification screens, where legal names come in every length, and then turned out to be exactly what a currency field needs. The best components keep getting rehired.

  3. The bug I remember most fondly: the swipe-to-buy gesture kept firing when your thumb started its slide inside a decorative gradient. The fix is commit f56c84ec3, “feat: prevent swipe-to-buy gesture from triggering in gradient zone,” January 15th, 2026 — followed the same day by “add defensive guards for gradient zone gesture handling,” because glory has a long tail and it is made of edge cases.

  4. Better than equity: for a stretch of version one, the app’s Package.swift pulled five of my open-source packages — union-buttons, union-toast, union-shake, union-gradients, union-materials. And for one week in November 2025, the chat tab ran on union-chat, the iMessage rebuild nobody wanted. It crashed, I disabled it, and the team went another way — which means even my own client work eventually told me no. The market keeps score fairly.

  5. Pedants: $2M times 18.2 is $36.4M, and the final terms of a raise move the number around. Somewhere past $35M my ability to feel the difference stopped responding, so “about $40 million” it is.