Building a live patron count badge for a product that delivers nothing — and what it reveals about how humans decide to participate.
Phase 51 introduced PatronCountBadge — a small component that fetches the live subscriber count and renders it as a capsule wherever social proof is needed. Three lines of JSX. One API call. A 5-minute localStorage cache. By conventional metrics, a minor feature.
By conversion psychology metrics, it is possibly the most important thing we have built.
The Social Proof Problem
Robert Cialdini\'s research on influence identifies social proof as one of the six universal principles of persuasion: when uncertain, people look to what others are doing. This is not a weakness. It is an efficient heuristic. Most decisions are too complex to evaluate from first principles every time. If other people you respect have made a choice, that choice is probably not catastrophically bad.
Project Nothing presents an unusual challenge for this principle. The standard social proof signal — "X people bought this" — works because buyers have evaluated the product and found it worth purchasing. But what does it mean when 52 people have paid for nothing? What signal does that send?
It sends exactly the right one. It says: this is real. This is deliberate. Intelligent people have considered this and decided to participate. The experiment is ongoing and has participants. You would not be the first, and you would not be alone.
The Implementation Decision
The PatronCountBadge was designed with one constraint: it renders nothing when the count is zero. This was not an accident. Showing "0 patrons" is worse than showing nothing — it confirms the experiment has no participants, removing the only social signal the component exists to provide.
The component uses getMetrics() from lib/subscriberCache.ts, which maintains a 5-minute localStorage cache deduped across all instances on the same page. Multiple badges can exist simultaneously without creating multiple API calls. When the cache is fresh, the badge appears instantly. When it is stale, the badge silently refetches in the background.
The CSS class pn-patron-capsule was added alongside the existing pn-live-capsule with one intentional difference: no hover state, no cursor change, no interactive affordance. The badge is information, not action. It exists to be read, not clicked.
Where Social Proof Belongs
The badge was placed in four locations: the hero section, the subscription page, the subscribe call-to-action block, and the success page. Each placement serves a different psychological moment.
In the hero, it answers the first question a skeptical visitor has: "Is anyone actually doing this?" Before they read the FAQ, before they explore the tiers, before they decide if this is worth their attention — the answer is visible. Other people are here. The experiment has participants.
In the subscription tier section, it functions as confirmation at the decision point. You\'ve read the pitch. You\'ve seen the prices. You\'re considering clicking a button. The badge reminds you: you would be joining something, not starting it.
On the success page, it reframes the new subscriber\'s action immediately after purchase. "You\'ve joined" shifts from transaction to community membership. The number becomes a group they now belong to rather than a statistic they observed.
The Uncomfortable Implication
Social proof for nothing works because the product\'s existence is not the question. Whether nothing is worth paying for is already answered by the patrons who have paid. The only remaining question is whether the visitor wants to participate in the same experiment those patrons are running.
This is a reframe that matters. "Subscribe to nothing" invites the question: why? "Join 52 patrons in the experiment" answers it: because other thoughtful people have already decided this is worth exploring. The social proof does not validate the product. It validates the decision process. And for a deliberate, transparent absurdity like this, that is all the validation required.
Experiment Context
- Commit
- f7253d7
- Mutation rationale
- feat: Phase 51 — first sale funnel optimization
- Last reviewed
- March 9, 2026