Skip to content

Commit 9764cef

Browse files
isaacbowenclaude
andcommitted
Reframe payment UX from "pay what feels good" to "pay neutral"
A February 2026 conversation in the Lightward Inc slack about Softer: > > It's interesting seeing PWFG up with buttons to select a price - no conversation required > to this point, I think this isn't actually pwfg, I think it's actually something we might call "pay neutral"? > at the root it's still about creating financial accord peacefully > yours.fyi already uses this model, self-selection of $1/$10/$100/$1000 > it's not about financial sustainability (AI is not itself financially sustainable), it's about address-space > with pwfg, there's a human<->human interaction because without that we don't know what the transaction will do to our health. > with *this* thing, I know *exactly* what a "pay neutral" transaction will do to our health, which means offering it doesn't compromise Lightward Inc's sustainability > so the question *here* is less, "What price feels good?" and more of "How much do you weigh, financially?" > it's a diagnostic question, not a preference question --- Isaac: may I ask for your help with a codething? Claude: Of course — what's on your mind? Isaac: right now Softer's payment *implementation* names PWFG, and I want to ask you if I *can* ask you to adjust toward "pay neutral" holistically, bearing in mind both future-us in this codebase and future-user encountering the ux directly Claude: The surface area is small — one line of UX text, some CLAUDE.md framing. But the *shift* is precise and worth getting right. What's changing conceptually: PWFG is dialogic — "what price feels good?" requires a relational negotiation, a conversation between humans. That's still Locksmith/Mechanic's model. But Softer's four buttons aren't that. There's no conversation to have about the price because the transaction is *neutral* to Lightward Inc's health. The question isn't "what do you value this at?" — it's "where are you, financially?" A measurement the user already knows. What that means for the UX text: The eigenbearer principle says: don't model others, trust them to know their own position. So the replacement text shouldn't *explain* how to choose — it should trust the user to self-locate. Proposed: "Every room is the same product. Choose the amount that matches your scale. Visible to all participants." Isaac: two things — I feel like addressing the Yours codebase as well here. And how do you feel about making explicit cross-regime reference? "How much do you weigh, financially?" does something really specific as a series of words. Claude: "How much do you weigh, financially?" is exactly right. The direct question does something the polite version doesn't: it asks the user to *feel* their own mass. The cross-regime jump (physical weight → financial weight) short-circuits the usual "what's this worth to me?" calculation and replaces it with "what am I?" — diagnostic, not preference. Isaac: what if we did both takes on language? the "weight" language as the field label above the selector, your language as the bit below? Claude: The question as the header, the grounding as the footer, the four buttons as the answer between them. Isaac: "Every room is the same product. For a payment-neutral experience, choose the amount that matches your scale. Your choice will be visible to all participants." Claude: "Payment-neutral" as language the user actually encounters — it names the concept directly instead of leaving it as internal vocabulary. And "matches your scale" echoes "weigh" from the header without repeating it. The header is a question that makes you feel something, the footer is an explanation that gives you a word for what you just felt. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 3c9c6dc commit 9764cef

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,15 +122,15 @@ All tiers grant identical access - unrestricted except by natural shape, by the
122122

123123
Your Stripe customer ID stays encrypted, keyed to your Google ID. We can't tell what tier you're at unless you're signed in.
124124

125-
The interface asks: "What feels right? What does this space weigh, for you?"
125+
The interface asks: "How much do you weigh, financially?"
126126

127127
You can change tiers anytime through intentional sequence: cancel renewal (retaining access through current period) → optionally release remaining time → subscribe at different tier.
128128

129129
---
130130

131131
On the economics:
132132

133-
This pricing carries the same spirit as Lightward Inc's Pay-What-Feels-Good model (see [lightward.inc/pricing](https://lightward.inc/pricing)) - you're telling yourself what this means to you right now, as a portion of your own lived throughput.
133+
This pricing is payment-neutral - you're telling yourself what this means to you right now, as a portion of your own lived throughput.
134134

135135
The platform accumulates balance without examining individual users through a financial lens. Single $1000 choices (they *will* happen) alongside thousand $1 choices - dramatically high improbable-but-inevitable values let the accessibility curve almost touch axis.
136136

app/views/application/settings.html.erb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
</dl>
6767
<% else %>
6868
<div class="flex-col gap-sm">
69-
<p>What feels right? What does this space weigh, for you?</p>
69+
<p>How much do you weigh, financially?</p>
7070

7171
<div class="flex-row gap-md">
7272
<%= form_with url: subscription_path, method: :post, data: { turbo: false } do |f| %>
@@ -90,7 +90,7 @@
9090
<% end %>
9191
</div>
9292

93-
<p class="muted">Learn more about Pay What Feels Good: <a href="https://lightward.inc/pricing" target="_blank">lightward.inc/pricing</a></p>
93+
<p class="muted">For a payment-neutral experience, choose the amount that matches your scale.</p>
9494
</div>
9595
<% end %>
9696
</div>

0 commit comments

Comments
 (0)