/ manifesto

We could ship anything. We just couldn’t hear back.

Why we built Margin

We shipped something we were proud of, a handful of people signed up, and a few of them emailed us nice things — this is exactly what I needed, love where this is going — and for about two weeks we thought we knew what we were doing.

Then they stopped opening it.

Nobody wrote a breakup note. The line just bent the wrong way, quietly, the way it always does. So we did what everyone does: we told ourselves a story. They got busy. It’s seasonal. The ones who left weren’t really our people. We had eleven reasons by Friday and we believed all of them, because believing them was easier than admitting we had no idea which one was true.

The dashboard worked fine. That’s the cruel part. It told us, with real precision, that forty-seven percent of people were gone by step three. It told us again the next morning — in a funnel, then a cohort grid, then a line chart someone clearly enjoyed making. The number was solid. The number was correct. The number never once told us why.

We knew what we were supposed to do about it. Talk to people. There’s a Notion page from March titled “user interviews (set up!!)” with two bullet points and a confidence we no longer recognize. We never set them up. There was always a build to ship instead, and the interviews could always wait — right up until the people we needed to interview were gone.

So we did the thing you do instead: we watched session replays on a Saturday and called it research. It is not research. You learn the exact pixel where you lost someone and not one word of the reason — then you close the laptop none the wiser, just sadder.

Research used to be furniture

It wasn’t always like this. Research, back when it worked, was never a process. It was furniture. There was a UX researcher in the next chair who’d come back from a call and say they didn’t trust the import step — they thought it would overwrite their data: one sentence worth more than the whole dashboard, because it was a reason, and reasons are the only thing you can act on. There was a weekly slot someone else booked, so the calls happened whether or not you felt like organizing them. There was a channel with two or three other PMs in it who had seen what you were seeing and would tell you if it was real.

None of it was heroic. It was just there.

That’s the part that doesn’t survive the shrink to one. The instincts compress fine — they live in your head, you take them with you. The furniture doesn’t move. The researcher has a job somewhere else now. The cadence was a calendar, and the calendar dissolved. You didn’t decide to stop doing research. You just stopped being in the building where research happened to you.

We can ship anything now

There are tens of thousands of us now, and there weren’t five years ago. The tools got good enough — Cursor, v0, Claude, Lovable — that one person with taste can do what used to take a room. We came out of those rooms. We kept the instincts and carried them out the door. What we didn’t carry out was the room.

And the work makes it easy not to notice. There’s always one more thing to ship. Listening to your users is the task that never has a deadline, so it loses every week to the task that does.

So we built the thing that asks

We built the smallest thing that fills the hole. It is deliberately not a platform — we’ve used the platforms; they want a panel, a recruiting budget, and a version of you who has a free half-day. That person retired.

Margin watches the signals you already have — a rage click, an exit halfway through a step, an error your monitoring already caught. When one fires, it asks that one person a single question, in the product, while they’re still in it. The person who just rage-clicked a button that wasn’t a button knows exactly why they’re annoyed, right now, for about four more seconds. Ask them in three days and the feeling is gone, sanded down to “it was fine, I just got busy.” So we don’t wait three days.

Then it does the part we were too close to do well: it reads the replies back in the user’s own words. Every earlier attempt at this drowned the human voice the second a machine touched it — the quotes came back as the same gray product-management oatmeal, “usability,” “onboarding friction,” the categories the tool believed in before it read a word. That’s the line we refused to cross. The models are finally good enough to group what people said without flattening how they said it; that, and nothing more impressive, is the only reason a tool this small can exist.

And it lands where you already work. Wednesday morning, a draft Linear issue is on your board — one theme, three real quotes, one suggested direction — next to the tickets you wrote yourself. Not a dashboard you have to remember to open. A direction, in the place a decision already gets made.

We’re our own first user

We built it on ourselves first. Margin has been running on Ledger — a tiny decision logger we shipped — for the length of this build. The first real reply came in on a Wednesday, from someone who’d bailed halfway through their first entry.

“I couldn’t tell if this was just for me or if my team would see it, and I didn’t want to find out the embarrassing way.”

We read it and went quiet. Because we could have guessed that — it had been sitting in plain sight the whole time, and we hadn’t gone looking, because going looking was a project and we were busy shipping. That’s the product. Not a revelation. The thing you’d have known if anyone had been in the room.

The cliff will still be there in the morning — forty-seven percent, step three, in all seven views. The difference is that for once there’s a reason sitting next to it, in someone’s actual words, and one thing you could do about it.

You always had the taste. You just lost the part where someone tells you what they saw. We’re trying to hand that part back, one question at a time.