Qualify at the door: how Floor token-gated its way to a sharper ICP

The standard advice for finding your ICP is to ship something, watch who shows up, and iterate. That's fine if you have time and traffic. Most builders have neither.
There's a faster move. Engineer your distribution so that only your ICP can get in. Make the qualification step the cost of entry. By the time anyone has access to the product, you already know they fit, because the door itself was the filter.
I'm going to argue this is the most underused validation move in early-stage building. And I'm going to use Floor, the web3 portfolio tracker Josh and I shipped in 2021, as the long example. We did it almost by accident and it bought us eighteen months of obvious roadmap.
The problem with shipping first and watching who shows up
The default playbook says you launch, look at your signups, and figure out who your real users are. Then you re-aim the product at them.
Two things go wrong with this. The first is sample bias. You only learn from the people who happened to find you, which is almost never your actual ideal customer in early-stage distribution. You learn from your friends, your Twitter audience, the people who clicked through a Hacker News post. Those are not signal about who would pay you and stay.
The second is sunk cost. Once you've built the thing and shipped it, every signup feels like a data point worth listening to. You start bending the product toward the noise. Six months in you've built a Frankenstein that serves a dozen kinds of users badly and none of them well.
The fix is to qualify earlier. Not with a survey. Not with a typeform. With the product itself.
What we did at Floor, and why it worked
Floor was a mobile-first portfolio tracker for NFTs. We launched it in fall 2021, at the height of the NFT market. The market was loud, crowded, and full of products that all looked the same: web-based dashboards aimed at "crypto users," whoever those were.
We didn't want crypto users. We wanted a specific kind of person: an active collector who was buying enough NFTs to need a balance view across collections, who lived on their phone, and who believed in the underlying tech enough to put up with rough edges in a beta.
So we made the test flight token-gated. To get into TestFlight, you had to own a Floor-issued NFT.
Read that again. To get access to the beta of a product that helps you track NFTs, you had to already own an NFT. Specifically, ours.
This sounds like a stunt. It wasn't. It was the cleanest ICP filter we could have designed.
If you owned the token, you had already proven four things in a single act:
- You knew how to navigate a wallet, a marketplace, and a mint. You weren't a tourist.
- You were comfortable spending money on a digital asset based on a community you trusted. That meant you understood and accepted the social-financial logic of the space.
- You believed in the technology enough to bet on a beta product issued by an unknown team. That's high conviction.
- You wanted in. The token was the desire signal. We didn't have to guess at intent.
Compare that to the alternative. We could have put up a "request access" form on a landing page and gotten ten thousand signups, ninety-five percent of whom would have been speculators, journalists, friends-of-friends, and bots. Sorting that pile takes months. The token sorted it in a single transaction.
We ended up with about a hundred deeply engaged community members in our Discord. That was our entire research panel. We knew their wallets, their collections, their habits, and their pain points. We knew them by name.

The roadmap wrote itself
Once we knew who was inside, the next eighteen months of product decisions stopped being decisions.
We could see in the data and in the Discord that these users were collectors in the deepest sense of the word. Many of them had collected Pokemon cards, sports cards, watches, comic books before NFTs. They didn't see themselves as crypto users. They saw themselves as collectors who happened to be using crypto rails.
So when we built features, we built for collectors. We did an artist series where we partnered with creators on limited-edition NFTs and leaned hard into the gotta-catch-them-all energy. We knew it would land because we knew our people. We didn't have to A/B test it. We didn't have to run it past a focus group. The community was the focus group, and we'd already qualified them at the door.
We could also see the trigger that brought new users in. People would buy three or four NFTs across different collections, get tired of toggling between OpenSea tabs to see what they owned, and start looking for a balance view. That was the moment. We optimized everything about onboarding around that pain, including the first-run experience, the marketing copy, and the hero shot, because we'd watched it happen in our community a hundred times.
A vague ICP would have given us none of this. We would have been guessing at "crypto users" and shipping features that polled well in some general survey. Instead we had a sharp ICP and our roadmap was, honestly, table stakes. We just had to listen.
The general principle
The Floor token is a specific tactic. The principle behind it is general, and it works for products with no token, no community, no crypto in sight.
Pick the smallest, hardest commitment your real ICP would happily make to get access. Use that as the door. Examples:
- A waitlist that requires a one-paragraph description of the specific problem the user is trying to solve. Read each one. Reject the ones that don't match.
- A demo call as the only path to access. The demo is the qualifier.
- A pricing tier that starts at a number low enough to commit but high enough to deter tourists. Free filters poorly. Twenty dollars a month filters well.
- A specific community as the access channel. Distribute through one Slack, one Discord, one mailing list whose membership is itself the qualification.
- A required integration. If your product is for people running on Stripe, gate signup behind an OAuth connection to a real Stripe account with real volume.
In every case the move is the same. Don't open the doors and wait to see who walks in. Pick the trait that defines your ICP, build a door that only people with that trait can get through, and let the door do the work.
The objection, and the answer
The obvious objection is that this caps your growth. You're turning away users.
Yes. That's the point.
Early-stage products don't fail because they didn't accept enough signups. They fail because the team built for a vague audience and ended up with a product nobody in particular wanted. A small panel of correctly-qualified users is worth more than a hundred times their number in random signups, every time.
You can always open the doors later. You almost can't undo the damage of building for the wrong people for a year.
What this has to do with Crew
A common question we get from early AI builders is: I haven't shipped yet, I have no users, how am I supposed to know my ICP? Crew exists in part because that question deserves a real answer. You can sharpen an ICP up front, evaluate your product and your messaging against it, and have a defensible point of view before the first signup arrives.
But the move in this post sits one step earlier than Crew, and one step earlier than any tool. Before you write the copy, before you run the eval, before you build the landing page, decide who you are not letting in. Decide what the door looks like.
If your door is a typeform, you don't have a door.
